计算图像清晰度
1、方差
在相機(jī)拍照時(shí),通常會(huì)看到相機(jī)由模糊至清晰的自動(dòng)對(duì)焦過程,逐漸形成清晰度比較高的圖像。其實(shí)這是非常簡(jiǎn)單的處理,,并不需要非常特殊的算法,方法各式各樣好多種,而且效率極其高。
表示樣品離散程度的知識(shí):方差和標(biāo)準(zhǔn)差。僅僅利用本知識(shí)加以變化,就足夠了。
當(dāng)完全聚焦時(shí),圖像最清晰,圖像中的高頻分量也最多,突變像素與相鄰像素的差值也會(huì)變大,基于這個(gè)原理,對(duì)每一個(gè)像素水平右側(cè)鄰域的兩個(gè)灰度值相減再相乘,再逐個(gè)像素累加,計(jì)算相鄰兩個(gè)像素灰度差的平方,如下:
其中:f(x,y) 表示圖像f對(duì)應(yīng)像素點(diǎn)(x,y)的灰度值,D(f)為圖像清晰度。本方法效率非常高,1280*1024大小的圖片10張同時(shí)計(jì)算能在70毫秒以內(nèi)完成,而且結(jié)果精準(zhǔn)。
當(dāng)然不限于是上面這一種,比如對(duì)每一個(gè)像素右側(cè)和下側(cè)鄰域兩個(gè)灰度差相乘,再逐個(gè)像素累加,也可以,比如:
也可以方差定義里說的樣本點(diǎn)與平均值比較的方式,比如如下:
當(dāng)然按公式做的話,如果是針對(duì)灰度圖,背景全白而拍攝主體是黑,或背景全黑而拍攝主體全白,D(f)值結(jié)果大小會(huì)相反,所以此法還不如前面那兩種方法。再比如,用下和右相鄰點(diǎn)與自己差值平方累加。如下:
也是可以很好的放大差異,越清晰則結(jié)果值越大,越模糊則值越小。
說到這里,你會(huì)發(fā)現(xiàn)上面提到的,其實(shí)都是相鄰像素差用乘積放大從而鑒定出誰更清晰。
? ? ? 當(dāng)然你可以自己改進(jìn):比如用上下左右的4個(gè)點(diǎn)或者8個(gè)點(diǎn)也可以,比如用N個(gè)點(diǎn)以中心點(diǎn)差值相乘再求和,等于是以一個(gè)小塊(模板)的形式去比較計(jì)算。
? ? ? 但是執(zhí)行效率不如上面幾種,如果覺得上面算法效率還是不能滿足你的要求,也很簡(jiǎn)單,采用隔行掃描,或間隔多行的方式,瞬間效率提升幾倍。
2、通過拉普拉斯算子求梯度
拉普拉斯算子模塊是利用拉普拉斯算子求梯度的模塊,拉普拉斯算子是一種二階導(dǎo)數(shù)算子,對(duì)于一個(gè)連續(xù)函數(shù)f(x,y),它的位置(x,y)的拉普拉斯值定義為:
在數(shù)字圖像中,計(jì)算函數(shù)的拉普拉斯值也可以借助各種模板實(shí)現(xiàn),這里對(duì)模板的基本要求是對(duì)應(yīng)中心像素系數(shù)為正,面對(duì)應(yīng)中心像素鄰近像素的系數(shù)為負(fù),面它們的和等于零。選擇如下的拉普照拉斯算子模板,
| -1 | -1 | -1 |
| -1 | 8 | -1 |
| -1 | -1 | -1 |
則計(jì)算過程為:
E=8I(x,y)-I(x-1,y-1)-I(x-1,y)-I(x-1,y+1)-I(x,y-1)-I(x,y+1)-I(x+1,y-1)-I(x+1,y)-I(x+1,y+1);
對(duì)于一幅模糊的圖像,在每一像素附近的灰度值變化小,則E值小,對(duì)于清晰的圖像,圖像的輪廓鮮明,E值會(huì)大,最清晰則E值(即梯度值)最大。
拉普拉斯算子模塊內(nèi)的實(shí)現(xiàn)為使用fifo緩存出如圖3所示的一個(gè)3x3的矩陣,對(duì)整幀圖像求E的和,相當(dāng)于對(duì)整幀圖像做卷積再求和,得到圖像的梯度值,輸出給聚焦模塊進(jìn)行判斷。
圖3? fifo緩存出一個(gè)3x3的像素的矩陣
總結(jié)
- 上一篇: 外贸人如何把握客户跟进频率?
- 下一篇: 一句话木马 php asp,一句话木马源