三星S10e的超廣角和正常鏡頭切換的時候,咔咔聲很悅耳,不過這里也有疑問,關于自動對焦這個操作是不是有一些開源的東西?好像沒有,我 隨便搜索了倆篇論文看下。
首先是這個
一副圖像是否聚焦,反映在空域上是圖像的邊緣及細節是否清晰,而圖像的邊緣及細節。信息可以通過對圖像進行微分來獲取,因此,可以利用這些信息作為聚焦的判據。這種提取圖像邊緣信息的函數稱為聚焦評價函數,圖像經其處理后所得到的量值能夠反映圖像的清晰度。聚焦評價函數應具有以下幾個特性性:無偏性,單峰性,高靈敏度,較高信噪比,計算量較小。這里選用絕對方差函數:
全文就這個公式還算Soul
說了這么多,就這個函數重要:
聚焦評價函數,對于自動聚焦的實現,具有重要的意義。聚焦評價函數有很多,每種方法都有其優點和缺點。原理很簡單,越是清晰的照片,每個像素與其周圍像素的差距越大,當聚焦不對時,會發現,整個圖像糊成一團,即像素值都在某一小范圍內。
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
下面論文還有點,不過關系不大:
這個函數怎么算?這里給出,圖像使用二維數組存放
算法流程圖
以及引入變步長這些東西
當相鄰圖像的聚焦量值對比小于一定域值時,目標景物及光學鏡頭的狀態相對穩定,此時控制系統處于微動掃描狀態,控制輸出仍有使調焦機構向獲取更大聚焦量圖像方向運動的趨勢,但控制量微小。當相鄰圖像的聚焦量值對比大于一定域值,表明目標景物發生了變化,或光學鏡頭進行了變倍、轉向等操作,則控制系統進入大步長快速調焦過程。假定此時調焦機構位于點 M 處,首先確定搜索方向,因點 N 的聚焦量值大于點 M 的聚焦量值,即確定向點 N 方向行進,直到越過最大值 P 到達 P 1 為止,即路徑為 M-N-P-P 1 ,將此
過程中最大聚焦量值 P′暫存,進入漸小步長聚焦過程。由 P1 開始,向山頂 P運動,直到 P 2 為止,將此次搜索中最大聚焦量值 P〞暫存。如此反復,每搜索一次,步距相應減小,并將相鄰兩次搜索中所獲得的兩個最大聚焦量值進行對比,當對比值小于一定域值時,表示調焦機構已經位于很接近點 P 的位置,進入微動掃描狀態。
審核編輯 :李倩
-
算法
+關注
關注
23文章
4708瀏覽量
95228 -
圖像
+關注
關注
2文章
1094瀏覽量
41188
原文標題:相機自動對焦算法
文章出處:【微信號:TT1827652464,微信公眾號:云深之無跡】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
Debian和Ubuntu哪個好一些?
樹莓派在自動化控制項目中的一些潛在應用

評論