再明確幾個概念
1,灰度:對於通常所謂的黑白圖像,把黑色和白色之間按對數關系分為若干等級稱為灰度。灰度分為256階,用灰度表示的圖像稱作灰度圖.在圖像中用0~255表示,0是全黑,255是全白
2.對比度:對比度值一幅圖像中敏感區域最亮的白和最暗的黑之間的不同亮度層級的測量,差異范圍越大代表對比月大。好的對比率120:1就可以容易的顯式生動、豐富的色彩,當對比率達到300:1時便可以支持各階的顏色。
imadjust()函數
imadjust()函數是針對灰度圖進行灰度變換的基本圖像處理工具箱函數。特別注意的是imadjust()函數會截掉在其取值范圍外的灰度值,gamma值大於1圖像變暗輸出,gamma值小於1輸出圖像變亮。
用法:
J = imadjust(I,[low_in; high_in],[low_out; high_out],gamma)
將圖像I中的亮度值映射到J中的新值,即將low_in至hige_in之間的值映射到low_out至high_out之間的值。low_in以下與high_in以上的值被剪切掉了,也就是說,low_in以下的值映射到low_out,high_in以上的值映射到high_out。它們都可以使用空的矩陣[],默認值是[0 1]。
舉個例子:
J = imadjust(I,[0.3 0.8],[0.2 0.9]) :表示I顯示在J中的像素值范圍為0.3到0.8,而且0.3在J中對應0.2,0.8在J中對應0.9。I中小於0.3的也都在J中用0.2表示,高於0.8的像素在J中都用0.9表示。
J = imadjust(I,[LOW_IN; HIGH_IN],[LOW_OUT; HIGH_OUT],GAMMA)
GAMMA指定描述I和J關系的曲線的形狀,GAMMA小於1意味着I的值在映射到J時變得比原值更大,GAMMA大於1意味着I的值映射后更小。
ganna函數很簡單,形如s=crr
具體用法和意思可參考:
imadjust從用法到原理—Matlab灰度變換函數之一;網址:https://www.cnblogs.com/ggYYa/p/6007385.html
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),[]);
代碼如圖:
clc;
clear all;
I=imread('03.tif');
subplot(1,3,1);
imshow(I);
title('原圖像');
image1=imadjust(I,[ ],[ ],0.8);
subplot(1,3,2);
imshow(image1);
title('gamma值調整');
image2=imadjust(I,stretchlim(I),[],0.8);
subplot(1,3,3);
imshow(image2);
title('stretchlim');