【圖像基礎教程】直方圖均衡化

2021-01-20 天天Matlab
一、直方圖均衡化概述

  直方圖均衡化(Histogram Equalization) 又稱直方圖平坦化,實質上是對圖像進行非線性拉伸,重新分配圖像象元值,使一定灰度範圍內象元值的數量大致相等。這樣,原來直方圖中間的峰頂部分對比度得到增強,而兩側的谷底部分對比度降低,輸出圖像的直方圖是一個較平的分段直方圖:如果輸出數據分段值較小的話,會產生粗略分類的視覺效果。[1]

 根據香農定理關於信息熵的定義: 

  對於一副圖像而言,當每一個灰度值分布更均衡,圖像所包含的信息量是越大的;相反,僅僅只有一個灰度值的時候,信息量很少。這個是我們能夠想來的比如:純黑圖像包含信息量很少,而其他圖像我們可能會看到一些人物、景物。

  就效果而言,直方圖均衡化使得圖像信息量變大,但是不可能會發生較小的灰度值在經過均衡化後變得比原來較大的灰度值更大。這也就意味著,我們通過均衡化後的圖所觀察到的景物應當與原來圖像所觀察到的一致,只是顏色層次更清晰,更加具有辨識度。

二、直方圖均衡化算法

它首先是一種灰度級變換的方法,原來的灰度範圍[r0,rk]變換到[s0,sk]變換函數為:s=T(r);為便於實現,可以用查找表(look-up table)的方式存儲,即:原始的灰度作為查找表的索引,表中的內容是新的灰度值。其次,直方圖均衡化是圖像增強的一種基本方法,可提高圖像的對比度,即:將較窄的圖像灰度範圍以一定規則拉伸至較大(整個灰度級範圍內)的範圍。目的是在得到在整個灰度級範圍內具有均勻分布的圖像。

 

所以,當輸入:直方圖H(r)【此處指每個灰度級佔有的像素數】;灰度級範圍[r0,rk];目的是找到一個s=T(r)使得輸出圖像的直方圖G(s)【同指】在整個灰度級範圍內均勻分布。且需滿足

 

(1)0—L(灰度範圍)單調遞增,避免黑白顛倒;

 

(2)0<r<L,時0<s<L,保持動態範圍一致。

 

累積分布函數滿足這幾個要求。

 


 若圖像有M*N個像素,則均衡化後的直方圖G(q)就有均勻分布:

 

 

代入上式:

 

轉換成離散形式:

 

 

clc;clear;set(0,'defaultfigurecolor','w')RGB = imread('1.png'); % 讀取彩色圖subplot(2,2,1);imshow(RGB);title('彩色圖'); fx=rgb2gray(RGB);subplot(2,2,2);imshow(fx);title('灰度圖');% subplot(2,2,3);imhist(fx);title('灰度圖'); [R, C] = size(fx); % 統計每個像素值出現次數count = zeros(1, 256);for i = 1 : R    for j = 1 : C        count(1, fx(i, j) + 1) = count(1, fx(i, j) + 1) + 1;    endend%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%一下編寫T函數[2]T = zeros(1, 256);T = double(T); count = double(count); % 統計每個像素值出現的概率, 得到概率直方圖for i = 1 : 256    T(1, i) = count(1, i) / (R * C);end % 求累計概率,得到累計直方圖for i = 2 : 256    T(1, i) = T(1, i - 1) + T(1, i);end % 完善T函數的定義for i = 1 : 256    T(1, i) = T(1, i) * 255;end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 完成每個像素點的映射fy = double(fx);for i = 1 : R    for j = 1 : C        fy(i, j) = T(1, fy(i, j) + 1);    endend % 輸出仍然要記得改數據類型fy = uint8(fy);subplot(2,2,3);imshow(fy);title('直方圖均衡化');subplot(2,2,4);imhist(fy);title('直方圖均衡化');


往期回顧>>>>>>


相關焦點

  • Metal圖像處理——直方圖均衡化
    如圖,對於某些圖像,可能出現顏色值集中分布在某個區間的情況。直方圖均衡化(Histogram Equalization) ,指的是對圖像的顏色值進行重新分配,使得顏色值的分布更加均勻。2、CPU進行直方圖均衡化處理;2.1 把UIImage轉成Bytes;2.2 顏色統計;      Byte *color = (Byte *)spriteData;    for (int i = 0; i < width * height; +
  • 深入理解OpenCV+Python直方圖均衡化
    直方圖均衡化是圖像處理領域中利用圖像直方圖對對比度進行調整的方法。
  • OpenCV-Python 直方圖-2:直方圖均衡|二十七
    目標在本節中,我們將學習直方圖均衡化的概念,並利用它來提高圖像的對比度。理論考慮這樣一個圖像,它的像素值僅局限於某個特定的值範圍。例如,較亮的圖像將把所有像素限制在高值上。但是一幅好的圖像會有來自圖像所有區域的像素。
  • 紅外圖像處理中平臺實時直方圖均衡器的SoC實現
    O引言  直方圖均衡是紅外圖像處理中簡單有效的一種圖像增強方法[1]。直方圖均衡器在增強目標的同時也放大了背景和噪聲信號,因此有人提出了平臺直方圖均衡算法,該算法能達到增強目標且較好地抑制背景和噪聲的目的[2,5],具有很大的應用價值。
  • 用Keras和「直方圖均衡」為深度學習實現「圖像擴充」
    在本文中,我們將討論一些常見的、富有創意的方法,這些方法也是Keras深度學習庫為擴充圖像數據所提供的。之後我們將討論如何轉換keras預處理圖像文件,以啟用直方圖均衡法。我們將使用Keras附帶的cifar10數據集,但是為了使任務小到能夠順利在CPU上執行,我們將只會使用其中的貓和狗的圖像。首先,我們需要加載cifar10數據集並格式化其中的圖像,為卷積神經網絡做好準備。
  • 基於直方圖的圖像增強算法(HE、CLAHE、Retinex)之(一)
    直方圖是圖像色彩統計特徵的抽象表述。基於直方圖可以實現很多有趣的算法。例如,圖像增強中利用直方圖來調整圖像的對比度、有人利用直方圖來進行大規模無損數據隱藏、還有人利用梯度直方圖HOG來構建圖像特徵進而實現目標檢測。
  • Matlab圖像增強與復原技術在SEM圖像中的應用
    1圖像處理方法  1.1 直方圖均衡化  直方圖均衡化(Histogran Equalization,HE)是利用直方圖的統計數據進行直方圖的修改,能有效地處理原始圖像的直方圖分布情況,使各灰度級具有均勻的概率分布,通過調整圖像的灰度值的動態範圍,自動地增加整個圖像的對比度,以使圖像具有較大的反差,大部分細節清晰。
  • 一種自適應紅外圖像增強處理的FPGA實現
    本文根據上述特點設計了基於FPGA的紅外圖像處理系統,該系統採用自適應直方圖均衡化圖像增強處理後,紅外圖像視覺效果明顯改善,對比度增強,成像效果理想。  自適應平臺直方圖算法研究  紅外圖像是場景熱輻射分布所成的圖像,由於場景中的目標和背景的溫差相對較小,所以紅外圖像具有高背景、低反差的特點,其信噪比也比可見光圖像低。為了從紅外圖像中正確地識別目標,必須對紅外圖像進行增強處理。
  • MATLAB圖像處理之圖像增強(二)
    uint8(H);figure,subimage(E)變換前(左)後(右)圖像對比直方圖灰度變換是最常用的實現圖像灰度變換的方法,值得我們重點討論。我們還是重點來學習直方圖灰度變換用到的函數以及實現的代碼和達到的效果:實現函數imhist函數用來計算和顯示圖像的直方圖 imhist(I) imhist(I,n) %I代表灰度圖像,n為指定的灰度級數目,默認值為256 imhist(X,map) %X為索引圖像
  • 圖像算法工程師必備:灰度直方圖
    圖像的灰度直方圖,大概是數字圖像處理專業課接觸到的第一節講圖像具體算法的一堂課了。所謂的灰度直方圖,就是統計一個8比特的灰度圖像,其灰度等級從0到255的像素的分布情況。我們很容易就能想到,一幅圖像對應唯一的直方圖,而同一直方圖肯定會對應很多不同的圖像。
  • 光電圖像處理 | 一起來消費電量
    I = imread('圖片1.png');%讀取圖像I = uint8(rgb2gray(I));subplot(121),imshow(I); %顯示原圖像subplot(122),imhist(I); %顯示其直方圖title('直方圖')
  • 圖像學習之如何理解方向梯度直方圖(Histogram Of Gradient)
    特徵描述子(Feature Descriptor)特徵描述子就是圖像的表示,抽取了有用的信息,丟掉了不相關的信息。通常特徵描述子會把一個w*h*3(寬高3,3個channel)的圖像轉換成一個長度為n的向量/矩陣。比如一副64*128*3的圖像,經過轉換後輸出的圖像向量長度可以是3780。什麼樣子的特徵是有用的呢?
  • 圖像增強、銳化,利用 Python-OpenCV 來實現 4 種方法!
    圖像增強目的使得模糊圖片變得更加清晰、圖片模糊的原因是因為像素灰度差值變化不大,圖片各區域產生視覺效果似乎都是一樣的, 沒有較為突出的地方,看起來不清晰的感覺解決這個問題的最直接簡單辦法,放大像素灰度值差值、使圖像中的細節更加清晰。目前較為常用的幾個方法:伽馬變換、線性變換、分段線性變換、直方圖均衡化,對於圖像對比度增強,都能取得不錯的效果!
  • OpenCV-Python 直方圖-4:直方圖反投影|二十九
    它用於圖像分割或在圖像中查找感興趣的對象。簡而言之,它創建的圖像大小與輸入圖像相同(但只有一個通道),其中每個像素對應於該像素屬於我們物體的概率。用更簡單的話來說,與其餘部分相比,輸出圖像將在可能有對象的區域具有更多的白色值。好吧,這是一個直觀的解釋。(我無法使其更簡單)。直方圖反投影與camshift算法等配合使用。
  • 利用CLAHE實現低光照圖像增強
    二、CLAHE1.簡述CLAHE同普通的自適應直方圖均衡不同的地方主要是其對比度限幅。這個特性也可以應用到全局直方圖均衡化中,即構成所謂的限制對比度直方圖均衡(CLAHE),但這在實際中很少使用。在CLAHE中,對於每個小區域都必須使用對比度限幅。CLAHE主要是用來克服AHE的過度放大噪音的問題。這主要是通過限制AHE算法的對比提高程度來達到的。
  • CLAHE算法實現圖像增強「AI工程論」
    ,主要用在醫學圖像上面。CLAHE起到的作用簡單來說就是增強圖像的對比度的同時可以抑制噪聲CLAHE的英文是Contrast Limited Adaptive Histogram Equalization 限制對比度的自適應直方圖均衡。
  • Matlab數字圖像處理初步
    圖像的直方圖顯示與均衡化imhist(A)可繪製圖像的灰度直方圖,統計各灰度出現頻率B = histeq(A)可將矩陣A進行灰度均衡化(一般增大對比度)I=imread('peppers.png');    %讀取圖像並在左上角顯示其灰度I=rgb2gray(I); figure;subplot(2,2,1);imshow(I);title('原始圖像');subplot(2,2,2);   %繪製直方圖imhist(I);title('原始圖像直方圖');I1=histeq(I);        %圖像均衡化後的效果
  • 高清成像技術讓條碼圖像更清晰
    在研究中使用高性能的單眼相機進行條碼圖像採集,實驗中抓取的圖像,如圖2所示。,比如可去除圖像採集中電子噪聲影響,提高圖像的清晰度。強化圖像高頻分量,突出條碼圖像條的部分,使圖像中物體輪廓清晰,細節明顯;強化低頻分量,可減少圖像噪聲的幹擾。為達到分析處理目的,在研究過程中,人為添加了高斯、椒鹽噪聲,經過中值濾波處理條碼圖像得到較好的復原,結果如圖4、5所示。
  • 結合實例與代碼談數字圖像處理都研究什麼?
    下面給出的12個大的方向,系我認為可以看成是基礎性領域的部分,而且它們之間還互有交叉本文引用地址:http://www.eepw.com.cn/article/201702/344134.htm  1、圖像的灰度調節  圖像的灰度直方圖、線性變換、非線性變換(包括對數變換、冪次變換、指數變換等)、灰度拉伸、灰度均衡、直方圖規定化等等)。
  • OpenCV-Python 直方圖-3:二維直方圖|二十八
    OpenCV中的二維直方圖它非常簡單,並且使用相同的函數cv.calcHist()進行計算。 對於顏色直方圖,我們需要將圖像從BGR轉換為HSV。(請記住,對於一維直方圖,我們從BGR轉換為灰度)。它將是一幅灰度圖像,除非您知道不同顏色的色相值,否則不會對其中的顏色有太多了解。方法2:使用Matplotlib我們可以使用matplotlib.pyplot.imshow()函數繪製具有不同顏色圖的2D直方圖。它使我們對不同的像素密度有了更好的了解。