之前在用LBP做單樣本人臉識(shí)別的時(shí)候蜒什,對(duì)于光照角度太大或者光線太暗的情況并不是很好,出錯(cuò)的概率還是很大霎冯,老師推薦用直方圖均衡化先對(duì)大圖做一下預(yù)處理钞瀑。?
直方圖均衡化的主要思想是對(duì)像素個(gè)數(shù)較多的灰度級(jí)進(jìn)行展寬沈撞,而對(duì)于像素個(gè)數(shù)較少的灰度級(jí)進(jìn)行壓縮。
在處理過(guò)程中缠俺,直方圖均衡化分為四個(gè)部分:
(1) 統(tǒng)計(jì)每個(gè)像素點(diǎn)的個(gè)數(shù)并計(jì)算分布密度
(2)計(jì)算直方圖分布
(3)計(jì)算每個(gè)像素值均衡化之后的值显晶,并取整
(4) 均衡化原始圖片
Matlab具體實(shí)現(xiàn)代碼如下:
function equ_image = equalization( image )
? ? [row,column] = size(image);壹士、
? ? ?%統(tǒng)計(jì)像素值的分布密度
? ? ?pixelNum=zeros(1,256);
? ? ?for i=0:255
? ? ? ? ? pixelNum(i+1)=length(find(image==i))/(row*column*1.0);
? ? ?end
? ? ?%計(jì)算直方圖分布
? ? ?pixelEqualize=zeros(1,256);
? ? ?for i=1:256
? ? ? ? ? if i==1
? ? ? ? ? ? ? pixelEqualize(i)=pixelNum(i);
? ? ? ? ? else
? ? ? ? ? ? ? pixelEqualize(i)=pixelEqualize(i-1)+pixelNum(i);
? ? ? ? ? end
? ? ?end
? ? ?%取整
? ? ?pixelEqualize=round(256 .* pixelEqualize +0.5);
? ? ?%均衡化
? ? ?for i=1:row
? ? ? ? ? for j=1:column
? ? ? ? ? ? ? ?equ_image(i,j)=pixelEqualize(image(i,j)+1);
? ? ? ? ? end
? ? ? end
end
例子: