数字图像处理—亮度变换与空间滤波—亮度变换函数
數字圖像處理—亮度變換與空間濾波—亮度變換函數
參考資料:《數字圖像處理》,僅供學習參考。
亮度變換函數僅取決于亮度的值,與像素位置無關,所以亮度變換函數通常可寫成如下形式:
s=T(r)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=c?log(1+double(f))g=c*log(1+double(f)) g=c?log(1+double(f))
作用
壓縮動態范圍,避免可視細節丟失。函數形狀與上面所述gamma曲線類似,但gamma曲線形狀可變,而對數函數形狀固定。
語法
g=im2uint8(mat2gray(g));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}}s=T(r)=1+(m/r)E1?
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}。其中可以包括不同數據類型的參數。
總結
以上是生活随笔為你收集整理的数字图像处理—亮度变换与空间滤波—亮度变换函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WWDC 2013 Session笔记
- 下一篇: hdoj-2028-Lowest com