數字圖像處理—亮度變換與空間濾波—亮度變換函數

數字圖像處理—亮度變換與空間濾波—亮度變換函數

參考資料:《數字圖像處理》,僅供學習參考。
亮度變換函數僅取決於亮度的值,與像素位置無關,所以亮度變換函數通常可寫成如下形式:
s=T(r) s=T(r)
其中,r表示圖像f中相應點(x,y)的亮度,s表示圖像g中相應點(x,y)的亮度。

函數imadjust

語法

其語法爲 g = imadjust(f, [low_ in high_ in], [low_out high_ out], gamma)

作用

此函數將圖像f中的亮度值映像到g中的新值,即將low_ in至high_ in之間的值映射到low_ out至high_ out 之間的值。low_ in以下與high_ in以上的值則被剪切掉了。
輸出圖像與輸人圖像有着相同的類。除圖像f外,函數imadjust的所有輸人輸均指定在0和1之間。 若f是uint8類圖像,則函數imadjust將乘以255來確定。[low_ in high_ in]或[low_ out high_ out]使用空矩陣([])會得到默認值[0 1]。
參數gamma指定了曲線的形狀,該曲線用來映射f的亮度值,gamma默認爲1。
在這裏插入圖片描述

示例

下面展示imadjust的處理效果,a爲原圖,b爲使用如下命令g1=imadjust(f,[0 1],[1 0]) 得到的亮暗翻轉圖像,亮暗翻轉圖像也可以通過函數imcomplement實現,g=imcomplement(f)。圖c是使用命令g2=imadjust(f,[0.5 0.75],[0 1]) 得到的結果。該命令將0.5至0.75之間的灰度級擴展到範圍[0, 1],可以突出感興趣的亮度帶。以圖像爲uint8爲例,將像素範圍爲[2550.5 2550.75]拓展到範圍爲[0 255]。圖d是使用命令g3=imadjust(f,[],[],2),此處gamma=2,可參考上面圖像,可得此時是壓縮灰度級的低端,擴展灰度級的高端。

圖例

對數和對比度拉伸變換

語法

g=clog(1+double(f)) g=c*log(1+double(f))

作用

壓縮動態範圍,避免可視細節丟失。函數形狀與上面所述gamma曲線類似,但gamma曲線形狀可變,而對數函數形狀固定。

語法

g=im2uint8(mat2gray(g)); g=im2uint8(mat2gray(g));

作用

將壓縮值還原爲顯示的全範圍。上句是對8bit而言,使用mat2gray可使範圍在0-1之間,然後使用im2uint8將範圍限定在[0 255]。

語法

對比度拉伸變換函數形式:
s=T(r)=11+(m/r)Es=T(r)=\frac{1}{1+(m/r)^{E}}
MATLAB語法:g=1./(1+(m./(double(f)+eps)).^E)
使用eps可避免f出現0值的溢出現象

示例

對比度拉伸

亮度變換的一些實用M函數

語法

n=nargin
n=nargout
result=nargchk(low,high,number)

作用

檢測函數輸入/輸出參量數目,nargin返回函數的輸入參量數目,nargout返回函數的輸出參量數目。如執行如下函數:T=testhv(4,5);則在函數中使用nargin返回2,使用nargout返回1。

nargchk可用於M函數中檢測輸入參量的個數是否正確。在number小於low或大於high時均會報錯,若介於兩者之間則返回一個空矩陣。

示例

function G=test(x,y,z)
……
error(nargchk(2,3,nargin));
……

語法

function [m,n]=test(varargin)
function [varargout]=test(m,n,p)

作用

函數具有可變數目的輸入參量和輸出參量。MATLAB會將其置入一個單元數組中,調用方式如下:varargin{1}、varargin{2}。其中可以包括不同數據類型的參數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章