當(dāng)前位置: 首頁 > 傳感測量產(chǎn)品 > 工業(yè)傳感器 > 圖像傳感器
發(fā)布日期:2022-10-09 點擊率:111
摘要:
CMOS圖像傳感器與CCD相比,由于能將時序處理電路和圖像信號的前端放大與數(shù)字化部分以及圖像集成于一個芯片內(nèi),因此其的發(fā)展一直受到業(yè)界的高度重視。并且它以其低廉的價格、較好的圖像質(zhì)量、高集成度和相對較少的功耗,在視頻監(jiān)控、多媒體領(lǐng)域得到更加廣泛的應(yīng)用。 本文闡述了針對單片CMOS圖像傳感器中數(shù)字預(yù)處理電路自動白平衡算法模塊(AWB)的設(shè)計與實現(xiàn)。因為是單片系統(tǒng)設(shè)計,要求電路設(shè)計具備規(guī)模小,消耗資源少,功耗小,以及方便移植等特點。通過對前人提出的自動白平衡算法的MATLAB仿真比較,兼顧實現(xiàn)復(fù)雜度和處理效果兩方面因素,本文提出了一種灰色世界和理想反射鏡相結(jié)合的方法進(jìn)行顏色校正。兩種算法的結(jié)合互補(bǔ),使得本算法的適用范圍得到擴(kuò)展,一定程度上彌補(bǔ)了兩種算法各自的不足。使用這種算法不需要存儲圖像便能完成白平衡增益的計算。為了節(jié)約資源和滿足實時性,本設(shè)計中規(guī)劃了算法中統(tǒng)計區(qū)域和運(yùn)算區(qū)域,并通過狀態(tài)機(jī)控制一個除法器做連續(xù)除法運(yùn)算。為了提高電路的適用頻率范圍,增強(qiáng)設(shè)計的可移植性,在數(shù)據(jù)處理部分采用了流水線乘法器。為了進(jìn)一步降低功耗,設(shè)計中還采用了隔幀啟動白平衡機(jī)制。設(shè)計采用Verilog硬件描述語言進(jìn)行各子模塊的設(shè)計,并用MATLAB和Verilog結(jié)合的方法生成測試激勵源,對設(shè)計進(jìn)行驗證。通過在不同色溫環(huán)境下的測試,本設(shè)計對圖像偏色有較好的校正效果。
展開
展開全文
作者 / 阿寶
編輯 / 阿寶
出品 / 阿寶1990
色溫定義
色溫的定義:將黑體從絕對零度開始加溫,溫度每升高一度稱為1開氏度(用字母K來表示),當(dāng)溫度升高到一定程度時候,黑體便輻射出可見光,其光譜成份以及給人的感覺也會著溫度的不斷升高發(fā)生相應(yīng)的變化。于是,就把黑體輻射一定色光的溫度定為發(fā)射相同色光光源的色溫。
常見光源色溫:
光源 色溫(K)
鎢絲燈(白熾燈) 2500-3200k
碳棒燈 4000-5500k
熒光燈(日光燈,節(jié)能燈) 4500-6500k
氙燈 5600 k
炭精燈 5500~6500k
日光平均 5400k
有云天氣下的日光 6500-7000k
陰天日光 -k
隨著色溫的升高,光源的顏色由暖色向冷色過渡,光源中的能量分布也由紅光端向藍(lán)光端偏移。
值得注意的是,實際光源的光譜分布各不相同,而色溫只是代表了能量的偏重程度,并不反映具體的光譜分布,所以即使相同色溫的光源,也可能引起不同的色彩反應(yīng)。
人眼及大腦對色溫有一定的生理和心理的自適應(yīng)性,所以看到的顏色受色溫偏移的影響較小,而camera的sersor沒有這種能力,所以拍出來的照片不經(jīng)過白平衡處理的話,和人眼看到的顏色會有較大的偏差(雖然人眼看到的和白光下真實的色彩也有偏差)。
太陽光色溫隨天氣和時間變化的原因,與不同頻率光的折射率有關(guān):
波長長的光線,折射率小,透射能力強(qiáng),波長短的光線,折射率大,容易被散射,折射率低,這也就是為什么交通燈用紅色,防霧燈通常是黃色,天空為什么是藍(lán)色的等等現(xiàn)象的原因。
知道了這一點,太陽光色溫變化的規(guī)律和原因也就可以理解和分析了。
色溫變化時的色彩校正
所以從理論上可以看出,隨著色溫的升高,要對色溫進(jìn)行較正,否則,物體在這樣的光線條件下所表現(xiàn)出來的顏色就會偏離其正常的顏色,因此需要降低sensor對紅色的增益,增加sersor對藍(lán)光的增益。
同時在調(diào)整參數(shù)時一定程度上要考慮到整體亮度的要保持大致的不變,即以YUV來衡量時,Y值要基本保持不變,理論上認(rèn)為可以參考RGB->YUV變換公式中,RGB三分量對Y值的貢獻(xiàn),從而確定RGAIN和BGAIN的變化的比例關(guān)系。但實際情況比這還要復(fù)雜一些,要考慮到不同sensor對R,B的感光的交叉影響和非線性,所以最佳值可能和理論值會有一些偏差。
自動白平衡處理
自動白平衡是基于假設(shè)場景的色彩的平均值落在一個特定的范圍內(nèi),如果測量得到結(jié)果偏離該范圍,則調(diào)整對應(yīng)參數(shù),校正直到其均值落入指定范圍。該處理過程可能基于YUV空間,也可能基于RGB空間來進(jìn)行。對于Sensor來說,通常的處理方式是通過校正R/B增益,使得UV值落在一個指定的范圍內(nèi)。從而實現(xiàn)自動白平衡。
特殊情況的處理
在自動白平衡中,容易遇到的問題是,如果拍攝的場景,排除光線色溫的影響,其本身顏色就是偏離平均顏色值的,比如大面積的偏向某種顏色的圖案如:草地,紅旗,藍(lán)天等等,這時候,強(qiáng)制白平衡將其平均顏色調(diào)整到灰色附近,圖像顏色就會嚴(yán)重失真。
因此,通常的做法是:在處理自動白平衡時,除了做為目標(biāo)結(jié)果的預(yù)期顏色范圍外,另外再設(shè)置一對源圖像的顏色范圍闕值,如果未經(jīng)處理的圖像其顏色均值超出了該闕值的話,根本就不對其做自動白平衡處理。由此保證了上述特殊情況的正確處理。
可見,這兩對闕值的確定對于自動白平衡的效果起著關(guān)鍵性的作用。
某平臺的例子
可以看到隨著色溫的升高,其變化規(guī)律基本符合上節(jié)中的理論分析。不過這里多數(shù)參數(shù)與理論值都有一些偏差,其中日光燈的色溫參數(shù)設(shè)置與理論值有較大的偏差,實際效果也證明該日光燈的參數(shù)設(shè)置使得在家用日光燈環(huán)境下拍攝得到的照片顏色偏藍(lán)。修改其參數(shù)后實拍效果明顯改善。(再查一些資料可以看到通常會有兩種熒光燈色溫 4000 和 5000K,目前所接觸到的應(yīng)該是5000K居多)
具體參數(shù)的調(diào)整,應(yīng)該在燈箱環(huán)境下,使用各種已知色溫的標(biāo)準(zhǔn)光源對標(biāo)準(zhǔn)色卡拍攝,在Pc機(jī)上由取色工具測量得到其與標(biāo)準(zhǔn)色板的RGB分量上的色彩偏差,相應(yīng)的調(diào)整各分量增益的比例關(guān)系。為了更精確的得到結(jié)果,曝光量增益的設(shè)置在此之前應(yīng)該相對準(zhǔn)確的校正過。
亮度及曝光控制篇
感光寬容度
從最明亮到最黑暗,假設(shè)人眼能夠看到一定的范圍,那么膠片(或CCD等電子感光器件)所能表現(xiàn)的遠(yuǎn)比人眼看到的范圍小的多,而這個有限的范圍就是感光寬容度。
人眼的感光寬容度比膠片要高很多,而膠片的感光寬容度要比數(shù)碼相機(jī)的ccd高出很多!了解這個概念之后,我們就不難了解,為什么在逆光的條件下,人眼能看清背光的建筑物以及耀眼的天空云彩。而一旦拍攝出來,要么就是云彩顏色絢爛而建筑物變成了黑糊糊的剪影,要么就是建筑物色彩細(xì)節(jié)清楚而原本美麗的云彩卻成了白色的一片。
再看人眼的結(jié)構(gòu),有瞳孔可以控制通光量,有桿狀感光細(xì)胞和椎狀感光細(xì)胞以適應(yīng)不同的光強(qiáng),可見即使人眼有著很高的感光寬容度,依然有亮度調(diào)節(jié)系統(tǒng),以適應(yīng)光強(qiáng)變化。
那么對于camera sensor來說,正確的曝光就更為重要了!
自動曝光和18%灰
對于sensor來說,又是如何來判斷曝光是否正確呢?很標(biāo)準(zhǔn)的做法就是在YUV空間計算當(dāng)前圖像的Y值的均值。調(diào)節(jié)各種曝光參數(shù)設(shè)定(自動或手動),使得該均值落在一個目標(biāo)值附近的時候,就認(rèn)為得到了正確的曝光。
那么如何確定這個Y的均值,以及如何調(diào)整參數(shù)使得sensor能夠?qū)?dāng)前圖像的亮度調(diào)整到這個范圍呢?
這就涉及到一個概念 18%灰,一般認(rèn)為室內(nèi)室外的景物,在通常的情況下,其平均的反光系數(shù)大約為18%,而色彩均值,如前所述,可以認(rèn)為是一種中灰的色調(diào)。這樣,可以通過對反光率為18%的灰板拍攝,調(diào)整曝光參數(shù),使其顏色接近為中等亮度的灰色(Y值為128)。然后,對于通常的景物,就能自動的得到正確的曝光了。
當(dāng)然這種自動判斷曝光參數(shù)的AE功能不是萬能的,對于反光率偏離通常均值的場景,比如雪景,夜景等,用這種方法就無法得到正確的曝光量了。所以在sensor的軟件處理模塊中,通常還會提供曝光級別的設(shè)定功能,強(qiáng)制改變自動曝光的判斷標(biāo)準(zhǔn)。比如改變預(yù)期的亮度均值等。
曝光參數(shù)的調(diào)整
曝光強(qiáng)度的調(diào)整,可以通過改變曝光時間,也可以通過改變亮度增益AG來實現(xiàn)。
曝光時間受到楨頻的限制,比如攝像時要求15幀每秒的話,這時候曝光時間最長就不能超過1/15s,可能還有別的條件限制,實際的曝光時間還要短,在光線弱的情況下,單獨調(diào)整曝光時間就無法滿足幀頻的需要了。
這時候還可以調(diào)整增益AG,來控制曝光的增益,降低曝光時間。但是,這樣做的缺點是以犧牲圖像質(zhì)量為代價的,AG的增強(qiáng),伴隨的必然是信噪比的降低,圖像噪聲的增強(qiáng)。
所以,以圖像質(zhì)量為優(yōu)先考慮的時候,曝光參數(shù)的調(diào)節(jié)通常是優(yōu)先考慮調(diào)節(jié)曝光時間,其次在考慮曝光增益。當(dāng)然曝光時間也不能過長以免由于抖動造成圖像的模糊,而在拍攝運(yùn)動場景時,對曝光時間的要求就更高了。
參考資料:
程序功能:AVR外部信號采集處理,使用PB0引腳口。選通不同顏色,用T2來計算PB0口256個上升沿的時間。
#ifndef COLOR_H
#define COLOR_H
#endif
#define S0 0
#define S1 1
#define S2 2
#define S3 3
#define LED 4
#define OUT 0
static volatile unsigned int timer=0;
static volatile unsigned int GC=0,BC=0,RC=0;//
static volatile char i=0;
unsigned char j=0;
volatile unsigned int rx=0,gx=0,bx=0;
//PA0 PA1 PA2 PA3 PA4 PB0
//S0 S1 S2 S3 LED OUT
//S3 S2
//0 0 紅(R)
//1 1 綠(G)
//1 0 藍(lán)(B)
//0 1 無
void Color_Mode(unsigned char color)
{
if(color=='R')//將濾波選擇為紅色,即S3:S2=0:0
{
PORTA &=~((1<<s3)|(1<<s2)); }="" else="" if(color="='G')//將濾波選擇為綠色,即S3:S2=1:1" {="" porta="" |="(1<<S3)|(1<<S2);" &="~(1<<S2);" void="" color_ioinit()="" 將傳感器的s0,s1,s2,s3和led引腳設(shè)置成輸出高電平形式="" out設(shè)置成帶上拉電阻的輸入模式="" ddra="" 選擇輸出比例因子為100%,="" color_timer02init(void)="" 將定時器0設(shè)置成外部脈沖輸入模式pb0為外部脈沖輸入引腳="" timsk|="(1<<TOIE0);//T0中斷使能" tccr0|="(1<<CS02)|(1<<CS01)|(1<<CS00);//將TCCR0的第三位全部設(shè)置成1,上升沿有效" tcnt0="0;//將計數(shù)器初始化為0" 定時器2溢出中斷="" isr(timer2_ovf_vect)="" timer++;="" 計數(shù)器0計數(shù)溢出中斷="" isr(timer0_ovf_vect)="" if((porta&0x0c)="=0x00)//選擇濾紅色" rc="timer*34.7222;" color_mode('g');="" 選擇濾綠色波="" i="0;" gc="timer*34.7222;" color_mode('b');="" 選擇濾藍(lán)色波="" bc="timer*34.7222;" color_mode('r');="" 選擇濾紅色波="" 轉(zhuǎn)換完后,關(guān)閉溢出中斷使能="" timsk&="~(1<<TOIE0);" tccr0&="~(1<<CS02)|(1<<CS01)|(1<<CS00);" tccr2&="~((1<<CS22)|(1<<CS21)|(1<<CS20));" timer="0;" tcnt2="0;" color_catchvalue()="" if(i="=1)" rx="RC;" gx="GC;" bx="BC;" #include="" #include"uart.h"="" #include"util="" delay.h"="" #include"color.h"="" int="" main(void)="" uartinit();="" color_ioinit();="" color_timer02init();="" printf("it="" is="" running");="" while(1)="" color_catchvalue();="" return="" 0;="" 結(jié)果顯示:="" 結(jié)果分析:="" 當(dāng)t0中斷產(chǎn)生,第一個if語句中的timer總是為0,即使改變if順序也是如此。求解釋。=""
<div class="" 0="" 本帖最后由="" linchenfeng="" 于="" 2016-10-10="" 17:31="" 編輯="" 注:本文是對顏色傳感器白平衡和比例因子計算的介紹,和具體流程實現(xiàn)方法。="" 由于發(fā)現(xiàn)身邊同學(xué)有做有些設(shè)計的時候需要到顏色識別傳感器。但是對于其中的三個(rgb)的比例因子不知道怎么來的,是什么意思,或者怎么去計算調(diào)整。這里我簡單統(tǒng)一的做一下介紹。="" 首先,使用顏色識別傳感器的原理實際就是,三單元色的分析。因為任何顏色都可以由rgb這三種顏色混合而成。所以我們只要識別出這三種顏色的值,然后對應(yīng)去查顏色鋪表,即可得出被測物的顏色。="" 再者,實際使用中,很多同學(xué)都是照搬網(wǎng)絡(luò)上的例程,發(fā)現(xiàn)對顏色的識別有很大的誤差或者誤識別。主要是因為歷程中的比例因子均是固定了的,而且同學(xué)們也不知道如何去修改。="" 因為不同條件下,比例因子是不同的。所以才有了白平衡的需要。="" 那么,什么是比例因子呢。我們知道在理論(認(rèn)為無任何干擾光源下),白色對應(yīng)的三基色(rgb)="" 都是="" 255。="" 而我們在實際中不可能是在無干擾的理論環(huán)境下。="" 那么這個白色也不是理論下的“白色”,那么對應(yīng)rgb就不是255了。既然白色都是不是標(biāo)準(zhǔn)的了,那么其他顏色的rgb肯定就不是標(biāo)準(zhǔn)的了。所以,我們得知道一個調(diào)整參數(shù),這個參數(shù)就是比例因子。="" 比如:在使用環(huán)境下,我們做白平衡,得到了rgb的值,分別是240,245,250,那么對應(yīng)的比例因子就是240="" 255,245="" 255,250="" 這樣,我們在檢測其他顏色的時候,得到rgb參數(shù)后,分別取乘上各自的比例因子。就可以得到更加真實的rgb值了。="" 然后,具體實現(xiàn)方法呢。="" 參考數(shù)據(jù)手冊。="" 里面介紹了兩種方法,第一種是脈沖計數(shù)到255,得到時間基數(shù);第二種是固定時間采集脈沖然后通過正比例轉(zhuǎn)化為255,得到一個調(diào)整參數(shù),也就是比例因子。="" 由于,網(wǎng)絡(luò)上基本都是采用第二種,我就介紹第二種方法。="" 個人實際上更加偏向第一種方法,更加的準(zhǔn)確和可靠。="" 對第二種方法而言,傳感器正對白色物體(光源也可)首先我們設(shè)置一個固定時間,比如為10ms。然后我們通過依次選通傳感器的檢測基色(每個通道都是10ms),分別得到三個脈沖個數(shù)的值,比如紅色為x個脈沖,綠色為y個脈沖,藍(lán)色為z個脈沖。然后a為紅色比例因子,b為綠色比例因子,c為藍(lán)色比例因子,那么a="255/X,B=255/Y,C=Z/255。" 這樣我們就完成了比例因子的計算。="" 然后,我們檢測其他顏色的時候,(這里注意,如果我們是采用10ms做的基本時間,那么檢測任何顏色下,程序中的檢測時間也需要設(shè)置為10ms)。分別得到rgb后,再分別乘以上面計算的比例就可以得到更加準(zhǔn)確的真實rgb值。="" 之后,我們把得到的rgb值,通過查表法對三原色值表進(jìn)行查表,可以就可以得到具體是什么顏色。這里肯能有的同學(xué)要問了,不可能每個rgb值都剛好和表里的值對應(yīng)啊。這里,我就要說,其實如果我們只是大概識別紅色,淺紅,深紅,這里我們已經(jīng)可以實現(xiàn)。如果還要細(xì)分,那么可以這樣,得到的rgb值首先查遍,如果沒有剛好直接能夠匹配的,我們可以找到相近的兩個參數(shù),然后通過插值法,再去判斷識別。="" 具體的rgb值表在網(wǎng)絡(luò)上可找到,實際程序中的查表法,可以使用二分法,插值法可以使用線性插值。僅僅個人建議。="" 最后,實際使用中,如果我們環(huán)境沒有發(fā)生變換只需要做一次白平衡就可以(也就是只計算一次比例因子),之后就用這個因子做處理就好了。="" 程序里面,我們可以設(shè)置一個命令或者按鍵,當(dāng)用戶按下按下或者收到這個命令后,才做白平衡。="" 這里就介紹完了。希望對有疑問的朋友能夠有幫助。="" 不過,那種還是只會問要代碼的!別再來找我!!!!="" 只要你理解了,根據(jù)網(wǎng)絡(luò)上提供的代碼,然后稍微加修改就可以完成白平衡(比例因的計算)。="" 補(bǔ)充下:="" 針對第一種時基方式,實際上更加可靠。還是大概說下,白平衡時候,利用mcu的pca功能,分別去捕捉rgb的輸出脈沖,直到捕獲到255個。="" 然后計算出rgb分別輸出255個脈沖的時間(pca模式下,捕獲功能可以計算出時間的).="" 然后,這個三個時間t1,t2,t3,以后就是我們?nèi)z測其他顏色輸出脈沖的限制時間。="" 舉例:檢測三原色中r的值,通過配置定時,比如配置為t1的時間長度,pca捕獲這個t1下輸出的脈沖個數(shù),這個脈沖個數(shù)就是r真實值了。然后再把定時器配置為t2的時間長度,pca捕獲t2下的脈沖,這個值就是g的值,b同理。="" 1="" qq圖片.png="" (121.7="" kb,="" 下載次數(shù):="" 29)="" (74.15="" 25)="" 17:25:38 ="" 評論="" 淘帖0="" 舉報="" 相關(guān)推薦=""
下一篇: PLC、DCS、FCS三大控
上一篇: 電氣控制線路圖控制原
型號:AR0330CM1C00SHAA0-DP2
價格:面議
庫存:10
訂貨號:AR0330CM1C00SHAA0-DP2
型號:OV03640-V56A
價格:面議
庫存:10
訂貨號:OV03640-V56A
型號:AR0140AT3C00XUEA0-DPBR2
價格:面議
庫存:10
訂貨號:AR0140AT3C00XUEA0-DPBR2
型號:AR0431CSSC14SMRA0-DP1
價格:面議
庫存:10
訂貨號:AR0431CSSC14SMRA0-DP1
型號:AR0134CSSM00SPCA0-DPBR2
價格:面議
庫存:10
訂貨號:AR0134CSSM00SPCA0-DPBR2
型號:NOIL1SM0300A-QDC
價格:面議
庫存:10
訂貨號:NOIL1SM0300A-QDC