1. 程式人生 > >直方圖均衡化(Matlab實現)

直方圖均衡化(Matlab實現)

直方圖均衡化定義:通過某種灰度對映使輸入影象轉換為在每一灰度級上都有近似相同的畫素點的輸出影象(即輸出的直方圖是均勻的)。

Matlab影象處理工具箱提供了用於直方圖均衡化的函式histeq(),呼叫語法如下:[J,T]=histeq(I)

I是原始影象,J是經過直方圖均衡化的輸出影象,T是變換矩陣

影象歸一化:將影象轉換成唯一的標準形式以抵抗各種變換,從而可消除同類影象不同變形體之間的外觀差異

灰度歸一化:當影象歸一化用於消除灰度因素(光照)等造成的影象外觀變化時,稱為灰度歸一化

subplot函式:subplot(m,n,p)或者subplot(m n p)。subplot是將多個圖畫到一個平面上的工具。其中,m表示是圖排成m行,n表示圖排成n列,也就是整個figure中有n個圖是排成一行的,一共m行,如果m=2就是表示2行圖。p表示圖所在的位置,p=1表示從左到右從上到下的第一個位置。

3-7

I=imread('pout.tif'); %讀入原影象
I=im2double(I); %將圖象陣列轉換成double精度型別


%對於對比度變大的影象
I1=2*I-55/255;
subplot(4,4,1);
imshow(I1);
subplot(4,4,2);
imhist(I1);
subplot(4,4,3);
imshow(histeq(I1));
subplot(4,4,4);
imhist(histeq(I1));


%對於對比度變小的影象
I2=0.5*I+55/255;
subplot(4,4,5);
imshow(I2);
subplot(4,4,6);
imhist(I2);
subplot(4,4,7);
imshow(histeq(I2));
subplot(4,4,8);
imhist(histeq(I2));


%對於線性增加亮度的影象
I3=I+55/255;
subplot(4,4,9);
imshow(I3);
subplot(4,4,10);
imhist(I3);
subplot(4,4,11);
imshow(histeq(I3));
subplot(4,4,12);
imhist(histeq(I3));


%對於線性減小亮度的影象
I4=I-55/255;
subplot(4,4,13);
imshow(I4);
subplot(4,4,14);
imhist(I4);
subplot(4,4,15);
imshow(histeq(I4));
subplot(4,4,16);

imhist(histeq(I4));