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('灰度調整後直方圖');
執行結果如圖所示: