Matlab中的stretchlim函式詳解
imadjust函式是MATLAB的一個工具箱函式,一般的語法呼叫格式為:
f1=imadjust(f,[low_in high_in],[low_out high_out],gamma)
(注:本文所述影象資料均為Uint8,對於Matlab,矩陣中的一個元素即是一個畫素點)
該函式的意義如圖1所示,把影象f 灰度變換到新影象f1的過程中,f 中灰度值低於low_in的畫素點在f1中灰度值被賦值為low_out,同理,f中灰度值高於high_in的畫素點變換到f1時其灰度值也被賦值為high_out;而對於引數gamma,當gamma<1時,灰度影象靠近low_in的灰度值較低畫素點灰度值變高,其灰度變化範圍被拉伸,灰度值靠近high_in的一端灰度變化範圍被壓縮,影象整體變明亮。如圖1(a)所示,同理,當gamma>1時,則灰度影象的靠近low_in的灰度值較低畫素點灰度值變低,其灰度變化範圍被壓縮,灰度值靠近high_in的一端的灰度變化範圍被拉伸,如圖1(c)所示。
圖1
而對於中間的兩個引數,通過調整其值,主要可以實現以下四種變換。
(1).負片變換
即取反變換,對一個灰度影象f 取反(負片)變換即為255減去f 中的每個畫素點的灰度值,得到的新影象f1 即為負片變換後的影象。
示例程式碼:
f1=imadjust(f,[0 1],[1 0]);
(2).兩引數為空的變換
變換命令程式碼如下:
f1=imadjust(f,[ ],[ ],0.6);
其實質就是隻改變引數gamma的變換,文章開篇已述,此處便不再贅述。
當然,該變換也可結合Matlab工具箱函式stretchlim得到。其具體呼叫格式為:
f1=imadjust(f,stretchlim(f),[ ]);
該呼叫方法能自動確定閾值,完成對比度拉伸。
(3).大到小變換
所謂大到小變換,即將圖片f較大的灰度值變化區間壓縮為較小的灰度值變化區間達到降低圖片f1對比度的作用,示例程式碼如下:
f1=imadjust(f,[0 1],[0.3 0.7]);
其意義為將影象f 中灰度值區間壓縮變換到f1
圖片f 中的任一畫素點的灰度值x,變換後得到f1影象中對應畫素點灰度值Xf,變換公式如下:
(4).小到大變換
與大到小變換相反,將圖片f 較小的灰度值變化區間擴充套件為較大的灰度值變化區間;示例程式碼如下:
f1=imadjust(f,[0.3 0.6],[0.1 1]);
與(3)變換相反,該型別變換能提高圖片f1對比度,如圖3所示。
其變換過程類似變換(3),對於任一的
圖片f 中的任一畫素點的灰度值x,變換後得到f1 影象中相應畫素點的灰度值Xf ,變換公式如下: