【16】图像清晰度识别
【1】思路图像清晰度评价算法有很多种,在空域中,主要思路是考察图像的领域对比度,即相邻像素间的灰度特征的梯度差;在频域中,主要思路是考察图像的频率分量,对焦清晰的图像高频分量较多,对焦模糊的图像低频分量较多。下面实现Tenengrad梯度方法、Laplacian梯度方法和方差方法。
【2】代码.h文件
#pragmaonce#include#includeusingnamespacestd;usingnamespacecv;doubleLaplaciaDefinition(MatimageSource){MatimageGrey;if(imageSource.channels()==3){cvtColor(imageSource,imageGrey,COLOR_RGB2GRAY);}else{imageGrey=imageSource;}MatimageSobel;Laplacian(imageGrey,imageSobel,CV_16U);//Sobel(imageGrey,imageSobel,CV_16U,1,1);//图像的平均灰度doublemeanValue=0.0;meanValue=mean(imageSobel)[0];returnmeanValue;}doubleMeanStdDefinition(MatimageSource){MatimageGrey;if(imageSource.channels()==3){cvtColor(imageSource,imageGrey,COLOR_RGB2GRAY);}else{imageGrey=imageSource;}MatmeanValueImage;MatmeanStdValueImage;//求灰度图像的标准差meanStdDev(imageGrey,meanValueImage,meanStdValueImage);doublemeanValue=0.0;meanValue=meanStdValueImage.at(0,0);returnmeanValue;}doubleTenegradDefinition(MatimageSource){MatimageGrey;if(imageSource.channels()==3){cvtColor(imageSource,imageGrey,COLOR_RGB2GRAY);}else{imageGrey=imageSource;}MatimageSobel;Sobel(imageGrey,imageSobel,CV_16U,1,1);//图像的平均灰度doublemeanValue=0.0;meanValue=mean(imageSobel)[0];returnmeanValue;}voidPrintResult(MatimageSource,doublemeanValue,conststringmethod){MatimageRGB;Matshowimage;cout