Êý×ÖͼÏñ´¦Àí

Êý×ÖͼÏñ´¦ÀíÂÛÎÄ

ѧÉúÐÕÃû£º

ѧ ºÅ£º

ѧ Ôº£º ÐÅϢѧ²¿ ר Òµ£º ¼ÆËã»ú¼¼Êõ

2016Äê11ÔÂ

Ç°ÑÔ

±¾ÂÛÎĵıàдΧÈÆËĸöÏîÄ¿£ºÍ¼Ïñ¿ÕÓò/ʱÓò±ä»»¡¢Í¼ÏñÔöÇ¿¡¢È¾É«Ìå¼ÆÊýÓëÌáÈ¡MnistÁ´Âë×é³É¡£ÏîÄ¿µÄ±àд»ùÓÚWindows 7 ²Ù×÷ϵͳ£¬Ê¹ÓÃVS2013×÷Ϊ¿ª·¢»·¾³£¬ÒÔOpenCV×÷ΪÄÚ²¿ºËÐÄ´¦ÀíËã·¨¿â¡£ÏîÄ¿µÄ×îÖÕ×é³É½á¹¹Îª£º

ÔÚ´Ë£¬ÎÒÃDz»ÔÙ˵Ã÷OpenCVµÄÅäÖû·¾³µÄ´î½¨£¬¶øÊÇÖ±½ÓչʾÏîÄ¿µÄºËÐÄ´úÂëÒÔ¼°ËùʹÓõ½µÄ֪ʶ¡£

ÌâÄ¿Ò»

1) ½«¿íΪ2nµÄÕý·½ÐÎͼÏñ£¬ÓÃFFTËã·¨´Ó¿ÕÓò±ä»»µ½ÆµÓò£¬²¢ÓÃƵÓòͼÏñµÄÄ£À´½øÐÐÏÔ

ʾ¡£

2) ʹͼÏñÄÜÁ¿ÖÐÐÄ£¬¶ÔÓ¦µ½¼¸ºÎÖÐÐÄ£¬²¢ÓÃƵÓòͼÏñµÄÄ£À´½øÐÐÏÔʾ¡£ 3) ½«ÆµÓòͼÏó£¬Í¨¹ýFFTÄæ±ä»»µ½¿ÕÓò£¬²¢ÏÔʾ¡£ ½â¾ö·½°¸£º

ÎÒÃÇÔÚÒ»¸öÏîÄ¿ÖÐÍê³ÉÒÔÉÏÈý¸ö²½Öè¡£

#include #include #include usingnamespace cv; usingnamespace std; int main() {

//ÒÔ»Ò¶Èģʽ¶ÁȡԭʼͼÏñ²¢ÏÔʾ

Mat srcImage = imread(\,0); if(srcImage.empty()) {

cout <<\´ò¿ªÍ¼Ïñʧ°Ü£¡\<< endl; return-1; }

imshow(\ԭʼͼÏñ\, srcImage);

//½«ÊäÈëͼÏñÑÓÀ©µ½×î¼ÑµÄ³ß´ç£¬±ß½çÓÃ0²¹³ä

int m = getOptimalDFTSize(srcImage.rows); int n = getOptimalDFTSize(srcImage.cols); //½«Ìí¼ÓµÄÏñËسõʼ»¯Îª0. Mat padded;

copyMakeBorder(srcImage, padded,0, m - srcImage.rows,0, n - srcImage.cols, BORDER_CONSTANT, Scalar::all(0)); //Ϊ¸µÁ¢Ò¶±ä»»µÄ½á¹û(ʵ²¿ºÍÐ鲿)·ÖÅä´æ´¢¿Õ¼ä¡£

//½«planesÊý×é×éºÏºÏ²¢³ÉÒ»¸ö¶àͨµÀµÄÊý×écomplexI

Mat planes[]={ Mat_(padded), Mat::zeros(padded.size(),

CV_32F)};

Mat complexI;

merge(planes,2, complexI); //½øÐо͵ØÀëÉ¢¸µÀïÒ¶±ä»»

dft(complexI, complexI);

//½«¸´Êýת»»Îª·ùÖµ£¬¼´=> log(1 + sqrt(Re(DFT(I))^2 + Im(DFT(I))^2)) split(complexI, planes);// ½«¶àͨµÀÊý×écomplexI·ÖÀë³É¼¸¸öµ¥Í¨µÀÊý×飬

ÁªÏµ¿Í·þ£º779662525#qq.com(#Ì滻Ϊ@) ËÕICP±¸20003344ºÅ-4