<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于直方圖的圖像增強算法(HE、CLAHE、Retinex)之(一)

基于直方圖的圖像增強算法(HE、CLAHE、Retinex)之(一)

作者: 時(shí)間:2017-02-23 來(lái)源:網(wǎng)絡(luò ) 收藏

  是圖像色彩統計特征的抽象表述?;?a class="contentlabel" href="http://dyxdggzs.com/news/listbylabel/label/直方圖">直方圖可以實(shí)現很多有趣的算法。例如,中利用來(lái)調整圖像的對比度、有人利用直方圖來(lái)進(jìn)行大規模無(wú)損數據隱藏、還有人利用梯度直方圖HOG來(lái)構建圖像特征進(jìn)而實(shí)現目標檢測。本節我們就來(lái)討論重要的直方圖均衡化算法,說(shuō)它重要是因為以此為基礎后續又衍生出了許多實(shí)用而有趣的算法。

本文引用地址:http://dyxdggzs.com/article/201702/344363.htm

  Histogram equalization

  如果一幅圖像的像素灰度值在一個(gè)過(guò)于有限的范圍內聚集,那么圖像的程序效果即會(huì )很糟糕,直接觀(guān)感就是對比度很弱。下圖來(lái)自維基百科,第一幅圖的直方圖分布非常不均衡。如果把直方圖均勻地延展到整個(gè)分布域內,則圖像的效果顯得好了很多。

    

 

  Matlab中提供了現成的函數“histeq()”來(lái)實(shí)現圖像的直方圖均衡。但為了演示說(shuō)明算法的原理,下面我將在Matlab中自行編碼實(shí)現圖像的直方圖均衡。通過(guò)代碼來(lái)演示這個(gè)算法顯然更加直觀(guān),更加易懂。當然,其實(shí)我還不得不感嘆,如果僅僅是作為圖像算法研究之用,Matlab確實(shí)非常好用。

  首先讀入圖像,并將其轉化為灰度圖。然后提取圖像的長(cháng)和寬。

  image = imread('Unequalized_Hawkes_Bay_NZ.jpg');

  Img = rgb2gray(image);

  [height,width]=size(image);

  然后繪制一下原始圖像的直方圖。

  [plain] view plain copy

  [counts1, x] = imhist(Img,256);

  counts2 = counts1/height/width;

  stem(x, counts2);

    

 

  統計每個(gè)灰度的像素值累計數目。

  NumPixel = zeros(1,256);%統計各灰度數目,共256個(gè)灰度級

  for i = 1:height

  for j = 1: width

  %對應灰度值像素點(diǎn)數量增加一

  %因為NumPixel的下標是從1開(kāi)始,但是圖像像素的取值范圍是0~255,所以用NumPixel(Img(i,j) + 1)

  NumPixel(Img(i,j) + 1) = NumPixel(Img(i,j) + 1) + 1;

  end

  end

  然后將頻數值算為頻率

  ProbPixel = zeros(1,256);

  for i = 1:256

  ProbPixel(i) = NumPixel(i) / (height * width * 1.0);

  end

  再用函數cumsum來(lái)計算cdf,并將頻率(取值范圍是0.0~1.0)映射到0~255的無(wú)符號整數。

  CumuPixel = cumsum(ProbPixel);

  CumuPixel = uint8(255 .* CumuPixel + 0.5);

  直方圖均衡。賦值語(yǔ)句右端,Img(i,j)被用來(lái)作為CumuPixel的索引。比如Img(i,j) = 120,則從CumuPixel中取出第120個(gè)值作為Img(i,j) 的新像素值。

  for i = 1:height

  for j = 1: width

  Img(i,j) = CumuPixel(Img(i,j));

  end

  end

  最后顯示新圖像的直方圖。

  imshow(Img);

  [counts1, x] = imhist(Img,256);

  counts2 = counts1/height/width;

  stem(x, counts2);

    

 

  當然,上述討論的是灰度圖像的直方圖均衡。對于彩色圖像而言,你可能會(huì )想到分別對R、G、B三個(gè)分量來(lái)做處理,這也確實(shí)是一種方法。但有些時(shí)候,這樣做很有可能導致結果圖像色彩失真。因此有人建議將RGB空間轉換為HSV之后,對V分量進(jìn)行直方圖均衡處理以保存圖像色彩不失真。下面我們來(lái)做一些對比實(shí)驗。待處理圖像是標準的圖像處理測試用圖couple圖,如下所示。

    

 

  首先,我們分別處理R、G、B三個(gè)分量,為了簡(jiǎn)便我們直接使用matlab中的函數histeq()。

  a = imread('couple.tiff');

  R = a(:,:,1);

  G = a(:,:,2);

  B = a(:,:,3);

  R = histeq(R, 256);

  G = histeq(G, 256);

  B = histeq(B, 256);

  a(:,:,1) = R;

  a(:,:,2) = G;

  a(:,:,3) = B;

  imshow(a)

  下面的代碼使用了另外一種方式,即將色彩空間轉換到HSV后,對V通道進(jìn)行處理。由于代碼基本與前面介紹的一致,這里我們不再做過(guò)多解釋了。

  Img = imread('couple.tiff');

  hsvImg = rgb2hsv(Img);

  V=hsvImg(:,:,3);

  [height,width]=size(V);

  V = uint8(V*255);

  NumPixel = zeros(1,256);

  for i = 1:height

  for j = 1: width

  NumPixel(V(i,j) + 1) = NumPixel(V(i,j) + 1) + 1;

  end

  end

  ProbPixel = zeros(1,256);

  for i = 1:256

  ProbPixel(i) = NumPixel(i) / (height * width * 1.0);

  end

  CumuPixel = cumsum(ProbPixel);

  CumuPixel = uint8(255 .* CumuPixel + 0.5);

  for i = 1:height

  for j = 1: width

  V(i,j) = CumuPixel(V(i,j));

  end

  end

  V = im2double(V);

  hsvImg(:,:,3) = V;

  outputImg = hsv2rgb(hsvImg);

  imshow(outputImg);

  最后,來(lái)對比一下不同方法對彩色圖像的處理效果。下面的左圖是采用R、G、B三分量分別處理得到的結果。右圖是對HSV空間下V通道處理之結果。顯然,右圖的效果更理想,而左圖則出現了一定的色彩失真。事實(shí)上,對彩色圖像進(jìn)行直方圖均衡是圖像處理研究領(lǐng)域一個(gè)看似簡(jiǎn)單,但是一直有人在研究的話(huà)題。我們所說(shuō)的對HSV空間中V分量進(jìn)行處理的方法也是比較基本的策略。很多相關(guān)的研究文章都提出了更進(jìn)一步的、適應性更強的彩色圖像直方圖均衡化算法。有興趣的讀者可以參閱相關(guān)文獻以了解更多。

    

 

  分別處理R、G、B三個(gè)分量之結果 轉換到HSV空間后處理V分量

  這是本系列文章的第一篇,在下一篇文章中我們將要討論CLAHE算法,也就是限制對比度的自適應直方圖均衡算法。



關(guān)鍵詞: 直方圖 圖像增強

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>