Matlab影象處理之灰度變換函式
首先明確幾個概念
1,灰度:對於通常所謂的黑白影象,把黑色和白色之間按對數關係分為若干等級稱為灰度。灰度分為256階,用灰度表示的影象稱作灰度圖.在影象中用0~255表示,0是全黑,255是全白
2.對比度:對比度值一幅影象中敏感區域最亮的白和最暗的黑之間的不同亮度層級的測量,差異範圍越大代表對比月大。好的對比率120:1就可以容易的顯式生動、豐富的色彩,當對比率達到300:1時便可以支援各階的顏色。
imadjust()函式
前面博文介紹過imadjust()函式是針對灰度圖進行灰度變換的基本影象處理工具箱函式。特別注意的是imadjust()函式會截掉在其取值範圍外的灰度值,gamma值大於1影象變暗輸出,gamma值小於1輸出影象變亮。
stretchlim()函式
基本語法:Low_High=stretchlim(f);其中f是輸入影象.較為通用的語法是:Low_High=stretchlim(f,tol);其中tol是兩元素向量[Low_frac high_frac],指定了影象低和高畫素值飽和度的百分比。如果tol是標量,那麼low_frac=tol,high_frac=1-low_frac;飽和度等於低畫素和高畫素的百分比。如果在引數中忽略tol那麼飽和度水平為2%,tol預設值為[0.01 0.99].如果選擇tol=0,那麼Low_High=[min(f(:)) max(f(:))].
Low_High的值指定灰度影象f中所有畫素值底部和頂部飽和度的1%,結果以向量[low_in high_in]的形式應用於imadjust函式如:
g=imadust(f,stretchlim(f),[]);
下面以提高一幅圖片對比度為例,提高對比度最簡單的方法是提高白色畫面亮度
%提高影象對比度 %載入影象 srcImage=imread('boiler.bmp'); info=imfinfo('boiler.bmp'); subplot(1,3,1); imshow(srcImage); title('原影象'); image1=imadjust(srcImage,[ ],[ ],0.8); subplot(1,3,2); imshow(image1); title('gamma值調整'); image2=imadjust(srcImage,stretchlim(srcImage),[],0.8); subplot(1,3,3); imshow(image2); title('stretchlim');
執行結果如下:
對數及對比度擴充套件變換
對數變換的一項主要應用是壓縮動態範圍。當執行對數變換時通常期望得到的是將壓縮值返回至顯式的全域,對於8位元來說在MATLAB中最簡易的方法是使用下面語句:
g=im2uint8(mat2gray(f));
使用mat2gray將值限定在[0,1]範圍內,使用im2uint8將值限定在[0,255]範圍內。把影象轉換為uint8類。函式把輸入灰度圖的窄範圍擴充套件到輸出灰度圖的寬範圍,結果就是高對比度的一幅圖片。