實驗2a 圖像的灰度變換
一、實驗目的:
學會用Matlab軟件對圖像進行運算和灰度變換。
二、實驗內容:
用+、-、*、/、imabsdiff、imadd、imcomplment、imdivide、imlincomb、immultiply、imsubtract和imadjust等函數生成各類灰度變換圖像。
三、實驗相關知識
1、代數運算
兩幅圖像之間進行點對點的加、減、乘、除運算后得到輸出圖像。我們可以分別使用MATLAB的基本算術符+、-、*、/來執行圖像的算術操作,但是在此之前必須將圖像轉換為適合進行基本操作的雙精度類型(命令函數為double())。為了更方便對圖像進行操作,圖像處理工具箱中也包含了一個能夠實現所有非稀疏數值數據的算術操作的函數集合。如下所示:
imabsdiff:計算兩幅圖像的絕對差值
imadd:兩個圖像的加法
imcomplment:一個圖像的補
imdivide:兩個圖像的除法
imlincomb:計算兩幅圖像的線性組合
immultiply:兩個圖像的乘法
imsubtract:兩個圖像的減法
使用圖像處理工具箱中的圖像代數運算函數無需再進行數據類型間的轉換,這些函數能夠接受uint8和uint16數據,并返回相同格式的圖像結果。
代數運算的結果很容易超出數據類型允許的范圍。圖像的代數運算函數使用以下截取規則使運算結果符合數據范圍的要求:超出數據范圍的整型數據將被截取為數據范圍的極值,分數結果將被四舍五入。
2、灰度變換
點運算也稱為灰度變換,是一種通過對圖像中的每個像素值進行運算,從而改善圖像顯示效果的操作。
對于特定變換函數f的灰度變換,用戶可以利用MATLAB強大的矩陣運算能力,對圖像數據矩陣調用各種MATLAB計算函數進行處理。需要注意的是由于MATLAB不支持uint8類型數據的矩陣運算,所以首先要將圖像數據轉換為雙精度類型,計算完成后再將其轉換為uint8類型(命令為uint8( ))。
而在MATLAB圖像處理工具箱中也提供了一個灰度變換函數imadjust,其語法格式為:J=imadjust(I, [low_in high_in], [low_out high_out], gamma)。[low_in high_in]是原圖像中要變換的灰度范圍,[low_out high_out]是指定變換后的灰度范圍,兩者的默認值均為[0 1]。gamma的取值決定了輸入圖像到輸出圖像的灰度映射方式,即決定是增強低灰度還是增強高灰度。gamma大于1、等于1和小于1的映射方式如下圖所示。