imadjust從用法到原理—Matlab灰度變換函數之一
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 中,且f1的灰度值變化范圍為255*0.3~255*0.7。變化公式大致如此,對於任意的變換區間,有:
圖片f 中的任一像素點的灰度值x,變換后得到f1圖像中對應像素點灰度值Xf,變換公式如下:
(4).小到大變換
與大到小變換相反,將圖片f 較小的灰度值變化區間擴展為較大的灰度值變化區間;示例代碼如下:
f1=imadjust(f,[0.3 0.6],[0.1 1]);
與(3)變換相反,該類型變換能提高圖片f1對比度,如圖3所示。
其變換過程類似變換(3),對於任一的
圖片f 中的任一像素點的灰度值x,變換后得到f1 圖像中相應像素點的灰度值Xf ,變換公式如下: