2016學(xué)年考試數(shù)字圖像處理_第1頁
2016學(xué)年考試數(shù)字圖像處理_第2頁
2016學(xué)年考試數(shù)字圖像處理_第3頁
2016學(xué)年考試數(shù)字圖像處理_第4頁
2016學(xué)年考試數(shù)字圖像處理_第5頁
已閱讀5頁,還剩45頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、數(shù)字圖像處理作業(yè)學(xué)院:計算機與控制工程班級:Y150701學(xué)號:S1507074姓名:指導(dǎo)老師:泉一、頻域濾波降噪1.二維#includec低通濾波器.h#includecv.h#includehighgui.hdouble D0=30;void ILPF(CvMat* src, constdouble D0)i, j;se = -1; double tempD;long width, height; width = src-width;height = src-height;long x, y;x = width / 2; y = height / 2;CvMat* H_mat;H_mat

2、= cvCreateMat(src-height,src-width, CV_64FC2); for(i = 0; i height; i+)for(j = 0; j y & j x)se = 3;elseif(i y)se = 1;elseif(j x)se = 2;elsese = 0;switch(se)case 0:tempD = (double) case 1:tempD = (double) sqrt(tempD);break;case 2:tempD = (double) sqrt(tempD);break;case 3:tempD = (double) j);tempD = s

3、qrt(tempD);break;default:break;(i * i + j * j);tempD = sqrt(tempD);break;(height - i) * (height - i) + j * j);tempD =(i * i + (width - j) * (width - j);tempD =(height - i) * (height - i) + (width - j) * (width -tempD = exp(-0.5 *(tempD / D0, 2);(double*)(H_mat-data.ptr + H_mat-step * i)j * 2 = tempD

4、;(double*)(H_mat-data.ptr + H_mat-step * i)j * 2 + 1 = 0.0;cvMulSpectrums(src, H_mat, src, CV_DXT_ROWS); cvReleaseMat(&H_mat);main(argc, char * argv)constchar* filename = argc =2 ? argv1 : D:/qi.jpg;IplImage * im;IplImage * realInput; IplImage * imaginaryInput; IplImage * complexInput;dft_M, dft_N;C

5、vMat* dft_A, tmp, *dft_B; IplImage * image_Re; IplImage * image_Im;double m, M;im = cvLoadImage( filename, CV_LOAD_IMAGE_GRAYSCALE ); if( !im )return -1;realInput = cvCreateImage( cvGetSize(im), IPL_DEPTH_64F, 1);imaginaryInput = cvCreateImage( cvGetSize(im), IPL_DEPTH_64F, 1); complexInput = cvCrea

6、teImage( cvGetSize(im), IPL_DEPTH_64F, 2);cvScale(im, realInput, 1.0, 0.0); cvZero(imaginaryInput);cvMerge(realInput, imaginaryInput, NULL, NULL, complexInput);dft_M = cvGetOptimalDFTSize( im-height - 1 ); dft_N = cvGetOptimalDFTSize( im-width - 1 ); dft_B = cvCreateMat( dft_M, dft_N, CV_64FC2 ); df

7、t_A = cvCreateMat( dft_M, dft_N, CV_64FC2 ); cvZero(dft_A);cvZero(dft_B);image_Re = cvCreateImage( cvSize(dft_N, dft_M), IPL_DEPTH_64F, 1);image_Im = cvCreateImage( cvSize(dft_N, dft_M), IPL_DEPTH_64F, 1);cvGetSubRect( dft_A,&tmp, cvRect(0,0, im-width, im-height); cvCopy( complexInput, &tmp, NULL );

8、cvDFT( dft_A, dft_A, CV_DXT_FORWARD, complexInput-height ); ILPF(dft_A, D0);cvDFT( dft_A, dft_A, CV_DXT_INVERSE , complexInput-height ); cvNamedWindow(win);cvNamedWindow(magnitude);cvShowImage(win, im);cvSplit( dft_A, image_Re, image_Im, 0, 0 );cvMaxLoc(image_Re, &m, &M, NULL, NULL, NULL);cvScale(im

9、age_Re, image_Re, 1.0/(M-m), 1.0*(-m)/(M-m); cvShowImage(magnitude, image_Re); cvNamedWindow(image_im); cvShowImage(image_im,image_Im);cvWaitKey(-1);return 0;2.布特#includec低通濾波器.h#includecv.h#includehighgui.hdouble D0=30;void ILPF(CvMat* src, constdouble D0)i, j;se = -1; double tempD;long width, heig

10、ht;width = src-width; height = src-height;long x, y;x = width / 2; y = height / 2;CvMat* H_mat;H_mat = cvCreateMat(src-height,src-width, CV_64FC2); for(i = 0; i height; i+)for(j = 0; j y & j x)se = 3;elseif(i y)se = 1;elseif(j x)se = 2;elsese = 0;switch(se)case 0:tempD = (double) case 1:tempD = (dou

11、ble) sqrt(tempD);break;case 2:tempD = (double) sqrt(tempD);break;case 3:tempD = (double) j);tempD = sqrt(tempD);break;default:break;(i * i + j * j);tempD = sqrt(tempD);break;(height - i) * (height - i) + j * j);tempD =(i * i + (width - j) * (width - j);tempD =(height - i) * (height - i) + (width - j

12、) * (width -tempD = 1 / (1 +(tempD / D0, 2 * 2);(double*)(H_mat-data.ptr + H_mat-step * i)j * 2 = tempD;(double*)(H_mat-data.ptr + H_mat-step * i)j * 2 + 1 = 0.0;cvMulSpectrums(src, H_mat, src, CV_DXT_ROWS);cvReleaseMat(&H_mat);main(argc, char * argv)constchar* filename = argc =2 ? IplImage * im;Ipl

13、Image * realInput; IplImage * imaginaryInput; IplImage * complexInput;dft_M, dft_N;argv1 : D:/qi.jpg;CvMat* dft_A, tmp, *dft_B; IplImage * image_Re; IplImage * image_Im;double m, M;im = cvLoadImage( filename, CV_LOAD_IMAGE_GRAYSCALE ); if( !im )return -1;realInput = cvCreateImage( cvGetSize(im), IPL

14、_DEPTH_64F, 1); imaginaryInput = cvCreateImage( cvGetSize(im), IPL_DEPTH_64F, 1);complexInput = cvCreateImage( cvGetSize(im), IPL_DEPTH_64F, 2);cvScale(im, realInput, 1.0, 0.0); cvZero(imaginaryInput);cvMerge(realInput, imaginaryInput, NULL, NULL, complexInput);dft_M = cvGetOptimalDFTSize( im-height

15、 - 1 ); dft_N = cvGetOptimalDFTSize( im-width - 1 ); dft_B = cvCreateMat( dft_M, dft_N, CV_64FC2 ); dft_A = cvCreateMat( dft_M, dft_N, CV_64FC2 ); cvZero(dft_A);cvZero(dft_B);image_Re = cvCreateImage( cvSize(dft_N, dft_M), IPL_DEPTH_64F, 1);image_Im = cvCreateImage( cvSize(dft_N, dft_M), IPL_DEPTH_6

16、4F, 1);cvGetSubRect( dft_A,&tmp, cvRect(0,0, im-width, im-height);cvCopy( complexInput, &tmp, NULL );cvDFT( dft_A, dft_A, CV_DXT_FORWARD, complexInput-height );ILPF(dft_A, D0);cvDFT( dft_A, dft_A, CV_DXT_INVERSE , complexInput-height );cvNamedWindow(win);cvNamedWindow(magnitude); cvShowImage(win, im

17、);cvSplit( dft_A, image_Re, image_Im, 0, 0 );cvMaxLoc(image_Re, &m, &M, NULL, NULL, NULL);cvScale(image_Re, image_Re, 1.0/(M-m), 1.0*(-m)/(M-m);cvShowImage(magnitude, image_Re);cvNamedWindow(image_im);cvShowImage(image_im,image_Im);cvWaitKey(-1);return 0;3.二維理想低通濾波器#includec#includecv.h.h#includehig

18、hgui.hdouble D0=30;void ILPF(CvMat* src, constdouble D0)i, j;se = -1; double tempD;long width, height; width = src-width;height = src-height;long x, y;x = width / 2; y = height / 2;CvMat* H_mat;H_mat = cvCreateMat(src-height,src-width, CV_64FC2); for(i = 0; i height; i+)for(j = 0; j y & j x)se = 3;e

19、lseif(i y)se = 1;elseif(j x)se = 2;elsese = 0;switch(se)case 0:tempD = (double) case 1:tempD = (double) sqrt(tempD);break;case 2:tempD = (double) sqrt(tempD);break;case 3:tempD = (double) j);tempD = sqrt(tempD);break;default:break;(i * i + j * j);tempD = sqrt(tempD);break;(height - i) * (height - i)

20、 + j * j);tempD =(i * i + (width - j) * (width - j);tempD =(height - i) * (height - i) + (width - j) * (width -if(tempD data.ptr + H_mat-step * i)j *2 = 1.0;else(double*)(H_mat-data.ptr + H_mat-step * i)j*2 = 0.0;cvMulSpectrums(src, H_mat, src, CV_DXT_ROWS); cvReleaseMat(&H_mat);main(argc, char * ar

21、gv)constchar* filename = argc =2 ? argv1 : D:/qi.jpg;IplImage * im;IplImage * realInput; IplImage * imaginaryInput; IplImage * complexInput;dft_M, dft_N;CvMat* dft_A, tmp, *dft_B; IplImage * image_Re; IplImage * image_Im; double m, M;im = cvLoadImage( filename, CV_LOAD_IMAGE_GRAYSCALE ); if( !im )re

22、turn -1;realInput = cvCreateImage( cvGetSize(im), IPL_DEPTH_64F, 1);imaginaryInput = cvCreateImage( cvGetSize(im), IPL_DEPTH_64F, 1); complexInput = cvCreateImage( cvGetSize(im), IPL_DEPTH_64F, 2);cvScale(im, realInput, 1.0, 0.0); cvZero(imaginaryInput);cvMerge(realInput, imaginaryInput, NULL, NULL,

23、 complexInput);dft_M = cvGetOptimalDFTSize( im-height - 1 ); dft_N = cvGetOptimalDFTSize( im-width - 1 ); dft_B = cvCreateMat( dft_M, dft_N, CV_64FC2 ); dft_A = cvCreateMat( dft_M, dft_N, CV_64FC2 ); cvZero(dft_A);cvZero(dft_B);image_Re = cvCreateImage( cvSize(dft_N, dft_M), IPL_DEPTH_64F, 1);image_

24、Im = cvCreateImage( cvSize(dft_N, dft_M), IPL_DEPTH_64F, 1);cvGetSubRect( dft_A,&tmp, cvRect(0,0, im-width, im-height);cvCopy( complexInput, &tmp, NULL );cvDFT( dft_A, dft_A, CV_DXT_FORWARD, complexInput-height );ILPF(dft_A, D0);cvDFT( dft_A, dft_A, CV_DXT_INVERSE , complexInput-height );cvNamedWind

25、ow(win);cvNamedWindow(magnitude); cvShowImage(win, im);cvSplit( dft_A, image_Re, image_Im, 0, 0 );cvMaxLoc(image_Re, &m, &M, NULL, NULL, NULL);cvScale(image_Re, image_Re, 1.0/(M-m), 1.0*(-m)/(M-m);cvShowImage(magnitude, image_Re);cvNamedWindow(image_im);cvShowImage(image_im,image_Im);cvWaitKey(-1);r

26、eturn 0;頻域邊緣增強1.布特#includec高通濾波器.h#includecv.h#includehighgui.hdouble D0=80;void ILPF(CvMat* src, constdouble D0)i, j;se = -1; double tempD;long width, height; width = src-width;height = src-height;long x, y;x = width / 2; y = height / 2;CvMat* H_mat;H_mat = for(i =for(j =cvCreateMat(src-height,src-

27、width, CV_64FC2);0; i height; i+)0; j y & j x)se =3;elseif(i y)se =1;elseif(j x)se =2;elsese =0;switch(scase 0:e)tempD = case 1:tempD =(double)(i * i + j * j);tempD = sqrt(tempD);break;(double)(height - i) * (height - i) + j * j);tempD = sqrt(tempD);break;case 2:tempD = (double) (i * i + (width - j)

28、 * (width - j);tempD = sqrt(tempD);break; case 3:tempD = (double) (height - i) * (height - i) + (width - j) * (width - j);tempD = sqrt(tempD);break;default: break;tempD = 1 / (1 +(D0 / tempD, 2 * 2);(double*)(H_mat-data.ptr + H_mat-step * i)j * 2 = tempD;(double*)(H_mat-data.ptr + H_mat-step * i)j *

29、 2 + 1 = 0.0;cvMulSpectrums(src, H_mat, src, CV_DXT_ROWS);cvReleaseMat(&H_mat);main(argc, char * argv)constchar* filename = argc =2 ? argv1 : D:qi.jpg; IplImage * im;IplImage * realInput; IplImage * imaginaryInput; IplImage * complexInput;dft_M, dft_N;CvMat* dft_A, tmp, *dft_B; IplImage * image_Re;

30、IplImage * image_Im;double m, M;im = cvLoadImage( filename, CV_LOAD_IMAGE_GRAYSCALE ); if( !im )return -1;realInput = cvCreateImage( cvGetSize(im), IPL_DEPTH_64F, 1);imaginaryInput = cvCreateImage( cvGetSize(im), IPL_DEPTH_64F, 1); complexInput = cvCreateImage( cvGetSize(im), IPL_DEPTH_64F, 2);cvSca

31、le(im, realInput, 1.0, 0.0);cvZero(imaginaryInput);cvMerge(realInput, imaginaryInput, NULL, NULL, complexInput);dft_M = cvGetOptimalDFTSize( im-height - 1 ); dft_N = cvGetOptimalDFTSize( im-width - 1 ); dft_B = cvCreateMat( dft_M, dft_N, CV_64FC2 ); dft_A = cvCreateMat( dft_M, dft_N, CV_64FC2 ); cvZ

32、ero(dft_A);cvZero(dft_B);image_Re = cvCreateImage( cvSize(dft_N, dft_M), IPL_DEPTH_64F, 1);image_Im = cvCreateImage( cvSize(dft_N, dft_M), IPL_DEPTH_64F, 1);cvGetSubRect( dft_A,&tmp, cvRect(0,0, im-width, im-height);cvCopy( complexInput, &tmp, NULL );cvDFT( dft_A, dft_A, CV_DXT_FORWARD, complexInput

33、-height ); ILPF(dft_A, D0);cvDFT( dft_A, dft_A, CV_DXT_INVERSE , complexInput-height ); cvNamedWindow(win, 0);cvNamedWindow(magnitude, 0);cvShowImage(win, im);cvSplit( dft_A, image_Re, image_Im, 0, 0 );cvMaxLoc(image_Re, &m, &M, NULL, NULL, NULL);cvScale(image_Re, image_Re, 1.0/(M-m), 1.0*(-m)/(M-m)

34、; cvShowImage(magnitude, image_Re);cvWaitKey(-1); return 0;2.二維#includec高通濾波器.h#includecv.h#includehighgui.hdouble D0=80;void ILPF(CvMat* src, constdouble D0)i, j;se = -1; double tempD;long width, height; width = src-width;height = src-height;long x, y;x = width / 2; y = height / 2;CvMat* H_mat;H_ma

35、t = for(i =for(j =cvCreateMat(src-height,src-width, CV_64FC2);0; i height; i+)0; j y & j x)se =3;elseif(i y)se =1;elseif(j x)se =2;elsese =0;switch(se)case 0:tempD = (double) case 1:tempD = (double) case 2:tempD = (double) case 3:tempD = (double) sqrt(tempD);break; default:break;(i * i + j * j);temp

36、D = sqrt(tempD);break;(height - i) * (height - i) + j * j);tempD = sqrt(tempD);break;(i * i + (width - j) * (width - j);tempD = sqrt(tempD);break;(height - i) * (height - i) + (width - j) * (width - j);tempD =tempD = 1 - exp(-0.5 *(tempD / D0, 2);(double*)(H_mat-data.ptr + H_mat-step * i)j * 2 = tem

37、pD;(double*)(H_mat-data.ptr + H_mat-step * i)j * 2 + 1 = 0.0;cvMulSpectrums(src, H_mat, src, CV_DXT_ROWS);cvReleaseMat(&H_mat);main(argc, char * argv)constchar* filename = argc =2 ? argv1 : D:/qi.jpg; IplImage * im;IplImage * realInput; IplImage * imaginaryInput; IplImage * complexInput;dft_M, dft_N

38、;CvMat* dft_A, tmp, *dft_B; IplImage * image_Re; IplImage * image_Im; double m, M;im = cvLoadImage( filename, CV_LOAD_IMAGE_GRAYSCALE ); if( !im )return -1;realInput = cvCreateImage( cvGetSize(im), IPL_DEPTH_64F, 1);imaginaryInput = cvCreateImage( cvGetSize(im), IPL_DEPTH_64F, 1);complexInput = cvCr

39、eateImage( cvGetSize(im), IPL_DEPTH_64F, 2);cvScale(im, realInput, 1.0, 0.0); cvZero(imaginaryInput);cvMerge(realInput, imaginaryInput, NULL, NULL, complexInput);dft_M = cvGetOptimalDFTSize( im-height - 1 ); dft_N = cvGetOptimalDFTSize( im-width - 1 ); dft_B = cvCreateMat( dft_M, dft_N, CV_64FC2 );

40、dft_A = cvCreateMat( dft_M, dft_N, CV_64FC2 ); cvZero(dft_A);cvZero(dft_B);image_Re = cvCreateImage( cvSize(dft_N, dft_M), IPL_DEPTH_64F, 1);image_Im = cvCreateImage( cvSize(dft_N, dft_M), IPL_DEPTH_64F, 1);cvGetSubRect( dft_A,&tmp, cvRect(0,0, im-width, im-height);cvCopy( complexInput, &tmp, NULL )

41、;cvDFT( dft_A, dft_A, CV_DXT_FORWARD, complexInput-height );ILPF(dft_A, D0);cvDFT( dft_A, dft_A, CV_DXT_INVERSE , complexInput-height );cvNamedWindow(win, 0);cvNamedWindow(magnitude, 0); cvShowImage(win, im);cvSplit( dft_A, image_Re, image_Im, 0, 0 );cvMaxLoc(image_Re, &m, &M, NULL, NULL, NULL);cvSc

42、ale(image_Re, image_Re, 1.0/(M-m), 1.0*(-m)/(M-m); cvShowImage(magnitude, image_Re);cvWaitKey(-1); return 0;3.理想#includec高通濾波器.h#includecv.h#includehighgui.hdouble D0=80;void ILPF(CvMat* src, constdouble D0)i, j;se = -1; double tempD;long width, height;width = src-width; height = src-height;long x,

43、y;x = width / 2; y = height / 2;CvMat* H_mat;H_mat = cvCreateMat(src-height,src-width, CV_64FC2); for(i = 0; i height; i+)for(j = 0; j y & j x)se = 3;elseif(i y)se = 1;elseif(j x)se = 2;elsese = 0;switch(scase 0:e)tempD = (double) case 1:tempD = (double) case 2:tempD = (double) case 3:tempD = (doubl

44、e) sqrt(tempD);break; default:break;(i * i + j * j);tempD = sqrt(tempD);break;(height - i) * (height - i) + j * j);tempD = sqrt(tempD);break;(i * i + (width - j) * (width - j);tempD = sqrt(tempD);break;(height - i) * (height - i) + (width - j) * (width - j);tempD =if(tempD data.ptr + H_mat-step * i)

45、j * 2 = 0.0; (double*)(H_mat-data.ptr + H_mat-step * i)j * 2 + 1 = 0.0;else(double*)(H_mat-data.ptr + H_mat-step * i)j * 2 = 1.0; (double*)(H_mat-data.ptr + H_mat-step * i)j * 2 + 1 = 0.0;cvMulSpectrums(src, H_mat, src, CV_DXT_ROWS); cvReleaseMat(&H_mat);main(argc, char * argv)constchar* filename =

46、argc =2 ? argv1 : D:qi.jpg; IplImage * im;IplImage * realInput; IplImage * imaginaryInput; IplImage * complexInput;dft_M, dft_N;CvMat* dft_A, tmp, *dft_B; IplImage * image_Re; IplImage * image_Im; double m, M;im = cvLoadImage( filename, CV_LOAD_IMAGE_GRAYSCALE ); if( !im )return -1;realInput = cvCre

47、ateImage( cvGetSize(im), IPL_DEPTH_64F, 1); imaginaryInput = cvCreateImage( cvGetSize(im), IPL_DEPTH_64F, 1);complexInput = cvCreateImage( cvGetSize(im), IPL_DEPTH_64F, 2);cvScale(im, realInput, 1.0, 0.0); cvZero(imaginaryInput);cvMerge(realInput, imaginaryInput, NULL, NULL, complexInput); dft_M = c

48、vGetOptimalDFTSize( im-height - 1 );dft_N = cvGetOptimalDFTSize( im-width - 1 ); dft_B = cvCreateMat( dft_M, dft_N, CV_64FC2 ); dft_A = cvCreateMat( dft_M, dft_N, CV_64FC2 ); cvZero(dft_A);cvZero(dft_B);image_Re = cvCreateImage( cvSize(dft_N, dft_M), IPL_DEPTH_64F, 1);image_Im = cvCreateImage( cvSiz

49、e(dft_N, dft_M), IPL_DEPTH_64F, 1);cvGetSubRect( dft_A,&tmp, cvRect(0,0, im-width, im-height);cvCopy( complexInput, &tmp, NULL );cvDFT( dft_A, dft_A, CV_DXT_FORWARD, complexInput-height );ILPF(dft_A, D0);cvDFT( dft_A, dft_A, CV_DXT_INVERSE , complexInput-height );cvNamedWindow(win, 0);cvNamedWindow(

50、magnitude, 0);cvShowImage(win, im);cvSplit( dft_A, image_Re, image_Im, 0, 0 );cvMaxLoc(image_Re, &m, &M, NULL, NULL, NULL);cvScale(image_Re, image_Re, 1.0/(M-m), 1.0*(-m)/(M-m);cvShowImage(magnitude, image_Re);cvWaitKey(-1); return 0;比較結(jié)論:由圖可知,理想低通濾波器有現(xiàn)象發(fā)生,平滑效果較為粗糙,布特濾波器幾乎沒有現(xiàn)象,圖像較理想濾波器而言平滑效果比較好,沒有現(xiàn)象

51、,其平滑效果是三者中最好的。二、圖像銳化1.Sobel 算子 #include #include #include #include #includeusingnamespace cv; main()Mat grad_x,grad_y; Mat abs_grad_x,abs_grad_y,dst;Mat src=imread(D:/qi.jpg); imshow(【原始圖】,src);Sobel(src,grad_x,CV_16S,1,0,3,1,1,BORDER_DEFAULT);convertScaleAbs(grad_x,abs_grad_x);imshow(【效果圖】X方向Sobel,

52、abs_grad_x); Sobel(src,grad_y,CV_16S,1,0,3,1,1,BORDER_DEFAULT); convertScaleAbs(grad_y,abs_grad_y);imshow(【效果圖】Y方向Sobel ,abs_grad_y); addWeighted(abs_grad_x,0.5,abs_grad_y,0.5,0,dst); imshow(【效果圖】整體方向Sobel ,dst); waitKey(0);return 0;2.Laplan 算子 #include #include #include#includevoid sharpenImage0(co

53、nst cv:Mat &image, cv:Mat &result)result.create(image.size(),image.type();for(j= 1; jimage.rows-1; +j)const uchar *previous = image.ptr(j-1);const uchar *current = image.ptr(j); const uchar *next = image.ptr(j+1);uchar *output = result.ptr(j);for(i= 1; iimage.cols-1; +i)*output+ =cv:saturate_cast(5*

54、currenti-previousi-nexti-currenti-1-currenti+1);result.row(0).setTo(cv:Scalar(0); result.row(result.rows-1).setTo(cv:Scalar(0); result.col(0).setTo(cv:Scalar(0); result.col(result.cols-1).setTo(cv:Scalar(0);voidsharpenImage1(const cv:Mat &image, cv:Mat &result)cv:Mat kernel(3,3,CV_32F,cv:Scalar(0);

55、kernel.at(1,1) = 5.0;kernel.at(0,1) = -1.0;kernel.at(1,0) = -1.0;kernel.at(1,2) = -1.0;kernel.at(2,1) = -1.0;result.create(image.size(),image.type();cv:filter2D(image,result,image.depth(),kernel);main(argc, char* argv)cv:Mat image = cv:imread(D:/qi.jpg);cv:Mat image_gray; image_gray.create(image.siz

56、e(),image.type();if(!image.data) return -1;if(image.channels() = 3)cv:cvtColor(image,image_gray,CV_RGB2GRAY);cv:Mat result;result.create(image_gray.size(),image_gray.type();double time_ = sic_cast(cv:getTickCount();sharpenImage0(image_gray,result);time_ =1000*(sic_cast(cv:getTickCount()-time_)/cv:ge

57、tTickFrequency();std:couttime = time_msstd:endl; cv:namedWindow(Image 1); cv:imshow(Image 1,result);cv:Mat result1;result1.create(image_gray.size(),image_gray.type();time_ = sic_cast(cv:getTickCount();sharpenImage1(image_gray,result1);time_ = 1000*sic_cast(cv:getTickCount()-time_)/cv:getTickFrequenc

58、y();std:couttime = time_msstd:endl; cv:namedWindow(Image 2); cv:imshow(Image 2,result1); cv:waitKey();return 0;比較結(jié)論:經(jīng)過算子的處理,圖像模糊近乎成虛像的形式,邊緣信息大量丟失;sobel 算子處理后也只是輪廓,邊緣稍微加寬。三、同態(tài)濾波器#includecv.h#includemath.h#includec.h#includehighgui.h#includeusingnamespatd;void CDM(M,N,CvMat *mat)width = mat-rows;heigh

59、t = mat-cols;if (M != width & N != height)coutERROR! THE SIZE DOES NOT MATCH WITH MATendl;return;if (cvGeemType(mat) CV_32F)coutERROR! THE TYPE DOES NOT MATCH WITH MATendl;return;CvMat *U,*V;U = cvCreateMat(M,N,CV_32FC1); V = cvCreateMat(M,N,CV_32FC1);for (for (u = 0; u M; +u)v =0 ;v cvRound(M/2)?u-

60、M:u);tm2 = (float)(v cvRound(N/2)?v-N:v);*( (float *)CV_MAT_ELEM_PTR(*U,u,v) ) = tm1;*( (float *)CV_MAT_ELEM_PTR(*V,u,v) ) = tm2;for (for (u = 0; u M; +u)v =0 ; v N; +v)float t1,t2;t1 = CV_MAT_ELEM(*U,float,u,v); t2 = CV_MAT_ELEM(*V,float,u,v);*( (float *)CV_MAT_ELEM_PTR(*mat,u,v) ) = sqrt(t1*t1 + t

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論