目前,包括移動裝置在內的很多多**裝置上都使用了攝像頭,而且還在以很快的速度更新換代。目前使用的攝像頭分為兩種:ccd(charge couple device電荷偶合器件)和 cmos(complementary metal oxide semiconductor互補金屬氧化物半導體)。這兩種各有優劣:目前ccd主要使用高質量的dc、dv和高檔手機上,其影象質量較好,但是整個驅動模組相對比較複雜,而且目前只有曰本一些企業掌握其生產技術,對於選用的廠商來說成本會比較高昂,而且一些裝置對與影象質量沒有很苛刻的要求,對體積要求會高一些;而cmos正好滿足這樣的要求,cmos模組則比較簡單,目前很多廠商已經把驅動和訊號處理的isp(image signal processor)整合在模組內部,這樣體積就更小,而且其生產技術要求相對簡單、工藝比較成熟、成本較低、外圍電路簡單、影象質量也可以滿足一般的要求,所以在嵌入式市場中占有很大份額,目前一些高階的cmos sensor的質量已經可以和ccd 的質量相媲美。
我這裡要介紹的就是cmos攝像頭的一些除錯經驗。
首先,要認識cmos攝像頭的結構。我們通常拿到的是整合封裝好的模組,一般由三個部分組成:鏡頭、感應器和影象訊號處理器構成。一般情況下,整合好的模組我們只看到外面的鏡頭、介面和封裝殼,這種一般是固定焦距的。有些廠商只提供晶元,需要自己安裝鏡頭,鏡頭要選擇合適大小的鏡頭,如果沒有夜視要求的話,最好選擇帶有紅外濾光的鏡頭,因為一般的sensor都能感應到紅外光線,如果不濾掉,會對影象色彩產生影響,另外要注意在pcb設計時要保證鏡頭的聚焦中心點要設計在sensor的感光矩陣中心上。除了這點 cmos sensor硬體上就和普通的ic差不多了,注意不要弄髒或者磨花表面的玻璃。
通過以上介紹,我們就可以根據自己的使用的系統選擇適合的sensor模組。要選擇介面對應(如果並行介面,sensor模組輸出資料bit位多於接受端,可以用丟棄低位的資料的方法連線)、資料格式可以接受或處理、pixel clock沒有超過可接受的最高頻率(有的是可調的,但幀率會受影響)、場同步和行同步可以調節到一致的sensor模組,這樣才可以保證可以使用。保證這些條件的正確性下,還要符合它的硬體電路要求,首要的是確定它的電源、時鐘、reset等訊號是否符合晶元要求,其次要看所有的引腳是否連線正確,這樣保證外圍的電路沒有錯誤情況下才可能正確顯示影象。各個廠商生產的產品各不相同,一些廠商的sensor模組在預設狀態下就可以輸出影象,而有些廠商的sensor模組必須要設定一些暫存器以後才可以得到影象。區別是否可以直接輸出影象,可以通過檢測sensor 的輸出腳,如果三個同步訊號都有,資料線上也有資料,那一般就會有預設影象輸出,另外也可以跟廠商聯絡獲得有關資訊。如果沒有預設輸出就需要設定暫存器了,一般都是通過兩線序列方式(iic匯流排使用頻率很高)設定暫存器。暫存器設定是整個除錯過程中最複雜的過程,當然要設定暫存器要先保證主晶元跟 sensor模組之間通訊是正確無誤的,然後才是具體設定值的問題。保證通訊無誤,簡單的方法就是讀寫一致(排除部分動態變化的暫存器),就是說保證能夠每次寫進去的資料都能正確讀出來。暫存器設定方面,一般都會有很多暫存器,其中一些是關鍵的:例如軟體reset、工作狀態、輸出大小、輸出格式、輸出訊號有效性、畫素頻率等,另外一些對細調影象質量很有用處的暫存器暫時可以不管,還有部分暫存器比如自動暴光、自動白平衡這些建議都選擇auto,這些功能對影象質量影響很大,一般模組整合了isp的都會有這個功能。當然不管是預設影象還是設定以後輸出的,都需要細調,這時如果有可能,可以聯絡sensor 模組廠商,請他們給出推薦配置或者做一些技術支援,因為一般sensor內部都有一些暫存器是不對外公布的,只有廠商的fae才這些暫存器的定義;自己調節影象時,可以從對比度、亮度、飽和度、銳化程度、gamma校正、消除flicker等方面進行調節。如果sensor沒有整合isp的話,如前面提到的它的輸出是bayer pattern,這種格式就是直接將感應到的資料傳輸過來,需要處理器端進行資料轉換,同時還需要做白平衡、暴光控制,另外還要進行上面提到的對比度、亮度、飽和度等等的改進,這些改進要想得到比較好的影象質量,演算法會比較複雜,不僅需要處理器有較強的處理能力,也對除錯者有一定的要求,但是這樣的sensor一般會比較便宜,所以根據自己的情況做選擇比較好;不過目前有廠商設計做影象處理的晶元,其實這就是將isp拿出來單獨作為一顆晶元了,它的除錯就跟sensor模組差不多了,只是大一些而已。
除錯過程中,我們還要注意一些問題,例如yuv格式輸出時中yuv的順序、bayer pattern中第一行資料的格式、sensor模組輸出影象的大小、顯示影象的大小等。一般yuv順序不對影象是可以看到的,只是色彩和亮度轉換了;bayer pattern第一行資料格式錯了,也就是rgb三種顏色亂了,都是可以看到影象的;影象輸出大小則比較重要,因為如果設定輸入的影象大小大於實際輸出的大小,處理器可能會因為資料不夠一場而無法顯示,如果小於實際大小則只能輸出影象的一部分,但是還是可以顯示的,當然這也可以在顯示面積不夠時做成區域性放大的效果。
影象出來以後,就需要檢驗一些模組的質量,個人覺得可以從下面幾個方面觀察:幀率、有無壞點、雜訊、暗光下的影象、白平衡、色彩還原能力、暴光、邊緣等。現在一般的sensor廠商的30萬畫素的產品都可以vga(640*480)30幀,2m畫素做到 svga(800*600)30幀的幀率,一般應用已經足夠,拖影現象也控制得比較好;壞點是比較嚴重的問題,一般是sensor硬體上有問題,而且它自身的修復演算法沒有能夠修復的,這樣對影象會有很大的影響,一般開啟sensor工作5分鐘就還沒有的話,基本上就可以放心了,要指出的是有的時候在一些物體的邊緣會出現「壞點」這是sensor演算法的問題,一般移動一下物體或者模組就沒有了;雜訊問題是cmos sensor無法躲避的問題,由於感光部分結構跟ccd的差異,注定了同樣大小的感光面積下cmos sensor影象雜訊要比ccd嚴重,但是各個廠商技術的差異還是會雜訊控制上也會有所不同,這時只要給個深色的背景就會看到了,同樣cmos sensor在低光條件下雜訊問題也比較突出,當然可以使用一些技術加以改進;白平衡是最基礎的問題,但是白平衡演算法好壞也會影響sensor的表現,一些sensor遇到大片某個單色的畫面時可以明顯看到背景影象顏色改變,這就是演算法不好的原因;色彩還原可以照在標準色板上,看與原來的區別就可以看出sensor色彩還原能力了,也有一些sensor會某些顏色過了;若沒有色板也可以用色彩明亮豐富的紙來測試,關鍵是看sensor能否真實表現這些色彩;暴光控制現在一般都的模組都整合了,對著暗處和強光看它是否能夠調節到比較理想的狀態,一般不會有問題,但是也有例外,筆者曾經碰到一顆sensor在強光照射下啟動時沒有辦法正確暴光,畫面很暗;邊緣好壞是乙個sensor細節表現能力證明,一些 sensor在邊緣部分會有鋸齒或者就是很模糊不清,這都是細節表現的問題;如果整個畫面比較灰,那就是sensor對比度出了問題。
除錯 sensor是一件非常有趣的事情,很多時候它跟一般的ic沒有太大區別,其實上我們也是把它當成一般ic來除錯的,但是收穫卻很多。當然,除錯的時候可能會遇到很多問題,有些可能會比較棘手,問題的解決也需要很多的經驗,但是辦法總比問題多,問題的解決就是經驗累積的過程、成長的過程。
CMOSSensor的除錯經驗分享
目前,包括移動裝置在內的很多多 裝置上都使用了攝像頭,而且還在以很快的速度更新換代。目前使用的攝像頭分為兩種 ccd charge couple device電荷偶合器件 和 cmos complementary metal oxide semiconductor互補金屬氧化物半導體 這兩種各有優劣...
CMOS Sensor的除錯經驗分享
cmos sensor的 方式是一行一行的方式進行的,任何乙個pixel的 時間是一樣的,也就是同一行上的每個pixel的 開始點和 的時間都是一模一樣的,所以同一行的所有點所接收到的能量是一樣的,而在不同行之間雖然 時間都是一樣的,但是 的開始點是不同的,所以不同行之間所接受到的能量是不一定相同的...
CMOS Sensor的除錯經驗
目前,包括移動裝置在內的很多多 裝置上都使用了攝像頭,而且還在以很快的速度更新換代。目前使用的攝像頭分為兩種 ccd charge couple device電荷偶合器件 和 cmos complementary metal oxide semiconductor互補金屬氧化物半導體 這兩種各有優劣...