一種優(yōu)化照片辨識(shí)度的HDR自適應(yīng)顏色映射方法
** @gmail.com
中國(guó)大學(xué) 4300**
摘要 現(xiàn)在的照片拍攝,其原始數(shù)據(jù)可以達(dá)到14bit以上的亮度分辨率顷歌,也就是214種亮度搁进,而一般的存儲(chǔ)格式中灼舍,jpg等格式僅能存儲(chǔ)8bit即256種亮度萧福,這就涉及到顏色的重映射。普通的映射方法是取一個(gè)窗口進(jìn)行線性映射擎值,但是在逆光(亮度分布過(guò)寬)慌烧、霧霾(亮度分布過(guò)窄)等情況下會(huì)出現(xiàn)高光溢出死白、照片發(fā)灰辨識(shí)度低等情況幅恋,丟失重要原始信息杏死。本文描述了一種把亮度或飽和度通過(guò)直方圖積分進(jìn)行重映射的方法,可以自動(dòng)適應(yīng)各種極端情況捆交,得到最優(yōu)化的顏色重映射方案淑翼,盡可能保留原始重要信息。
關(guān)鍵詞 HDR RAW 圖像優(yōu)化
1 緒論
隨著CMOS和CCD等光電感應(yīng)技術(shù)的不斷發(fā)展品追,現(xiàn)在數(shù)碼拍照玄括、數(shù)碼攝影已經(jīng)變得極其廉價(jià)而廣泛普及,并隨著智能手機(jī)的普及成為幾乎人人擁有的應(yīng)用肉瓦。而我們拍照時(shí)遭京,會(huì)出現(xiàn)各種原始圖片曝光不夠準(zhǔn)確等造成的圖片發(fā)灰、辨識(shí)度不高的現(xiàn)象泞莉。因此哪雕,對(duì)這些照片進(jìn)行自動(dòng)、自適應(yīng)優(yōu)化鲫趁,在不改變圖片大小的情況下盡可能保留原始信息斯嚎、提高圖形辨識(shí)度,成為一種廣泛的需求。
對(duì)于分辨率越來(lái)越高的數(shù)碼照片或者影片堡僻,基于人體對(duì)顏色的辨識(shí)能力人們發(fā)明了多種照片和影片壓縮方案糠惫,如JPG、MPEG等钉疫。這些壓縮方案的常見(jiàn)共同點(diǎn)是把亮度壓縮到了8bit硼讽,即28=256階亮度中。把原始數(shù)據(jù)壓縮到256階亮度的過(guò)程中牲阁,最常用的算法就是線性截取固阁,即以測(cè)光點(diǎn)為平均亮度(最大亮度的128/256倍)上下共256倍的亮度區(qū)間,在這個(gè)區(qū)間內(nèi)進(jìn)行均分為256階亮度的線性映射咨油。其他還有對(duì)數(shù)映射您炉,或者基于γ值的冪函數(shù)等方案,對(duì)于人眼而言顯然對(duì)數(shù)映射更為合理役电,但是計(jì)算量較大。
圖1 亮度直方圖模式下的映射窗口圖示 a 缺省映射 b 提高或者降低eV后的映射 c 提高或者降低對(duì)比度后的映射 d 改變?chǔ)弥岛蟮挠成?/p>
但是這種映射存在窗口過(guò)大或者過(guò)小的問(wèn)題棉胀。拍攝的原始數(shù)據(jù)中法瑟,即自然界中,亮度變化范圍遠(yuǎn)大于256階這個(gè)范圍唁奢。在逆光(物體背后即強(qiáng)光光源)等場(chǎng)合霎挟,如果把僅僅256倍亮度范圍的數(shù)據(jù)納入,就會(huì)出現(xiàn)低端過(guò)暗(亮度小于1或者接近1時(shí)對(duì)小數(shù)點(diǎn)后取整麻掸,失去信息)和高端過(guò)亮(亮度超過(guò)255被截?cái)嗳≌麨?55失去信息)的情況酥夭。而在拍攝霧中天氣時(shí),又會(huì)出現(xiàn)亮度范圍狹窄(如32.5~57.8)脊奋,原始信息包含小數(shù)點(diǎn)后信息熬北,在數(shù)字化取整后丟失這些信息,如果映射時(shí)未提高對(duì)比度诚隙,即使后期進(jìn)行提高對(duì)比度等數(shù)字操作也無(wú)法恢復(fù)的問(wèn)題讶隐。
對(duì)于最優(yōu)化拍攝,即獲取正確曝光的操作久又,選測(cè)光點(diǎn)巫延、改變曝光時(shí)間、光圈地消、改變eV都僅僅是改變映射窗口的中心點(diǎn)位置炉峰。改變對(duì)比度,會(huì)收窄或者展寬映射窗口脉执。對(duì)于大部分情況疼阔,可以看到直方圖中,亮度呈正態(tài)分布适瓦,選擇中心點(diǎn)就能正確曝光竿开。常見(jiàn)的自動(dòng)照片優(yōu)化谱仪,則會(huì)通過(guò)提高對(duì)比度來(lái)提高這種照片的辨識(shí)度,但是提高對(duì)比度的算法往往是線性的而不夠智能否彩,容易出現(xiàn)高光區(qū)溢出死白的現(xiàn)象疯攒。而提高飽和度會(huì)讓照片色彩更為鮮艷靚麗,但是提高飽和度造成飽和度溢出死紅丟失細(xì)節(jié)列荔,則更為常見(jiàn)敬尺,如市面的iPhone等手機(jī)自帶的圖片自動(dòng)優(yōu)化等。
當(dāng)亮度分布偏到直方圖一邊的情況下贴浙,我們會(huì)發(fā)現(xiàn)圖片過(guò)暗或者過(guò)亮砂吞。改變gamma值,即對(duì)亮度做如公式1的重映射(其中L為亮度除以256做歸一化取0~1之間的值)崎溃,可以讓畫(huà)面更好看蜻直,或者說(shuō)辨識(shí)度更高,或者說(shuō)袁串,在直方圖中分布更均勻概而。當(dāng)gamma<1時(shí),整體畫(huà)面變亮囱修,可以讓暗部更清晰赎瑰。當(dāng)gamma>1時(shí),整體畫(huà)面變暗破镰,可以讓亮部更清晰餐曼。我們可以看出,直方圖中亮度分布越均勻鲜漩,相對(duì)人眼的辨識(shí)度就越高源譬,看起來(lái)也就越好看。
公式1 Map(L)=Lgamma
圖2 gamma校正后的圖像與直方圖
2 直方圖均衡化算法
從對(duì)gamma值調(diào)整的結(jié)果來(lái)看宇整,我們可以看到瓶佳,通過(guò)調(diào)節(jié)亮度映射的密度,使得讓不同亮度的點(diǎn)的數(shù)目盡可能一致鳞青,能夠使得在畫(huà)面中盡可能保留原始信息霸饲。為此我們可以作如下映射:
令 c(x)為亮度為x的點(diǎn)的數(shù)目,即直方圖所代表的函數(shù)臂拓。s(x)為亮度小于x的點(diǎn)的數(shù)目占畫(huà)面總像素點(diǎn)的比例厚脉,那么假設(shè)f(x)為原始亮度為x的像素點(diǎn)在重映射后的亮度(對(duì)最大亮度做歸一化),則顯然有當(dāng)s(x)=p時(shí)胶惰,f(x)=p傻工。而s(x)為c(x)的積分除以常數(shù),所以有公式2:
$Map(x)=\frac \Sigma i=0,x Count(i) \Sigma i=0,max Count(i) 0<x<1$
這稱(chēng)為直方圖均衡化。(參考文獻(xiàn) 鈷-60數(shù)字輻射成像集裝箱檢測(cè)系統(tǒng),p111)考慮最簡(jiǎn)單的情況中捆,對(duì)于各種HDR鸯匹,或者RAW里面的映射,這種簡(jiǎn)單的映射已經(jīng)足夠泄伪。這種映射由于對(duì)信息密度做了最大化殴蓬,因此不管是高動(dòng)態(tài)范圍,還是發(fā)灰的低動(dòng)態(tài)范圍蟋滴,或者多亮度峰等復(fù)雜情況染厅,都能夠自動(dòng)處理而無(wú)需人為干預(yù)。
3 最優(yōu)化均勻映射方案津函,及其他進(jìn)一步優(yōu)化的討論
當(dāng)存在各種影響的時(shí)候肖粮,我們要給不同的亮度予以不同的權(quán)重:(公式3)
$Map(x)=\frac \Sigma i=0,x Count(i)W(i) \Sigma i=0,max Count(i)W(i) 0<x<1$
人眼近似可以看成對(duì)于圖案,只對(duì)其相對(duì)亮度比例敏感尔苦、而不在乎絕對(duì)亮度涩馆,所以比重應(yīng)該是 ln(x)的導(dǎo)數(shù),即1/x允坚,也就是說(shuō)如果是裸眼看自然物體那么顯然對(duì)數(shù)映射是信息密度最高的凌净。但是由于存在噪聲,所以當(dāng)x接近于零時(shí)我們不能得到無(wú)窮大的信息密度屋讶。假如噪聲強(qiáng)度為n,則從獨(dú)立概率假設(shè)须教,有效信息強(qiáng)度應(yīng)該近似為ln(\sqrt(x2+n2))的導(dǎo)數(shù)皿渗。對(duì)于數(shù)碼圖像,噪聲大小和ISO轻腺、CCD大小乐疆、工作溫度都有關(guān)系,常見(jiàn)的小底手機(jī)拍照贬养,平均噪點(diǎn)強(qiáng)度大于5/256是很正常的挤土。使用信息密度作為權(quán)重顯然有利于進(jìn)一步提高亮度中信息的有效利用。
圖3 γ值和對(duì)數(shù)密度之間的差異
一般而言误算,我們把這種人眼對(duì)低亮度更敏感的特點(diǎn)用gamma值來(lái)表示(gamma=0.454)仰美,并使用類(lèi)似gamma值的感光元件,和倒數(shù)gamma值(約2.2)的顯示器儿礼。在日常拍攝中咖杂,這個(gè)缺省設(shè)定已經(jīng)代表了信息存儲(chǔ)的最佳密度,即已經(jīng)無(wú)需調(diào)整蚊夫。但是诉字,gamma值公式和ln(\sqrt(x2+n2))的對(duì)數(shù)導(dǎo)數(shù)推算的信息密度雖然趨勢(shì)相似、還是有一定差異的,并且在套用公式3時(shí)壤圃,對(duì)于暗部地區(qū)陵霉,顯然先調(diào)整gamma值再計(jì)算和計(jì)算后調(diào)整gamma值對(duì)最后結(jié)果還是有一定影響的。
不過(guò)伍绳,我們認(rèn)為僅僅對(duì)于人眼gamma值的校正準(zhǔn)確程度踊挠,對(duì)公式3的影響并不值得付出對(duì)應(yīng)的巨大計(jì)算量的代價(jià)。但是對(duì)于顯示器則不然墨叛。大多數(shù)顯示器是CRT或者液晶的止毕,對(duì)于低光(小于15/255)或者高光(240/255)的像素點(diǎn),由于已經(jīng)超出顯示器亮度的線性區(qū)漠趁,并不能完美表現(xiàn)正確的亮度扁凛,所以,我們認(rèn)為應(yīng)該避開(kāi)這些區(qū)域闯传,具體而言就是給予這個(gè)區(qū)間的像素更高的權(quán)重谨朝,讓他們占據(jù)更多的亮度區(qū)間。
另外一個(gè)需要考慮的就是直方圖均衡化甥绿,面積大并不一定總代表重要字币。當(dāng)畫(huà)面背景有大片的純色背景時(shí),可能少數(shù)非背景的圖案才是重要的共缕,如果完全靠數(shù)量決定洗出,這些非背景的像素亮度寬度可能會(huì)被壓縮到過(guò)小的地步。因此图谷,公式3中的權(quán)重應(yīng)該做截?cái)嗵幚眙婊睿?dāng)Count(i)大于閾值時(shí)截?cái)酁殚撝怠W鳛榻?jīng)驗(yàn)值便贵,我認(rèn)為閾值每1/255亮度間隔取1%~5%面積比較好菠镇。
克服上述現(xiàn)象的另外一個(gè)辦法,就是使用和相鄰點(diǎn)的相對(duì)亮度差異作為權(quán)重承璃±#考慮到每點(diǎn)都進(jìn)行計(jì)算相對(duì)差異計(jì)算量較大,也容易引進(jìn)噪點(diǎn)帶來(lái)的虛假權(quán)重盔粹,我認(rèn)為對(duì)原圖做1/8尺寸比例縮略圖進(jìn)行絕對(duì)亮度差異(以10/255為截?cái)嗌舷蓿闄?quán)重的直方圖均衡化是一個(gè)比較好的選擇隘梨。
4 偽代碼
init();
for i=1 to picsize
begin
lum=pixal[i];//取某點(diǎn)的亮度
d=abs(lum-pixal[next(i)]);//和鄰近點(diǎn)的亮度差異
if(d>threshhold_delta)d=10;//亮度差異過(guò)高會(huì)造成畸形矯正
count[lum]=count[lum]+d;//累計(jì)本亮度的重要性
end
for i=0 to max_lum
begin
if(sigma_lum>threshhold_lum)sigma_lum=threshhold_lum;//扣除特殊情況
//也可以對(duì)sigma_lum做對(duì)數(shù)處理以消除過(guò)高估計(jì)
sigma_lum[i]=sigma_lum[i-1]+count[lum];//
end
total_lum=sigma_lum[max_lum];
for i=0 to max_lum
begin
map_lum[i]=sigma_lum[i]*255/total_lum;
end
如果原始亮度帶有小數(shù)點(diǎn)后精度,我們首先對(duì)亮度取整玻佩,用上述方法得到映射表后進(jìn)行線性插值即可出嘹。如果原始亮度是分紅綠藍(lán)三原色,可以考慮取三分量中最大值作為上述算法的count的下標(biāo)亮度值咬崔,d作為亮度差異可以選三原色亮度差異的總和税稼。
5 對(duì)于飽和度調(diào)整的改進(jìn)
本方法對(duì)于亮度的調(diào)整烦秩,已經(jīng)有人探討。但是對(duì)于圖像飽和度的調(diào)整郎仆,如果僅僅根據(jù)HSL空間做線性增加只祠,很容易出現(xiàn)高光色彩溢出的現(xiàn)象。解決的辦法是對(duì)飽和度增加扰肌,不是采用直接原飽和度乘增加量的方法抛寝,而是用一個(gè)簡(jiǎn)單的映射函數(shù),這個(gè)函數(shù)命名為f的話(huà)曙旭,有f(0)=0,f(1)=1且單調(diào)上升且可參數(shù)調(diào)整盗舰。最簡(jiǎn)單的函數(shù)就是冪函數(shù),即類(lèi)似亮度的gamma調(diào)整桂躏,即公式1钻趋,可調(diào)參數(shù)即γ值。
其他可用的函數(shù)有倒數(shù)函數(shù)等剂习,如f(x)=a-c/(x+1)蛮位。網(wǎng)頁(yè)(http://blog.csdn.net/maozefa/article/details/1781208)描述了一種根據(jù)photoshop處理結(jié)果猜測(cè)的算法。
而能夠自適應(yīng)處理鳞绕,自動(dòng)做最大飽和度失仁,但是不出現(xiàn)飽和度溢出和亮度溢出,從而使得色彩自然的们何,上述的直方圖均衡化方法顯然更為適合萄焦,只不過(guò)均衡化的不是亮度而是飽和度而已。
6 結(jié)論
本方法通過(guò)直方圖均衡化冤竹,可以將灰度圖和彩色圖的飽和度進(jìn)行辨識(shí)度最高為目標(biāo)的自適應(yīng)優(yōu)化楷扬,替代常見(jiàn)的各種照片自動(dòng)優(yōu)化方法,避免自動(dòng)提高亮度和對(duì)比度時(shí)出現(xiàn)高光溢出現(xiàn)象贴见,和提高過(guò)飽和度時(shí)的色彩溢出現(xiàn)象。同時(shí)躲株,本算法考慮了處理速度的問(wèn)題片部,并且對(duì)簡(jiǎn)單的根據(jù)亮度分布直方圖可能造成的錯(cuò)誤調(diào)整做了改進(jìn),