MATLAB圖像處理-圖像增強之不用MATLAB自帶函數對數變換和冪次變換(伽馬矯正)

對數變換
對數變換(Power-Law 變換)的公式爲:
對數變換公式
由一個參數決定,c,1+r的目的是保證像素值爲非負數
它的作用是:擴展圖像中的暗像素,可以增加低亮度的區域
示例
MATLAB函數代碼如下:

function img_after = log_img(img_before, K)
img_double = im2double(img_before);
img_after = K* log(1 + img_double);
end

其中的k爲放大係數,img_before爲要變換的圖像,img_after爲變換後的圖像
完整的代碼如下:

img = imread('路徑');
subplot(1,2,1)
imshow(img)
title('原圖像')

k = 1.6;
img_P = log_img(img, k);
subplot(1,2,2)
imshow(img_P)
da = ['k=' num2str(k) '變換後的圖像'];
title(da)


function img_after = log_img(img_before, K)
img_double = im2double(img_before);
img_after = K* log(1 + img_double);
end

冪次變換
冪次變換(Log變換)公式如下:
在這裏插入圖片描述
冪次曲線中的 值決定了是把輸入窄帶暗值映射到寬帶輸出值還是把輸入窄帶亮值映射到寬帶輸出。
γ<1時,γ↓ ⇒ 該變換將低灰度值(暗值)進行拉伸
γ>1時,γ↑ ⇒ 該變換將高灰度值(亮值)進行拉伸

示例
爲什麼要進行γ校正?
幾乎所有的CRT顯示設備、攝像膠片、許多電子照相機的光電轉換特性都是非線性的。所以,如果不進行校正處理的話,將無法得到好的圖像效果。
光電傳感器的輸入輸出特性:這些非線性部件的輸出與輸入之間的關係可以用一個冪函數來表示,形式爲:設CCD的輸入(入射光強度)爲r,輸出(電壓)爲v,則有:在這裏插入圖片描述
對於伽馬值的選取,要根據實際情況而定
c取1,伽馬取不同值(小於1)圖像如下:
在這裏插入圖片描述
c取1,伽馬取不同值(大於1)圖像如下:
在這裏插入圖片描述

同時對上方的月球圖片進行處理得到:
在這裏插入圖片描述
MATLAB函數代碼爲:

function img_after = Power_law(img_before, K, c)

img_double = im2double(img_before);
img_after = K* img_double.^c;

end

完整代碼爲:

%圖片讀取
img = imread('路徑');
subplot(1,2,1)
imshow(img)
title('原圖像')

%參數設置
k = 1.2;
c = 0.75;
img_P = Power_law(img, k, c);
subplot(1,2,2)
imshow(img_P)
da = ['變換公式' num2str(k) '*x .\^' num2str(c) '變換後的圖像'];
title(da)


function img_after = Power_law(img_before, K, c)

img_double = im2double(img_before);
img_after = K* img_double.^c;

end

如果感覺文章有用的話,點個贊O(∩_∩)O哈哈~

如果你要交作業的話,還請認真閱讀,懂了之後自己寫一寫,那樣纔是自己的。

ps:部分圖片來自於湖南大學圖像處理課程PPT(侵刪)

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