三星S10e的超廣角和正常鏡頭切換的時候,咔咔聲很悅耳,不過這里也有疑問,關(guān)于自動對焦這個操作是不是有一些開源的東西?好像沒有,我 隨便搜索了倆篇論文看下。
首先是這個
一副圖像是否聚焦,反映在空域上是圖像的邊緣及細節(jié)是否清晰,而圖像的邊緣及細節(jié)。信息可以通過對圖像進行微分來獲取,因此,可以利用這些信息作為聚焦的判據(jù)。這種提取圖像邊緣信息的函數(shù)稱為聚焦評價函數(shù),圖像經(jīng)其處理后所得到的量值能夠反映圖像的清晰度。聚焦評價函數(shù)應(yīng)具有以下幾個特性性:無偏性,單峰性,高靈敏度,較高信噪比,計算量較小。這里選用絕對方差函數(shù):
全文就這個公式還算Soul
說了這么多,就這個函數(shù)重要:
聚焦評價函數(shù),對于自動聚焦的實現(xiàn),具有重要的意義。聚焦評價函數(shù)有很多,每種方法都有其優(yōu)點和缺點。原理很簡單,越是清晰的照片,每個像素與其周圍像素的差距越大,當聚焦不對時,會發(fā)現(xiàn),整個圖像糊成一團,即像素值都在某一小范圍內(nèi)。
int calculateGrayDifference(Mat image)//傳入單通道圖像
{
Mat temImage;
temImage = Mat::zeros(image.size(), CV_32FC1);
//long int result = 0;
for (int i = 1; i < image.rows; i++)
{
for (int j = 1; j < image.cols; j++)
{
int num = image.at
(i, j); int num1 = image.at
(i-1, j); int num2 = image.at
(i, j-1); int num3 = abs((num - num1)*(num - num2));
temImage.at<float>(i, j) = num3;
//result = result + num3;
}
}
Scalar total = sum(temImage);
return cvRound(total[0]);
//return result;
}
給出計算的code
下面論文還有點,不過關(guān)系不大:
這個函數(shù)怎么算?這里給出,圖像使用二維數(shù)組存放
算法流程圖
以及引入變步長這些東西
當相鄰圖像的聚焦量值對比小于一定域值時,目標景物及光學鏡頭的狀態(tài)相對穩(wěn)定,此時控制系統(tǒng)處于微動掃描狀態(tài),控制輸出仍有使調(diào)焦機構(gòu)向獲取更大聚焦量圖像方向運動的趨勢,但控制量微小。當相鄰圖像的聚焦量值對比大于一定域值,表明目標景物發(fā)生了變化,或光學鏡頭進行了變倍、轉(zhuǎn)向等操作,則控制系統(tǒng)進入大步長快速調(diào)焦過程。假定此時調(diào)焦機構(gòu)位于點 M 處,首先確定搜索方向,因點 N 的聚焦量值大于點 M 的聚焦量值,即確定向點 N 方向行進,直到越過最大值 P 到達 P 1 為止,即路徑為 M-N-P-P 1 ,將此
過程中最大聚焦量值 P′暫存,進入漸小步長聚焦過程。由 P1 開始,向山頂 P運動,直到 P 2 為止,將此次搜索中最大聚焦量值 P〞暫存。如此反復,每搜索一次,步距相應(yīng)減小,并將相鄰兩次搜索中所獲得的兩個最大聚焦量值進行對比,當對比值小于一定域值時,表示調(diào)焦機構(gòu)已經(jīng)位于很接近點 P 的位置,進入微動掃描狀態(tài)。
審核編輯 :李倩
-
算法
+關(guān)注
關(guān)注
23文章
4625瀏覽量
93143 -
圖像
+關(guān)注
關(guān)注
2文章
1088瀏覽量
40518
原文標題:相機自動對焦算法
文章出處:【微信號:TT1827652464,微信公眾號:云深之無跡】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論