1. 程式人生 > >Matlab影象處理轉灰度圖,繪製直方圖,直方圖均衡化

Matlab影象處理轉灰度圖,繪製直方圖,直方圖均衡化

1.imread()

MATLAB中影象讀取函式與OpenCV一樣是imread,可以開啟指定路徑圖片,其路徑表示方式與OpenCV中有些許不同如:

srcImage=imread('E:\MatlabWorkSpace\實驗一\實驗一圖一.png');

路徑符號為單"\",Opencv為雙"\",其函式原型為:

A=imread(filename,fmt);


2.將開啟的影象轉換為灰度圖rgb2gray

grayImage=rgb2gray(srcImage);

3.imwrite

儲存圖片,一定要註明圖片格式如jpg,bmp,png等。原型如下:

imwrite(A,filename,fmt);

儲存圖片時可指定圖片儲存路徑。如

imwrite(grayImage,'E:\MatlabWorkSpace\實驗一\grayImage.jpg');

4.imhist

繪製圖像直方圖函式,直方圖繪製後可直接顯示,不需要用imshow進行顯示。如:

imhist(grayImage);

5.imfinfo

讀取圖片資訊包括Height、Width、Format、ColorType等資訊,可利用此函式判斷函式為彩圖還是灰度圖.如:

info=imfinfo('E:\MatlabWorkSpace\實驗一\grayImage.jpg');

***此處貌似必須先將要讀取的圖片儲存下來,之後指定影象所在路徑,初學沒發現其他方法,歡迎指正。

6.subplot

將圖片放到一個視窗,需指定三個引數,原型如下:

subplot(m n p)

m、n、p分別代表該視窗中影象排列的行數、列數以及第幾幅圖片

可結合title使用

7.adapthisteq()

影象直方圖均衡化

H1=adapthisteq(grayImage);

8.imadjust()

該函式用於調節灰度影象的亮度或彩色影象的顏色矩陣。用法如下:

J=imadjust(I);

將灰度影象I中的亮度值對映到J中的新值,使得影象中1%的資料飽和至最低和最高亮度,這可以增加輸出影象J對比度值,此用法相當於imadjust(I,stretchlim(I))

J=imadjust(I,[low_in,hing_in],[low_out,high_out])

將影象I中的亮度值對映到J中的新值即將low_in至high_in之間的值對映到low_out至high_out之間的值.low_in以下與high_in以上的值被剪下掉了,也就是說low_in以下的值對映到low_out,high_in以上的值對映到high_out。它們都可以使用空的矩陣[],預設值是[0 1]

low_in、high_in、low_out、high_out的值均在0~1之間,可由已知值除以255算出值。例如low_in為100則,該位置應為:100/255=0.392

J=imadjust(I,[low_in,hing_in],[low_out,high_out],gamma)

其中gamma指定描述值I和J關係的曲線形狀。如果gamma小於1,此對映偏重更高數值(明亮)輸出,如果gamma大於1,此對映偏重更低數(灰暗)輸出,如果省略此引數,預設為(線性對映).如圖




示例程式碼:

%載入第一幅影象對其進行處理
srcImage=imread('E:\MatlabWorkSpace\實驗一\實驗一圖一.png');

%轉化成灰度圖
grayImage=rgb2gray(srcImage);
imwrite(grayImage,'E:\MatlabWorkSpace\實驗一\grayImage.jpg');
info=imfinfo('E:\MatlabWorkSpace\實驗一\grayImage.jpg');
%[M,N]=size(grayImage);

%在視窗中顯示2*2排列影象
subplot(2,3,1);
imshow(grayImage);
title('原影象灰度圖');

%繪製灰度直方圖
subplot(2,3,2);
imhist(grayImage);
title('灰度直方圖');
%[M,N]=size(hist);

%對灰度直方圖均衡化處理
subplot(2,3,3);
H1=adapthisteq(grayImage);
imhist(H1);
title('直方圖均衡化');

%調整影象灰度等級
%原影象灰度集中10~120,調整到100~200
dstImage=imadjust(grayImage,[0.039,0.470],[0.392,0.784],0.6);
subplot(2,3,4);
imshow(dstImage);%顯式調整後圖像
title('灰度級調整後');
subplot(2,3,5);
imhist(dstImage);
title('灰度調整後直方圖');


執行結果如圖所示: