雙邊濾波增強圖像

理論知識見文章Bilateral Filtering for Gray and Color Images

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.4.634&rep=rep1&type=pdf

matlab原程序如下:

function [img1] = perform_bilateral_filtering(img,winsize,sigma)
 
% Bilateral Filtering(img,winsize,sigma)
% Input -> Image img
% -> winsize: spatial filter width
% -> sigma for intensity diff gaussain filter
% -> sigma for spatial filter = winsize/6
% Output -> Filtered Image
% Author: Amit Agrawal, 2004
 
% should be odd
winsize = round( (winsize-1)/2 )*2 + 1;
 
[H,W] = size(img);
%Gaussian spatial filter
g_filter = fspecial('gaussian',winsize,winsize/6);
padnum = (winsize-1)/2;
A = padarray(img,[padnum padnum],'replicate','both');
img1 = zeros(size(img));
for jj = padnum+1:(padnum+1+H-1)
    for kk = padnum+1:(padnum+1+W-1)
        % Get a local neighborhood
        imgwin = A(jj-padnum:jj+padnum,kk-padnum:kk+padnum);
        % Find weights according to intensity diffs
        Wwin = exp(-abs(imgwin - imgwin(padnum+1,padnum+1))/sigma^2);
        % Find composite filter
        newW = Wwin.*g_filter;
        t = sum(sum(newW));
        if(t>0)
            newW = newW/t;
        end
        img1(jj-padnum,kk-padnum) = sum(sum(imgwin.*newW));
    end
end
 

列子:

I = im2double(imread(dragonfly.jpg));%讀入原圖

雙邊濾波增強圖像

IL = perform_bilateral_filtering(I,10,10);%調用上述雙邊濾波函數,對原圖像I濾波,得到圖像大尺度。

雙邊濾波增強圖像

ID= I -IL;%原圖像小尺度即圖像細節部分

雙邊濾波增強圖像

I4 = IL 3*ID; %圖像細節部分放大3倍

雙邊濾波增強圖像

 

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