【圖像算法&MATLAB】直方圖均衡(乾貨代碼)

2021-02-19 碼書新工場

本文內容來自博客專欄《DIP數字圖像處理》

更多內容請點擊閱讀原文

1

前言


直方圖均衡(Histogram equalization)是利用直方圖分布,計算累加函數,按照累加函數做映射,能夠提升圖像對比度。
本文我會從每一個小的步驟編寫,說明,並給出每一階段的結果,讓你完全搞懂其原理。
直方圖均衡示例:

2

代碼


2.1 自己寫一個

還是那句話, 【要想搞明白真正原理,尤其你是做圖像算法的,還是得自己動手寫】
代碼如下:

%直方圖均衡Histogram equalization 原始碼Iin = imread('tire.tif');[numRows,numCols]=size(Iin);numBins=2^8;%直方圖統計,概率分布函數pdf(Probability distribution function)pdf=zeros(1,numBins);for ii=1:numRows for jj=1:numCols pdf(Iin(ii,jj)+1)=pdf(Iin(ii,jj)+1)+1; endendfigure()plot(pdf,'.-');grid on;title('直方圖統計');%累加直方圖得到,累加函數cdf(Cumulative distribution function)cdf=cumsum(pdf);cdf=cdf./cdf(end); %歸一化處理figure()plot(cdf,'.-');grid on;title('直方圖累加函數計算');
% 根據累加函數映射Iout=zeros(numRows,numCols);for ii=1:numRows for jj=1:numCols Iout(ii,jj)=255*cdf(Iin(ii,jj)+1); endendfigure()imshow([Iin,Iout]);title('左:原圖 右:處理圖')

2.2 使用Matlab 自帶函數histeq

%直方圖均衡 Histogram equalizationIin = imread('tire.tif');Iout=histeq(Iin);imshow([Iin,Iout]);title('左:原圖 右:處理圖')

3

總結


直方圖均衡方法是一種很好的圖像對比度提升方法,但是並不適應所有場景,所以需要在其基礎上做改進,歷來學者做了不少創新。
不過,這種處理思想以及上述代碼,是經典,先搞懂經典,再去優化。

【END】

本文內容來自博客專欄《DIP數字圖像處理》

更多內容請掃碼或者點擊閱讀原文

相關焦點

  • 圖像增強 | 直方圖均衡化
    通過這種方法,亮度可以更好地在直方圖上分布。這樣就可以用於增強局部的對比度而不影響整體的對比度,直方圖均衡化通過有效地擴展常用的亮度來實現這種功能。為了更好的理解直方圖均衡化算法,我們先來了解一下灰度直方圖的相關概念。灰度直方圖:灰度值的函數,描述的是圖像中具有該灰度值的像素的個數/頻數。
  • matlab處理圖像代碼
    2、灰度直方圖及直方圖均衡化灰度直方圖用於顯示圖像的灰度值分布情況,是數字圖像處理中最簡單和最實用的工具。MATLAB中提供了專門繪製直方圖的函數imhist()。用它可以很簡單的繪製出一幅圖像的灰度直方圖(見例2)。
  • 基於直方圖的圖像增強算法(HE、CLAHE、Retinex)之(二)
    作為圖像增強算法系列的第二篇文章,下面我們將要介紹功能強大、用途廣泛、影響深遠的對比度有限的自適應直方圖均衡(CLAHE,Contrast Limited Adaptive Histogram Equalization)算法。
  • 圖像增強 | CLAHE 限制對比度自適應直方圖均衡化
    1 基本概述CLAHE是一個比較有意思的圖像增強的方法,主要用在醫學圖像上面。之前的比賽中,用到了這個,但是對其算法原理不甚了解。在這裡做一個復盤。CLAHE起到的作用簡單來說就是增強圖像的對比度的同時可以抑制噪聲CLAHE的英文是Contrast Limited Adaptive Histogram Equalization 限制對比度的自適應直方圖均衡。
  • OpenCV-Python 直方圖-2:直方圖均衡|二十七
    目標在本節中,我們將學習直方圖均衡化的概念,並利用它來提高圖像的對比度。理論考慮這樣一個圖像,它的像素值僅局限於某個特定的值範圍。例如,較亮的圖像將把所有像素限制在高值上。但是一幅好的圖像會有來自圖像所有區域的像素。
  • OpenCV系列之直方圖-2:直方圖均衡 | 二十七
    例如,較亮的圖像將把所有像素限制在高值上。但是一幅好的圖像會有來自圖像所有區域的像素。因此,您需要將這個直方圖拉伸到兩端(如下圖所示,來自wikipedia),這就是直方圖均衡化的作用(簡單來說)。這通常會提高圖像的對比度。我建議您閱讀直方圖均衡化上的Wikipedia頁面,以獲取有關它的更多詳細信息。它很好地解釋了示例,使您在閱讀完之後幾乎可以理解所有內容。
  • OpenCV使用python實現限制對比度的自適應直方圖均衡化
    職場知識前面講到的自適應直方圖均衡化的實現方法首先是將圖像劃分成不重疊的區域塊,讓後對每個塊分別進行直方圖均衡化處理。如果在圖像有噪聲的情況下這樣處理,在每個被分割的小區域塊中的噪聲就會被放大。為了避免噪聲對圖像均衡化的影響,這裡使用了限制對比度的自適應直方圖均衡化來處理圖像的直方圖均衡化。
  • OpenCV中圖像直方圖與應用
    OpenCV中圖像直方圖與應用圖像直方圖數據在圖像處理中應用十分廣泛,根據直方圖數據不同常見的有如下三種:- 圖像像素直方圖、
  • MATLAB比較圖像的相似度-圖像搜索算法
    關注我們獲得更多精彩內容一、圖像相似度計算相關原理通過圖片進行搜索相似圖標的算法實現是:利用感知「感知哈希算法」,就是每一張圖片都按照某種桂林生成唯一的「標識」,通過對「標識」進 比較,那麼可以判斷兩張照片是相似以及相似程度。
  • 大神帶你玩轉matlab圖像處理(五)
    A:原圖像,B:結果圖將真彩色圖像B轉換為灰度圖像A。imbinarize使用256-bin圖像直方圖來計算Otsu的閾值。要使用其他直方圖,請參見otsuthresh。B=imbinarize(A,method)使用方法「 global」或「 adaptive」指定的閾值處理方法從圖像A創建二進位圖像。B=imbinarize(A,T)使用閾值T從圖像A創建二進位圖像。
  • 用Keras和「直方圖均衡」為深度學習實現「圖像擴充」
    這麼做非常簡單,但是我在這裡省略了代碼和圖像,是因為我們在沒有看到原始圖像的情況下,無法判斷一張貓狗的圖像是否被水平翻轉了。這些方法有時也被稱作「直方圖拉伸」,因為它們會使用像素強度的分布,並擴展這些分布以適應更大範圍的值,從而提高圖像中最亮和最暗部分之間的對比度。直方圖均衡法通過檢測圖像的像素強度分布,並繪製出一個像素強度直方圖,從而提高圖像的對比度。之後,這個直方圖的分布會被進行分析,如果分析結果顯示還有未被利用的像素亮度範圍,那麼這個直方圖就會被「擴展」,以涵蓋這些未被利用的範圍。然
  • OpenCV基礎 | 9.直方圖及直方圖均衡化
    直方圖均衡化希望一幅圖像的像素佔有全部可能的灰度級且分布均勻,能夠具有 高對比度;基本思想是把原始圖的直方圖變換為均勻分布的形式,這樣就增加 了像素灰度值的動態範圍,從而達到增強圖像整體對比度的效果def equalHist_demo(image):    gray = cv.cvtColor(image,cv.COLOR_BGR2GRAY)
  • OpenCV中直方圖反向投影算法詳解與實現
    OpenCV中直方圖反向投影算法詳解與實現一:直方圖交叉OpenCV中直方圖反向投影算法實現來自一篇論文《Indexing Via Color
  • Matlab圖像增強與復原技術在SEM圖像中的應用
    1圖像處理方法  1.1 直方圖均衡化  直方圖均衡化(Histogran Equalization,HE)是利用直方圖的統計數據進行直方圖的修改,能有效地處理原始圖像的直方圖分布情況,使各灰度級具有均勻的概率分布,通過調整圖像的灰度值的動態範圍,自動地增加整個圖像的對比度,以使圖像具有較大的反差,大部分細節清晰。
  • 基於直方圖算法進行FPGA架構設計
    基於直方圖算法進行FPGA架構設計 AI加速微信公眾號 發表於 2020-12-10 16:37:20 引言 直方圖統計在圖像增強和目標檢測領域有重要應用
  • 深度學習必備---用Keras和直方圖均衡化---數據增強
    ,我借鑑使用keras深度學習庫為增強圖像提供的一些最常用的開箱即用方法,然後演示如何修改keras.preprocessing image.py文件以啟用直方圖均衡化方法。3.直方圖均衡技術直方圖均衡化是指對比度較低的圖像,並增加圖像相對高低的對比度,以便在陰影中產生細微的差異,並創建較高的對比度圖像。
  • 結合實例與代碼談數字圖像處理都研究什麼?
    下面給出的12個大的方向,系我認為可以看成是基礎性領域的部分,而且它們之間還互有交叉本文引用地址:http://www.eepw.com.cn/article/201702/344134.htm  1、圖像的灰度調節  圖像的灰度直方圖、線性變換、非線性變換(包括對數變換、冪次變換、指數變換等)、灰度拉伸、灰度均衡、直方圖規定化等等)。
  • 查看matlab中函數原始碼的方法
    為了提升 「2015CUMCM 參賽隊伍」運用matlab軟體實現數學建模算法的能力,沉著應對數學建模競賽的【模型軟體求解】問題,最終在國賽中獲得榮譽,數學中國精心準備了一套能夠滿足參賽者需求的精品課程「數學建模算法之matlab實現專題」,讓大家深入數模算法方法內容、matlab軟體實現與應用,從而能夠在日後的生活和工作中獲得應用。
  • 大神帶你玩轉matlab圖像處理(6)——Hough變換
    在圖像處理中,從圖像中識別幾何形狀的基本方法之一是Hough變換,它有很多改進算法。最基本的Hough變換是從黑白圖像中檢測直線。廣義的Hough變換已經不僅僅局限於提取直線,二值任意可以用表達式表達的曲線都可以提取,例如圓、橢圓、正弦餘弦曲線等。曲線越是複雜.所需參數越多,運算的時間也就越多。Hough 變換的精髓在於投票算法,將圖像空間轉換到參數空間進行求解。
  • 算法工匠MATLAB專訓營:Matlab繪圖,小試牛刀
    在本次課中我就給出了一個實用的算法程序,程序名是dqpsk_IF_wholeframe_Release.m。那麼這個程序和網上的順序有什麼差別呢?可以明確的說網上的程序大多就是一個理論仿真,根本不考慮實際環境的因素。那這樣的程序是培養不了大家的算法思維的。