直方圖均衡化(MATLAB)

1.概念

直方圖均衡方法的基本思想是使目標圖像的直方圖具有平直的直方圖。
直觀概念是對在圖像中像素個數多的灰度級進行展寬拉伸,而對像素個數少的灰度級進行縮減。從而達到清晰圖像的目的。
基本方法
通過灰度r的概率密度函數p(r),求出灰度變換T(r),建立等值像素出現的次數與結果圖像像素值之間的關係。形成一種自動調節圖像對比度質量的算法。

2.均衡化計算過程

在這裏插入圖片描述
在這裏插入圖片描述
下面是一個例子,其實原理就是通過變換函數得到一個映射關係

			  				累計分佈函數
輸入圖像灰度直方圖 ---------------------------->輸出調整後的直方圖

下面的題目,我們先算出每個灰度值的像素個數,例如灰度值0的像素個數的790,則nk就是790,概率p就等於790/64*64=0.19,即t0=p(s0)=0.19以此類推,t1=p(s0)+ p(s1)=0.19+0.25=0.44。然後代入近似取整公式求出tk,求出的tk就是映射的灰度值,把得到的相同映射值的概率p相加,最後得到的灰度值有1,3,5,6,7。
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
效果
在這裏插入圖片描述

3.直方圖均衡化MATLAB程序

在matlab環境中,程序首先讀取圖像,然後調用灰度均衡函數,設置相關參數,再輸出處理後的圖像。

I=imread('cameraman.tif\");   %讀取圖像
subplot(2,2,1),imshow(I);    %輸出圖像
title('原始圖像');           %原始圖像中加標題
subplot(2,2,3),imhist(I)   %輸出原圖直方圖
title('原始圖像直方圖');   %原圖直方圖上加標題
a=histeq(I,256);          %直方圖均衡化,灰度級爲256
subplot(2,2,2),imshow(a)  %輸出均衡化後圖像
title('均衡化後圖像');    %均衡化後圖像中加標題
subplot(2,2,4),imhist(a);  %出均衡化後直方圖
title('均衡化後圖像直方圖');  %均衡化後直方圖上加標題

分別對圖像‘pout.tif’和‘tire.tif’進行直方圖均衡化處理,比較處理前後圖像及直方圖分佈的變化。

I=imread('pout.tif');
imshow(I);
figure,imhist(I);
J=histeq(I);
figure,imhist(J);
figure,imshow(J);
I=imread('tire.tif');
imshow(I);
figure,imhist(I);
J=histeq(I);
figure,imshow(J);
figure,imhist(J);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章