小白學岡薩雷斯數字圖像處理——第三章:亮度變換與空間濾波

此博客旨在記錄自學過程,文中代碼均爲MATLAB。

1.亮度變換函數

1.1函數imadjust

g = imadjust(f,[low_in high_in],[low_out high_out],gamma)

函數作用爲:將f中low_in到high_in 之間的值映射到 g中low_out 到 high_out之間,其中,輸入圖像應爲uint8 uint16 double類。gamma爲映射後的曲線類型。gamma<1 斜率遞減曲線 gamma=1 直線 gamma>1 斜率遞增曲線

函數輸出的值均爲0到1之間。若爲uint8類,則255恢復原值;若爲uint16,則65535恢復原值。

應用

(1)亮度翻轉

g = imadjust(f,[0 1],[1,0])

在這裏插入圖片描述

(2)突出感興趣帶

g = imadjust(f,[0.5,0.75],[0,1])

將0.5到0.75區間映射到整個區間。

1.2 對數和對比度拉伸變換

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

應用

(1)壓縮動態範圍

g = im2uint8(mat2gray(log(1 + double(f)))))

傅里葉頻譜範圍爲[0 10^6]或者更高。當其顯示於已經線性縮放至8比特的監視器上時,高值部分佔優,從而導致頻譜中低亮度值的可視細節丟失。通過計算對數,10的六次方左右的動態範圍會降至14左右,便於操作。

在這裏插入圖片描述

2. 直方圖處理與函數繪圖

2.1 生成並繪製圖像的直方圖

常用:imhist

h = imhist(f,b)
imshow(h)

#或者直接 imhist(f,b)

b爲灰度級數,默認爲256.(uint8有256 uint16有65536)

其他常用:

bar(horz,v,width) #繪製條形圖
stem(horz,h1,'fill') #繪製散點圖
plot() 

在這裏插入圖片描述

2.2 直方圖均衡化(增強對比度)

g = histeq(f)
imhist(g)

在這裏插入圖片描述

3.3 直方圖規定化

g = histeq(f,hgram) #hgram爲給定直方圖
imhist(g)

3.空間濾波

3.1 線性空間濾波

矩陣卷積運算:https://blog.csdn.net/qq_32846595/article/details/79053277

此處參考 @寰宇的行者

g = imfilter(f,w,'filtering_mode','boundary_options','size_options')

f是輸入圖像,w是濾波掩模(模板矩陣),filtering_mode爲濾波類型(相關:‘corr’ 卷積:‘conv’),boundary_options爲邊界選項(P,replicate,symmetric,circular 詳見MATLAB工具箱),size_options(大小選項 full:與被擴展圖像大小相同 same:與輸入圖像大小相同)

3.2 非線性空間濾波

處理方法同線性濾波(沿中心移位)

處理函數:nlfilter()與colfilt() 見matlab文件

4.常用濾波器函數

4.1 線性空間濾波器

用如下代碼來生成濾波掩模w的函數fspecial()

w = fspecial('type',parameters)

type表示濾波器類型,parameters進一步定義了指定濾波器(詳見MATLAB help)

4.2 非線性空間濾波器

最常用函數如下,該函數生成一個排序濾波器

g = ordfilt2(f,order,domain)

最常用的排序濾波器爲中值濾波器,生成函數如下:

g = ordfilt2(f,median(1:m*n),ones(m,n))

其中,median計算1:m*n的中值。

實際應用中,提供了一個二維中值濾波器

g = medfilt2(f,{m,n},padopt)

[m,n]定義一個鄰域,中值就在該鄰域計算;padopt指定了三個可能的邊界填充選項:
‘zeros’(默認值)
‘symmetric’(f按照鏡像翻轉的方式對稱地沿其邊界擴展。默認方式可能會產生黑色邊界效應,即邊界出現黑色斑點,用此選項可能能消除。)
‘indexed’(若f是double類,則用1填充,否則用0填充)

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