matlab 双边滤波(灰度图)

% matlab 2012b
% 灰度图的双边滤波
clc;
clear;

%-------双边滤波 参数 -----------------
r = 3;   %半径   窗口 长 = 宽 = 2*r+1
sigma_space = 1.0;           %空间标准差
sigma_color = 1.0;           %相似标准差
w_space = zeros(1,r+1);      %空间权重
for i = 1:r+1                %i为横坐标之差的绝对值 + 1
    for j = 1:r+1            %j为纵坐标之差的绝对值 + 1
        w_space(i,j) = exp(-double((i-1)^2 + (j-1)^2) / (2 * sigma_space^2));
    end
end
w_color = zeros(1,256);      %相似权重
for i = 1:256                %i为像素值之差的绝对值 + 1
    w_color(i) = exp(-double((i-1)^2) / (2 * sigma_color^2));
end
%matlab数组下标从1开始 
%disp(w_space);
%disp(w_color);
%break;

%------- 加载图片 进行滤波----------------
src=imread('cs.jpg');
src=rgb2gray(src);
src=double(src);             %一定要转换格式 全部都为double
[height,width] = size(src);  %matlab中 一个uint8与一个double计算 结果为uint8类型 会
dst = src;
for h = 1+r:height-r
    for w = 1+r:width-r      %窗口中心
        w_sum = 0;           %权值和
        p_sum = 0;           %权值未归一化与像素值的乘积和
        p_c = src(h,w);      %中心像素点的值
        for j = h-r:h+r
            for i = w-r:w+r                  %遍历窗口内的像素
                p_t = src(j,i);              %像素点的值 以及未归一化的权值
                w_tmp = w_space(abs(i-w)+1,abs(j-h)+1) * w_color(abs(p_c-p_t)+1);
                p_sum = p_sum + p_t * w_tmp; %权值未归一化与像素值的乘积和
                w_sum = w_sum + w_tmp;       %权值和
            end
        end
        p_sum = p_sum / w_sum; %归一化 
        dst(h,w) = p_sum;      %赋值
    end
end

%转换格式 显示
src = uint8(src);
dst = uint8(dst);
subplot(121),imshow(src);
subplot(122),imshow(dst);
imwrite(dst,'cs1.jpg');
%src = im2bw(src, graythresh(src));
%dst = im2bw(dst, graythresh(dst));
%subplot(223),imshow(src);
%subplot(224),imshow(dst);

参考:
https://blog.csdn.net/l_eop/article/details/81812277
https://blog.csdn.net/qq_36359022/article/details/80198890
opencv源码 bilateral_filter.cpp

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大米粥哥哥

感谢认可!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值