當前位置:
首頁 >
转一篇写的比较好的camera文档[Camera 图像处理原理分析]
發布時間:2023/12/20
34
豆豆
生活随笔
收集整理的這篇文章主要介紹了
转一篇写的比较好的camera文档[Camera 图像处理原理分析]
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
色彩篇(一)
1?????????前言
做為拍照手機的核心模塊之一,camera sensor效果的調整,涉及到眾多的參數,如果對基本的光學原理及sensor軟/硬件對圖像處理的原理能有深入的理解和把握的話,對我們的工作將會起到事半功倍的效果。否則,缺乏了理論的指導,只能是憑感覺和經驗去碰,往往無法準確的把握問題的關鍵,不能掌握sensor調試的核心技術,無法根本的解決問題。 所以,這里筆者結合自己出于對攝影的愛好所學習的一些圖像處理相關的原理,試圖通過分析一些與Sensor圖像處理相關的因素,和大家分享一下自己的一些理解,共同探討,共同學習進步。 2?????????色彩感應及校正 2.1????????原理 人眼對色彩的識別,是基于人眼對光線存在三種不同的感應單元,不同的感應單元對不同波段的光有不同的響應曲線的原理,通過大腦的合成得到色彩的感知。 一般來說,我們可以通俗的用RGB三基色的概念來理解顏色的分解和合成。 理論上,如果人眼和sensor對光譜的色光的響應,在光譜上的體現如下的話,基本上對三色光的響應,相互之間不會發生影響,沒有所謂的交叉效應。 但是,實際情況并沒有如此理想,下圖表示了人眼的三色感應系統對光譜的響應情況。可見RGB的響應并不是完全獨立的。 下圖則表示了某Kodak相機光譜的響應。可見其與人眼的響應曲線有較大的區別。 2.2????????對sensor的色彩感應的校正 既然我們已經看到sensor對光譜的響應,在RGB各分量上與人眼對光譜的響應通常是有偏差的,當然就需要對其進行校正。不光是在交叉效應上,同樣對色彩各分量的響應強度也需要校正。通常的做法是通過一個色彩校正矩陣對顏色進行一次校正。1
該色彩校正的運算通常是由sensor模塊集成或后端的ISP完成,軟件通過修改相關寄存器得到正確的校正結果。值得注意的一點是,由于RGB -> YUV的轉換也是通過一個3*3的變換矩陣來實現的,所以有時候這兩個矩陣在ISP處理的過程中會合并在一起,通過一次矩陣運算操作完成色彩的校正和顏色空間的轉換。 3?????????顏色空間 3.1????????分類 實際上顏色的描述是非常復雜的,比如RGB三基色加光系統就不能涵蓋所有可能的顏色,出于各種色彩表達,以及色彩變換和軟硬件應用的需求,存在各種各樣的顏色模型及色彩空間的表達方式。這些顏色模型,根據不同的劃分標準,可以按不同的原則劃分為不同的類別。 匹配任意可見光所需的三原色光比例曲線 對于sensor來說,我們經常接觸到的色彩空間的概念,主要是RGB , YUV這兩種(實際上,這兩種體系包含了許多種不同的顏色表達方式和模型,如sRGB, Adobe RGB, YUV422, YUV420 …), RGB如前所述就是按三基色加光系統的原理來描述顏色,而YUV則是按照 亮度,色差的原理來描述顏色。 3.1.1????????????????RGB <-> YUV的轉換 不比其它顏色空間的轉換有一個標準的轉換公式,因為YUV在很大程度上是與硬件相關的,所以RGB與YUV的轉換公式通常會多個版本,略有不同。 常見的公式如下: Y=0.30R+0.59G+0.11B?U=0.493(B - Y) =? - 0.15R - 0.29G +0.44B?
V=0.877(R - Y) = 0.62R - 0.52G - 0.10B 但是這樣獲得的YUV值存在著負值以及取值范圍上下限之差不為255等等問題,不利于計算機處理,所以根據不同的理解和需求,通常在軟件處理中會用到各種不同的變形的公式,這里就不列舉了。 體現在Sensor上,我們也會發現有些Sensor可以設置YUV的輸出取值范圍。原因就在于此。
從公式中,我們關鍵要理解的一點是,UV 信號實際上就是藍色差信號和紅色差信號,進而言之,實際上一定程度上間接的代表了藍色和紅色的強度,理解這一點對于我們理解各種顏色變換處理的過程會有很大的幫助。
色彩篇(二)
?
1.1.1??????????色溫變化時的色彩校正 所以從理論上可以看出,隨著色溫的升高,要對色溫進行較正,否則,物體在這樣的光線條件下所表現出來的顏色就會偏離其正常的顏色,因此需要降低sensor對紅色的增益,增加sersor對藍光的增益。同時在調整參數時一定程度上要考慮到整體亮度的要保持大致的不變,即以YUV來衡量時,Y值要基本保持不變,理論上認為可以參考RGB->YUV變換公式中,RGB三分量對Y值的貢獻,從而確定RGAIN和BGAIN的變化的比例關系。但實際情況比這還要復雜一些,要考慮到不同sensor對R,B的感光的交叉影響和非線性,所以最佳值可能和理論值會有一些偏差。 1.1.2??????????自動白平衡原理 1.1.2.1????????原理 自動白平衡是基于假設場景的色彩的平均值落在一個特定的范圍內,如果測量得到結果偏離該范圍,則調整對應參數,校正直到其均值落入指定范圍。該處理過程可能基于YUV空間,也可能基于RGB空間來進行。對于Sensor來說,通常的處理方式是通過校正R/B增益,使得UV值落在一個指定的范圍內。從而實現自動白平衡。 1.1.2.2????????特殊情況的處理 在自動白平衡中,容易遇到的問題是,如果拍攝的場景,排除光線色溫的影響,其本身顏色就是偏離平均顏色值的,比如大面積的偏向某種顏色的圖案如:草地,紅旗,藍天等等,這時候,強制白平衡將其平均顏色調整到灰色附近,圖像顏色就會嚴重失真。 因此,通常的做法是:在處理自動白平衡時,除了做為目標結果的預期顏色范圍外,另外再設置一對源圖像的顏色范圍闕值,如果未經處理的圖像其顏色均值超出了該闕值的話,根本就不對其做自動白平衡處理。由此保證了上述特殊情況的正確處理。 可見,這兩對闕值的確定對于自動白平衡的效果起著關鍵性的作用。 1.1.3??????????某平臺的例子 英文代碼??????????????中文界面???????色溫???????色溫?????? RGAIN, GGAIN,?? BGAIN cloud???????????陰天??????? 7500k?? 0x1D4C, 0x00CD, 0x0085, 0x0080 daylight????????日光??????? 6500k?? 0x1964, 0x00A3, 0x0080, 0x0088 INCANDESCENCE???白熱光??? 5000k?? 0x1388, 0x00A5, 0x0080, 0x0088 FLUORESCENT?????日光燈????? 4400k?? 0x1130, 0x0098, 0x0080, 0x00A8 TUNGSTEN????????鎢絲燈????? 2800k?? 0x0AF0, 0x0080, 0x0081, 0x00A4 可以看到隨著色溫的升高,其變化規律基本符合上節中的理論分析。不過這里多數參數與理論值都有一些偏差,其中日光燈的色溫參數設置與理論值有較大的偏差,實際效果也證明該日光燈的參數設置使得在家用日光燈環境下拍攝得到的照片顏色偏藍。修改其參數后實拍效果明顯改善。(再查一些資料可以看到通常會有兩種熒光燈色溫 4000 和 5000K,目前我所接觸到的應該是5000K居多) 1.1.4??????????調試和驗證具體參數的調整,應該在燈箱環境下,使用各種已知色溫的標準光源對標準色卡拍攝,在Pc機上由取色工具測量得到其與標準色板的RGB分量上的色彩偏差,相應的調整各分量增益的比例關系。為了更精確的得到結果,曝光量增益的設置在此之前應該相對準確的校正過。
色彩篇(三)
顏色相關特效處理
1.1????????grayscale (灰階) 灰階圖的效果就是將彩色圖片轉換為黑白圖片。 1.2????????理論 理論上,在YUV空間,將UV分量丟棄,只保留Y分量,這樣就可以得到黑白圖像,這也是彩色電式機信號能兼容黑白電視機的原理。如下圖理論上Y值一樣的顏色(右邊是用acdsee轉成灰度圖的效果),在grayscale模式下看應該是一樣的顏色。 ????? 算法上的操作,理論上應該把UV值改成灰色對應數值就可以了。不過根據軟件算法和硬件結構的不同,具體代碼也會有不同。 1.3????????以某平臺為例 核心的兩行代碼如下: SET_HUE_U_GAIN(0); SET_HUE_V_GAIN(0); 這里設置UV GAIN為0,如果UV offset設置為128的話,最終得到的UV就是128,這就和理論是相符合的。 1.4????????sepia / sepiagreen / sepiablue 所謂的復古(綠,藍)就是在灰階的基礎上,對UV值額外再做了一個offset,將灰度圖轉換成某種顏色的梯度圖。理論上為了獲得藍色效果,應該增加藍色差信號,減小紅色差信號。即增大U,減小V。 以sepiablue效果為例,這里的字節的MSB表示符號位:所以88為88,158為-30。 SET_HUE_U_GAIN(0);? SET_HUE_V_GAIN(0);? SET_HUE_U_OFFSET(88); SET_HUE_V_OFFSET(158); ?? 1.5????????negative 所謂負片效果,就是將圖像的顏色反轉,看起來就像是在看膠片底片時的效果。這從理論上也很容易理解和處理,就是在RGB空間,取其補色,具體的操作就是用255分別減去RGB得到新的RGB值。通常會在ISP中實現該功能。 ?? 2?????????小結 理解了原理,要做出其它顏色變換方面的效果就很容易了。 基本上,在顏色校正和處理方面,需要考慮的相關參數大致包括: 自動WB上下限,自動白平衡時的目標范圍,RGB gain, UV gain, UV offset, color correction.有些還會有saturation 和 hue相關的設置。 從sensor或ISP硬件處理的流程上說,通常方向是先做RGB gain,再做color correction,最后做YUV空間的處理。所以調整效果的時候,為了減少參數之間的相互影響,基本上也可以按這個順序來調整參數。 ?亮度及曝光控制篇
1.1????????亮度感應及曝光 1.1.1??????????感光寬容度 從最明亮到最黑暗,假設人眼能夠看到一定的范圍,那么膠片(或CCD等電子感光器件)所能表現的遠比人眼看到的范圍小的多,而這個有限的范圍就是感光寬容度。 人眼的感光寬容度比膠片要高很多,而膠片的感光寬容度要比數碼相機的ccd高出很多!了解這個概念之后,我們就不難了解,為什么在逆光的條件下,人眼能看清背光的建筑物以及耀眼的天空云彩。而一旦拍攝出來,要么就是云彩顏色絢爛而建筑物變成了黑糊糊的剪影,要么就是建筑物色彩細節清楚而原本美麗的云彩卻成了白色的一片 再看人眼的結構,有瞳孔可以控制通光量,有桿狀感光細胞和椎狀感光細胞以適應不同的光強,可見即使人眼有著很高的感光寬容度,依然有亮度調節系統,以適應光強變化。 那么對于camera sensor來說,正確的曝光就更為重要了! 1.1.2??????????自動曝光和18%灰 對于sensor來說,又是如何來判斷曝光是否正確呢?很標準的做法就是在YUV空間計算當前圖像的Y值的均值。調節各種曝光參數設定(自動或手動),使得該均值落在一個目標值附近的時候,就認為得到了正確的曝光。 那么如何確定這個Y的均值,以及如何調整參數使得sensor能夠將當前圖像的亮度調整到這個范圍呢? 這就涉及到一個概念 18%灰,一般認為室內室外的景物,在通常的情況下,其平均的反光系數大約為18%,而色彩均值,如前所述,可以認為是一種中灰的色調。這樣,可以通過對反光率為18%的灰板拍攝,調整曝光參數,使其顏色接近為中等亮度的灰色(Y值為128)。然后,對于通常的景物,就能自動的得到正確的曝光了。 當然這種自動判斷曝光參數的AE功能不是萬能的,對于反光率偏離通常均值的場景,比如雪景,夜景等,用這種方法就無法得到正確的曝光量了。所以在sensor的軟件處理模塊中,通常還會提供曝光級別的設定功能,強制改變自動曝光的判斷標準。比如改變預期的亮度均值等。 1.1.3??????????曝光級別設定 在多數數碼相機和拍照手機上都可以看到曝光級別設定的功能,如前所述,這種設定實際上是在自動曝光的基礎上給用戶提供一定的曝光控制能力,強制改變camera sensor的曝光判斷標準,獲得用戶想要的效果。 通常的做法就是改變Y值均值的預期值,使得sensor在自動曝光時以新的Y預期值為目標,自動調整Exptime 和 AG。 1.1.4??????????gamma校正 曝光的均值正確了,不代表整體圖像的亮度分布就和人眼所看到的保持一致了。 事實上,人眼對亮度的響應并不是一個線性的比例關系,而各種涉及到光電轉換的設備的輸入輸出特性曲線一般也是非線性的,且表現為冪函數的形式: y =x n?,?所以整個圖像系統的傳遞函數是一個冪函數。g=?g 1×g 2×…×g n 對于sensor來說,其響應倒是接近為線性關系,所以為了在各種設備上正確輸出符合人眼對亮度的響應的圖像,就需要進行校正。 冪函數的指數的倒數就是通常所說的gamma值。 歸一化的gamma曲線校正的函數可以表示為?'>1,通常對于Window的輸出顯示系統,gamma值為2.2,而對于蘋果的輸出顯示系統和打印系統來說,gamma值為1.8。
實際上,sensor在做gamma校正的時候,通常也一并作了從raw格式的10bit的數據到8bit數據的轉換,所以這時候的公式可以表示為???????????對比度
對比度的調整在一定程度上說,其實也就是對gamma曲線的調整,增大對比度就是提高Gamma值。對于圖像處理來說,也有在硬件gamma校正后,單獨由軟件再進行一次類似的冪函數變換來調整對比度。 1.1.6??????????曝光參數的調整 曝光強度的調整,可以通過改變曝光時間,也可以通過改變亮度增益AG來實現。 曝光時間受到楨頻的限制,比如攝像時要求15幀每秒的話,這時候曝光時間最長就不能超過1/15s,可能還有別的條件限制,實際的曝光時間還要短,在光線弱的情況下,單獨調整曝光時間就無法滿足幀頻的需要了。 這時候還可以調整增益AG,來控制曝光的增益,降低曝光時間。但是,這樣做的缺點是以犧牲圖像質量為代價的,AG的增強,伴隨的必然是信噪比的降低,圖像噪聲的增強。 所以,以圖像質量為優先考慮的時候,曝光參數的調節通常是優先考慮調節曝光時間,其次在考慮曝光增益。當然曝光時間也不能過長以免由于抖動造成圖像的模糊,而在拍攝運動場景時,對曝光時間的要求就更高了。抗噪、變焦、頻閃篇
1.1????????抗噪處理
AG 的增大,不可避免的帶來噪點的增多,此外,如果光線較暗,曝光時間過長,也會增加噪點的數目(從數碼相機上看,主要是因為長時間曝光,感光元件溫度升高,電流噪聲造成感光元件噪點的增多),而感光元件本身的缺陷也是噪點甚至壞點的來源之一。因此,通常sensor集成或后端的ISP都帶有降噪功能的相關設置。 1.1.1??????????啟動時機 根據噪點形成的原因,主要是AG或Exptime超過一定值后需要啟動降噪功能,因此通常需要確定這兩個參數的闕值,過小和過大都不好。 從下面的降噪處理的辦法將會看到,降噪勢附帶的帶來圖像質量的下降,所以過早啟動降噪功能,在不必要的情況下做降噪處理不但增加處理器或ISP的負擔,還有可能適得其反。而過遲啟動降噪功能,則在原本需要它的時候,起不到相應的作用。 1.1.2??????????判定原則和處理方式 那么如何判定一個點是否是噪點呢?我們從人是如何識別噪點的開始討論,對于人眼來說,判定一個點是噪點,無外乎就是這一點的亮度或顏色與邊上大部分的點差異過大。從噪點產生的機制來說,顏色的異常應該是總是伴隨著亮度的異常,而且對亮度異常的處理工作量比顏色異常要小,所以通常sensor ISP的判定原則是一個點的亮度與周圍點的亮度的差值大于一個闕值的時候,就認為該點是一個噪點。 處理的方式,通常是對周圍的點取均值來替代原先的值,這種做法并不增加信息量,類似于一個模糊算法。 對于高端的數碼相機,擁有較強的圖像處理芯片,在判定和處理方面是否有更復雜的算法,估計也是有可能的。比如亮度和顏色綜合作為標準來判定噪點,采用運算量更大的插值算法做補償,對于sensor固有的壞點,噪點,采用屏蔽的方式拋棄其數據(Nikon就是這么做的,其它廠商應該也如此)等等。 1.1.3??????????效果 對于手機sensor來說,這種降噪處理的作用有多大,筆者個人認為應該很有限,畢竟相對數碼相機,手機sensor的鏡頭太小,通光量小,所以其基準AG勢必就比相機的增益要大(比如相當于普通家用數碼相機ISO800的水平),這樣才能獲得同樣的亮度,所以電流噪聲帶來的影響也就要大得多。這樣一來,即使最佳情況,噪點也會很多,數據本身的波動就很大,這也就造成我們在手機照片上勢必會看到的密密麻麻的花點,如果全部做平均,降低了噪點的同時,圖像也會變得模糊,所以手機噪點的判斷闕值會設得比較高,以免涉及面過大,模糊了整體圖像。這樣一來一是數據本身就差,二是降噪的標準也降低了,造成總體效果不佳。 1.2????????數碼變焦 數碼變焦可以有兩種形式: 其一,是通過插值算法,對圖像進行插值運算,將圖像的尺寸擴大到所需的規格,這種算法就其效果而言,并不理想,尤其是當使用在手機上的時候,手機上的攝像頭本身得到的數據就有較大的噪聲,再插值的話,得到的圖像幾乎沒法使用。實際上,即使是數碼相機的數碼變焦功能也沒有太大的實用價值。如果插值算法沒有硬件支持,則需要在應用層實現。我司某平臺的數碼變焦用的就是該種辦法。 其二,其實是一種偽數碼變焦的形式,當攝像頭不處在最大分辨率格式的情況下,比如130萬像素的sensor使用640*480的規格拍照時,仍舊設置sersor工作在1280*960的分辨率下,而后通過采集中央部分的圖像來獲取640*480的照片,使得在手機上看來所拍物體尺寸被放大了一倍。也有很多手機采用的是這種數碼變焦方式,這種辦法幾乎不需要額外的算法支持,對圖像質量也沒有影響,缺點是只有小尺寸情況下可以采用。此外在DV方式下也可以實現所謂的數碼變焦放大拍攝功能。(這應該是一個賣點,對Dv來說,這種數碼變焦還是有實際意義的) 要采用這種變焦模式,驅動需要支持windowing功能,獲取所需部分的sensor圖像數據。 1.3????????頻閃抑制功能 1.3.1??????????何謂頻閃 日常使用的普通光源如白熾燈、日光燈、石英燈等都是直接用220/50Hz交流電工作,每秒鐘內正負半周各變化50次,因而導致燈光在1秒鐘內發生100(50×2)次的閃爍,再加上市電電壓的不穩定,燈光忽明忽暗,這樣就產生了所謂的“頻閃”。 下表顯示了幾種光源的光強波動情況: 因為人眼對光強變化有一定的遲滯和適應性,所以通常看不出光源的亮度變化。但是依然還是會增加眼睛的疲勞程度。所以市場上才會有所謂的無頻閃燈銷售。 1.3.2??????????對頻閃的抑制 對于camera sensor來說,沒有人眼的遲滯和適應過程,所以對光源亮度的變化是比較敏感的。如果不加抑制,在預覽和DV模式下,可能會有明顯的圖像的明亮變化閃爍的現象發生。 如何解決呢?考慮到頻閃的周期性,在一個周期內,光源亮度的累積值,應該是大體一致的,所以,如果控制曝光的時間是頻閃周期的整倍數,那么每一幀圖像的亮度就大體是一致的了,這樣就可以有效地抑制頻閃對圖像亮度的影響。 所以,在自動曝光的模式下,sensor會根據頻閃的頻率,調整曝光時間為其周期的整倍數。 因為各地的交流電的頻率不同,所以有50Hz/60Hz之分。 在具體設置相關Sensor寄存器的時候,要根據電流頻率和sensor的時鐘頻率,分辨率等,計算出頻閃周期對應的時鐘周期數等。
總結
以上是生活随笔為你收集整理的转一篇写的比较好的camera文档[Camera 图像处理原理分析]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑连接Wifi,只能上QQ不能上网。关
- 下一篇: Python代码实现验证码识别