手機是如何實現自動對焦的?
手機是如何實現自動對焦的,手機是怎麼識別畫面已經清晰了的?
以下是科學長文,如果僅想了解自動聚焦原理的,第一二點夠了啦~
一、話不多說,我們首先來看看相機聚焦的原理是什麼?然後再讓它自動
這個圖我們都熟悉,中學時候的凸透鏡成像的原理
要保證xx』=ff『,這樣才能得到清晰的像,可以發現物距x跟像距x』具有共軛關係,當物距x變化時,要麼調節焦距f,要門調節像距x』,才能在相機上得到我們清晰的像
二、接著我們來了解下什麼是景深?通俗來講就是相機(底片)上,成清晰像的範圍
其實對於最簡單的照相機(一塊凸透鏡)來說,唯一的一個物距僅對應一個像距,所以景深為0,偏離一點點都會不清晰。但是為什麼我們的照相機拍出來的不光是一個面上是清晰的呢?因為我們的照相機跟人眼一樣,它的景深可以做到趨近無限遠(注意趨近)∞。兩者的應用情況不同,對於工業定位而言,精度要達到微米級別,所以景深要做到儘可能小;對於我們民用的照相機而言,重點是景色,全景,拍一個面肯定就不行了啊
下面三圖是智能手機拍的照片:第一幅是在一定距離,我點擊屏幕,讓它對焦「杭州」,接著向上平移,沒有再點擊屏幕使其對焦,發現杭州倆字變模糊了,這時候的情況是焦距、像距均無變化,僅物距變化,顯然就會造成模糊(但是不至於很模糊,還記的我們之前說的趨近於無限遠的景深嗎?如果無限遠了,就一樣清晰了,但是實際情況做不到,只能趨近),那我怎樣讓成像清晰呢?1、改變物距,所以圖3我把一支筆上移了一段舉例,可以看到筆身的字體還是蠻清晰的2、點擊屏幕,重新聚焦,這時候改變的就是焦距跟像距了
三、那相機怎樣像人一樣判斷,是否聚焦了呢?這裡就用到了圖像清晰度評價演算法,常用的有這麼幾種:
頻域分析法和統計學函數由於對抗雜訊能力弱,演算法複雜,應用較少,現有應用主要是上面的灰度梯度類演算法及其改進演算法
具體的學術演算法就不講了,巴拉巴拉…得出結論是有那麼幾種演算法,時間、準確性上都非常好
四、但是峰值位置怎麼來求呢?一種是遍曆法,就是每一點的圖片清晰度值都計算出來,最後找到最大值,但這種演算法未免太過浪費時間,效率低下,還有一種演算法是爬山演算法,基本原理是,先粗調,再精調,最終高效的找到圖像清晰度最大的點(峰值)。找到後驅動電機運轉一定角度,實現像距或者焦距的變化,步進到最佳成像位置
五、差不多就是這麼多,所以相機自動聚焦時,都會有個從模糊到清晰,到模糊,再到清晰的過程,這就是相機的自動調焦了
---------------------------------------
對之前的知識進行一定補充:介紹兩個不同的概念
對焦:對我們的手機來說,對焦僅僅是實現物距跟像距的變化,達到共軛關係,使得成像清晰,而這是通過手機裡面的音圈馬達實現的,驅動整個鏡頭組移動來實現。限於手機體積的原因,只能達到這樣的水平。
變焦:但是手機攝像頭其實是多個稜鏡片組成的,比如iPhone6 是由6片塑料稜鏡組成的鏡頭模組,限於手機體積,我們沒辦法改變稜鏡片之間的距離,所以我們改變不了手機的焦距。這也就是我們的手機只能做到數碼變焦(其實就是把你拍的照片單純放大而已,越大,成像會越不清晰),而光學變焦,目前來看,還沒有誰成功在手機上運用
不是特專業,科普形式介紹下對焦過程吧,我先匿了,你們輕拍
首先,並不是所有camera都需要對焦,有些攝像頭是廣角的,景深很深,就是說從很近到無窮遠的整個可視範圍成像都是清楚的,稱為hyper focal超焦距,通常手機的前置攝像頭就是這種。
其次,需要對焦的攝像頭又分為定焦和可變焦。變焦指改變鏡頭組中各鏡片的相對位置來改變鏡頭的焦距(整個鏡頭組的屈光度都改變了),使鏡頭能看到的景象範圍和距離都發生改變。對焦是指在焦距確定的情況下,調整鏡頭組和感光元件的距離,使其等於像距,就是讓成像平面和感光元件重合,這時圖像才最清晰。定焦鏡頭和變焦鏡頭都需要對焦。
對焦又分自動對焦和手動對焦。手動對焦好理解,通過機械(轉動對焦環)或電子方式(通過按扭或屏幕觸摸操作讓馬達驅動鏡片)手動調整鏡頭位置實現對焦。自動對焦只需發出對焦指令(半按快門或者點擊屏幕),攝像頭就會自主不斷移動鏡頭,並在覺得畫面清晰的時候停住,完成對焦。
下面再說自動對焦。
自動對焦基本原理是:對焦過程中圖像仍在一直不斷產生,把鏡頭在某個位置時的那幀圖像送到圖像處理器(ISP)處理,得出該圖像的統計信息,再把這信息送到對焦演算法庫(也許是在isp硬體上執行,也許是在驅動程序軟體執行),對焦演算法庫根據硬體規範和上述統計信息算出下一步鏡頭該往哪個方向移動多少距離,並驅動鏡頭到達那個位置;接著在此位置得到新圖像,又計算統計信息,計算再下一步的鏡頭位置…圖像清晰度漸漸變化,如此經過幾個循環收斂,圖像到一定程度,就認為對焦成功。
上述圖像統計信息必然是和對焦演算法一一對應的,用什麼樣的演算法就需要ISP計算相應的統計信息。
圍繞不同的對焦演算法,就形成了各種自動對焦方式,不同的對焦方式有不同的對焦速度和硬體需求及設計(主要針對攝像頭感測器)。
對焦演算法設計的目標就是快狠准地完成對焦。各種常見演算法各路大神已經說得非常全面,在此只做簡單小結,(也不作精確分類,因為認識不全面,也分不太清):
第一類,測距法。攝像頭髮出紅外光或超聲波(現在也有激光的)並接收返回光線,實現測距,然後藉此距離計算物距實現對焦,此方法精度略差,高端機上已較少使用,或作為其他方法的補充。
第二類,圖像分析法。又分為反差式和相位檢測兩種。
反差式就是通過前文所述不斷迭代過程,找到畫面對比度最大時的鏡頭位置。
相位檢測是較新的技術,多用於單反相機,現漸漸開始用於手機,比如iphone6。主要原理是通過一個分離鏡頭(或是通過集成在主圖像感測器上的一些線性感測器)產生兩個光路,當對焦準確時,通過兩個光路分別形成的畫面之間的偏移應該等於兩個光路固有相位差。相位差方法速度快,精度也較高,但需要硬體的支持。
事實上測距法和相位檢測法並不需要反覆迭代收斂的過程,通常一次計算就能知道準確焦距位置,並在下一幀驅動鏡頭到達此位置完成對焦,速度快。
最近正好在學習AF的驅動晶元,就來隨便說說吧。其實還不是太懂。
這是目前市面上最常見的VCM Open Loop的攝像頭模組的示意圖。通過驅動線圈調整Lens的位置來實現調焦。
要實現自動對焦,都會有一張行程表,在行程表中從Inf端到Macro端的整個行程中設定若干(10~15)個採樣點,基本上是Inf端比較密集,Macro端比較稀疏。原因如下圖所示:
在自動對焦的時候,BB讀取演算法中的行程表,下達指令到AF驅動晶元,改變輸出的電流大小來調整Lens的位置,然後獲得一張圖片。然後利用ISP計算這張圖片的清晰度數據,上交到BB。在整個行程表跑完之後,如果所有採樣點中有至少一張圖片的清晰度數據達到預設的閾值,那麼就把清晰度最高的圖片對應的採樣點作為對焦目標點,驅動Lens跑到相應位置,對焦成功;如果所有採樣點的清晰度數據都不能達到閾值,則對焦失敗,Lens跑到Inf或者No Power點。
清晰度的計算,我沒有研究,但是從和Image Sensor的廠家的技術人員交流來看,估計是用頻譜分析的方法。
在相機應用中,通常按拍攝按鈕的時候會對焦,手指觸屏的時候會對焦,有些在預覽的時候也會對焦。但是這三種場景,對焦的時候畫面各位置(中心,四邊,四角等)的圖像在計算清晰度時的權重是不一樣的。這些還沒有研究。
以上是我現在想到的。估計會有錯,很可能有遺漏。
另外,馬達除了VCM形式,還有piezo形式的,MEMS形式的。這些沒有研究到,市場上也不常見。電流驅動方法包括PWM和Linear,一個有雜訊(會在圖像上反映出來),一個比較耗電。
同樣是VCM馬達,最常見的是單向Open-loop的,現在還有Close-loop的和雙向的,結構會有些許差別。
不過這些都不常見,對焦演算法也沒有本質的差別,所以就略過了。
反差對焦,來回移動焦點,尋找反差最大邊緣最銳利的一刻,完成對焦。
這個實際上和相機元件的成像原理有關,其實質就是初中物理學過的小孔成像。
詳解:
首先,在拍攝景物時,鏡頭匯聚光線,把所拍攝的物體通過機身內部的感光材料(膠片、或者ccd、cmos等)感知其光線,然後通過相應的光電反應,讓影像清晰的留在感光材料上,並通過光電技術存儲。那就有一個疑問了,小孔成像不是倒著的嗎,那為什麼從取景器里看的畫面是正的。那是因為光線通過鏡頭在機身內的五稜鏡的反覆折射後,將影像還原。
基於最基礎的影像記錄技術,便有了對焦。我們在拍攝每個景物的時候不會刻意的站在統一距離處,這就需要相機通過設置來適應你所在距離以能夠拍攝到清晰物體。這就是對焦。即調整普通意義上的對焦即通過照相機對焦機構變動物距和相距的位置,使被拍物成像清晰的過程。
最早的膠片相機是通過手工轉動對焦環來調節相機鏡頭從而使拍攝出來的照片清晰。這種方式很大程度上面依賴人眼對對焦屏上的影像的判別以及拍攝者的熟練程度甚至拍攝者的視力。現今的手機,卡片相機大多都會採用自動對焦。其原理是用相機上的光電感測器將物體反射的光接受,根據相機內部晶元的計算與處理,最後由電動對焦裝置對焦。
自動對焦又分為被動式,主動式。總之各有優缺點,但一定的是都能高精度的快速對準意向物體。
對於一般人來說,可能更習慣用自動對焦,因為方便快捷高效。但隨著攝影技術的提高,對影像質量及藝術的層面涉及更多時,手動對焦不失為一種好的選擇。
最後,憑藉個人經驗想說。無論手動還是自動,最終要對準的不是一個點,而是一個畫面或者一部分畫面。實現畫面的平衡才是你用對焦的最終意義。
所以反差對焦是一種持續調整過程,而相位對焦是利用多lens和感測器,一次性算出距離(以犧牲部分像素作為代價),的過程。
贊同風吹麥浪的回答,除了反差對焦,相位對焦,還有激光對焦。
怎麼感覺跟配眼鏡(看一個儀器,看清楚來確定度數。。)是一個原理?
最近也在做這方方面的東西,通過爬山演算法來找最優點,容易出現假峰值,導致尋找最優點失敗,評價演算法是通過抓取yuv數據中的y數據通過tenengrad演算法來計算灰度值的大小
最近在做自動對焦的驅動項目,剛開始,望各位多指導。
推薦閱讀:
※為什麼表情圖片只有動態的沒有語音的?如果能把語音結合在一起那一定很有趣。
※韓寒所說的中國工業水平低下,是否屬實?
※如何看待蘋果此次發布ResearchKit,成立醫療調查項目?
※杜比影院到底哪裡好?