openCV 图像清晰度检测
圖像清晰度評價算法有很多種,在空域中,主要思路是考察圖像的領(lǐng)域?qū)Ρ榷龋聪噜徬袼亻g的灰度特征的梯度差;在頻域中,主要思路是考察圖像的頻率分量,對焦清晰的圖像高頻分量較多,對焦模糊的圖像低頻分量較多。
這里實現(xiàn)3種清晰度評價方法,分別是Tenengrad梯度方法、Laplacian梯度方法和方差方法。
1.Tenengrad梯度方法
Tenengrad梯度方法利用Sobel算子分別計算水平和垂直方向的梯度,同一場景下梯度值越高,圖像越清晰。以下是具體實現(xiàn)。
Mat img;
Mat imgROI;
Mat imgGray;
Mat imageSobel;
//添加圖片
img = Mat(m_frameInfo.uHeight/4, m_frameInfo.uWidth/4,CV_8UC3, pRGB).clone();
//設(shè)置ROI尺寸
imgROI.create(img.rows, img.cols, CV_8UC3); //生成ROI圖 img(Rect(width, height, 150, 150)).copyTo(imgROI); //轉(zhuǎn)灰度圖 cvtColor(imgROI, imgGray, CV_BGR2GRAY); //Sobel算子計算梯度值 Sobel(imgGray, imageSobel, CV_16U, 1, 1); //傳值 meanValue = mean(imageSobel)[0];
//返回值
return meanValue;
這里衡量的指標是經(jīng)過Sobel算子處理后的圖像的平均灰度值,值越大,代表圖像越清晰。
2.Laplacian梯度方法
Laplacian梯度是另一種求圖像梯度的方法,在上例的OpenCV代碼中直接替換Sobel算子即可。
Mat img;
Mat imgROI;
Mat imgGray;
Mat imageSobel;
//添加圖片
img = Mat(m_frameInfo.uHeight/4, m_frameInfo.uWidth/4,CV_8UC3, pRGB).clone();
//設(shè)置ROI尺寸
imgROI.create(img.rows, img.cols, CV_8UC3);
//生成ROI圖
img(Rect(width, height, 150, 150)).copyTo(imgROI);
//轉(zhuǎn)灰度圖
cvtColor(imgROI, imgGray, CV_BGR2GRAY);
//Laplacian算子計算梯度值,就換了算子而已
Laplacian(imageGrey, imageSobel, CV_16U);
//傳值
meanValue = mean(imageSobel)[0];
//返回值
return meanValue;
測試結(jié)果都是數(shù)據(jù)越大,圖像越清晰的,這里不作展示了。
3.方差方法
方差是概率論中用來考察一組離散數(shù)據(jù)和其期望(即數(shù)據(jù)的均值)之間的離散(偏離)成都的度量方法。方差較大,表示這一組數(shù)據(jù)之間的偏差就較大,組內(nèi)的數(shù)據(jù)有的較大,有的較小,分布不均衡;方差較小,表示這一組數(shù)據(jù)之間的偏差較小,組內(nèi)的數(shù)據(jù)之間分布平均,大小相近。對焦清晰的圖像相比對焦模糊的圖像,它的數(shù)據(jù)之間的灰度差異應(yīng)該更大,即它的方差應(yīng)該較大,可以通過圖像灰度數(shù)據(jù)的方差來衡量圖像的清晰度,方差越大,表示清晰度越好。
Mat img;
Mat imgROI;
Mat imgGray;
Mat imageSobel;
Mat meanValueImage;
//添加圖片
img = Mat(m_frameInfo.uHeight/4, m_frameInfo.uWidth/4,CV_8UC3, pRGB).clone();
//設(shè)置ROI尺寸
imgROI.create(img.rows, img.cols, CV_8UC3);
//生成ROI圖
img(Rect(width, height, 150, 150)).copyTo(imgROI);
//轉(zhuǎn)灰度圖
cvtColor(imgROI, imgGray, CV_BGR2GRAY);
//求灰度圖像的標準差
meanStdDev(imageGrey,meanValueImage,imageSobel);
//傳值
meanValue = mean(imageSobel)[0];
//返回值
return meanValue;
測試結(jié)果都是數(shù)據(jù)越大,圖像越清晰的,這里不作展示了。
總結(jié)
以上是生活随笔為你收集整理的openCV 图像清晰度检测的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 生鲜电商:一半海水,一半火焰
- 下一篇: 企业建站在哪些方面细节可以决定成败