圖像清晰度是衡量圖像質(zhì)量的一個重要指標(biāo),對于相機(jī)來說,其一般工作在無參考圖像的模式下,所以在拍照時需要進(jìn)行對焦的控制。對焦不準(zhǔn)確,圖像就會變得比較模糊不清晰。相機(jī)對焦時通過一些清晰度評判指標(biāo),控制鏡頭與CCD的距離,使圖像成像清晰。一般對焦時有一個調(diào)整的過程,圖像從模糊到清晰,再到模糊,確定清晰度峰值,再最終到達(dá)最清晰的位置。
常見的圖像清晰度評價一般都是基于梯度的方法,本文將介紹五種簡單的評價指標(biāo),分別是Brenner梯度法、Tenegrad梯度法、laplace梯度法、方差法、能量梯度法。
Brenner梯度法:
計算相差兩個單元的兩個像素點(diǎn)的灰度差:
FBrenner=∑M∑N(f(x+2,y)?f(x,y))2 式中(f(x+2,y)?f(x,y))2>Threshold算法準(zhǔn)確性取決于閾值的選取。
Tenegrad梯度法:
采用sobel算子分別提取水平和豎直方向的梯度: FTenegrad=∑M∑N|G(x,y)| G(x,y)>Threshold
G(x,y)=Gx(x,y)2+Gy(x,y)2
sobel算子模板如下:
Gx=14????1?2?1000121????I
Gy=14????101?202?101????I
Laplace梯度法:
laplace梯度函數(shù)與Tenegrad基本一致,只需要用Laplace算子替代sobel算子即可:L=16???1414204141????I
方差法:
聚焦清晰的圖像比模糊圖像有更大的灰度差異,可用方差函數(shù)作為評價:Fvariance=∑M∑N(f(x,y)?E2)
式中E為整幅圖像的平均灰度值,該函數(shù)對噪聲敏感。
能量梯度法:
能量梯度函數(shù)適合實(shí)時評價圖像清晰度:
FBrenner=∑M∑N((f(x+1,y)?f(x,y))2+(f(x,y+1)?f(x,y))2)
實(shí)例代碼:
//方差法 region_to_mean(ImageReduced, Image, ImageMean) convert_image_type(ImageMean, ImageMean, 'real') convert_image_type(Image, Image, 'real') sub_image(Image, ImageMean, ImageSub, 1, 0) mult_image(ImageSub, ImageSub, ImageResult, 1, 0) intensity(ImageResult, ImageResult, Value, Deviation) //拉普拉斯梯度函數(shù) laplace(Image, ImageLaplace4, 'signed', 3, 'n_4') laplace(Image, ImageLaplace8, 'signed', 3, 'n_8') add_image(ImageLaplace4, ImageLaplace4, ImageResult1, 1, 0) add_image(ImageLaplace4, ImageResult1, ImageResult1, 1, 0) add_image(ImageLaplace8, ImageResult1, ImageResult1, 1, 0) mult_image(ImageResult1, ImageResult1, ImageResult, 1, 0) intensity(ImageResult, ImageResult, Value, Deviation) //能量梯度函數(shù) crop_part(Image, ImagePart00, 0, 0, Width-1, Height-1) crop_part(Image, ImagePart01, 0, 1, Width-1, Height-1) crop_part(Image, ImagePart10, 1, 0, Width-1, Height-1) convert_image_type(ImagePart00, ImagePart00, 'real') convert_image_type(ImagePart10, ImagePart10, 'real') convert_image_type(ImagePart01, ImagePart01, 'real') sub_image(ImagePart10, ImagePart00, ImageSub1, 1, 0) mult_image(ImageSub1, ImageSub1, ImageResult1, 1, 0) sub_image(ImagePart01, ImagePart00, ImageSub2, 1, 0) mult_image(ImageSub2, ImageSub2, ImageResult2, 1, 0) add_image(ImageResult1, ImageResult2, ImageResult, 1, 0) intensity(ImageResult, ImageResult, Value, Deviation) //Brenner梯度法 crop_part(Image, ImagePart00, 0, 0, Width, Height-2) convert_image_type(ImagePart00, ImagePart00, 'real') crop_part(Image, ImagePart20, 2, 0, Width, Height-2) convert_image_type(ImagePart20, ImagePart20, 'real') sub_image(ImagePart20, ImagePart00, ImageSub, 1, 0) mult_image(ImageSub, ImageSub, ImageResult, 1, 0) intensity(ImageResult, ImageResult, Value, Deviation) //Tenegrad梯度法 sobel_amp(Image, EdgeAmplitude, 'sum_sqrt', 3) min_max_gray(EdgeAmplitude, EdgeAmplitude, 0, Min, Max, Range) threshold(EdgeAmplitude, Region1, 20, 255) region_to_bin(Region1, BinImage, 1, 0, Width, Height) mult_image(EdgeAmplitude, BinImage, ImageResult4, 1, 0) mult_image(ImageResult4, ImageResult4, ImageResult, 1, 0) intensity(ImageResult, ImageResult, Value, Deviation)
結(jié)果分析:
處理圖像為一組對焦從模糊到清晰再到模糊的標(biāo)定板圖像:
中間為最清晰的圖像。
采用五種評價函數(shù),對一百多幅圖像進(jìn)行計算,并將結(jié)果進(jìn)行歸一化,得到如圖所示結(jié)果:
一個好的評價函數(shù)需要具有單峰性,無偏性,靈敏性,在本實(shí)例中,采用Laplace、能量梯度和Brenner梯度法較好,而方差法效果較差,Tenegrad梯度法反向了。
-
相機(jī)
+關(guān)注
關(guān)注
4文章
1336瀏覽量
53436 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4277瀏覽量
62323 -
圖像清晰度
+關(guān)注
關(guān)注
0文章
3瀏覽量
5267
原文標(biāo)題:圖像清晰度評價
文章出處:【微信號:vision263com,微信公眾號:新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論