资源简介

可以实现,简洁易懂,根据论文所编。包括对灰度图像,彩色(RGB)图像进行双边滤波。既能平滑图像,用能保持边缘信息。

资源截图

代码片段和文件信息

function g=bilateral_color(f)
% f为待处理的彩色图像,必须归一化到【01】范围内
% 对于彩色图像,像素值的接近与否不能用RGB空间值,建议使用CIE颜色空间
%applycform用于颜色空间转换,格式为:
% cform=makecform(‘srgb2lab‘); 
% f=applycform(fcform);

figureimshow(f[]);

f=double(f)/255;

f=applycform(fmakecform(‘srgb2lab‘));

[mnc]=size(f);
r=5;
fr=padarray(f[rr]‘symmetric‘);
sigma_s=input(‘input spatial similarity:‘); % 2 4 8……
sigma_r=input(‘input range similarity:‘); % 0.1 0.2 0.4……
sigma_r=sigma_r*100;

w1=fspecial(‘gaussian‘[2*r+12*r+1]sigma_s);

h=waitbar(0‘wait……‘);

for i=r+1:r+m
    for j=r+1:r+n
        diffpix(::1)=fr(i-r:i+rj-r:j+r1)-fr(ij1); % 计算像素差值
        diffpix(::2)=fr(i-r:i+rj-r:j+r2)-fr(ij2);
        diffpix(::3)=fr(i-r:i+rj-r:j+r3)-fr(ij3);
 
        w2=exp(-(diffpix(::1).^2+diffpix(::2).^2+diffpix(::3).^2)/(2*sigma_r.^2));
        
        w=w1.*w2;
         
         fr(ij1)=sum(fr(i-r:i+rj-r:j+r1).*w)/sum(w);
         fr(ij2)=sum(fr(i-r:i+rj-r:j+r2).*w)/sum(w);
         fr(ij3)=sum(fr(i-r:i+rj-r:j+r3).*w)/sum(w);
    end
    waitbar(i/m);
end
close(h);

g(::1)=fr(r+1:r+mr+1:r+n1);
g(::2)=fr(r+1:r+mr+1:r+n2);
g(::3)=fr(r+1:r+mr+1:r+n3);

g=applycform(gmakecform(‘lab2srgb‘));
figureimshow(g[]);

end

            
            
            
            
            
            
            
            
            
            

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1499  2014-08-10 08:36  bilateral_color.m

     文件        295  2014-08-10 08:47  bilateral_filter.m

     文件       1000  2014-08-10 09:05  bilateral_gray.m

     文件      16439  2014-08-09 07:44  hui1.jpg

     文件      16937  2014-08-09 07:45  yellowrose.jpg

----------- ---------  ---------- -----  ----

                36170                    5


评论

共有 条评论