Sigma 西格玛平滑滤波

Sigma 西格玛平滑滤波
转自:https://www.cnblogs.com/Qsir/p/5802028.html

代码.

% Sigma  西格玛平滑滤波
clc;clear *;
RGB=imread('harbor.jpg');
figure(1);
subplot(1,2,1);
imshow(RGB);title('OriginalImage');
title('原图');
%将原图灰度化
F=rgb2gray(RGB);
F=double(F);
[row,col]=size(F);

for i=3:row-2   %use temple5*5
    for j=3:col-2
        Templet=[F(i-2,j-2) F(i-2,j-1) F(i-2,j) F(i-2,j+1) F(i-2,j+2)
        F(i-1,j-2) F(i-1,j-1) F(i-1,j) F(i-1,j+1) F(i-1,j+2)
        F(i,j-2) F(i,j-1) F(i,j) F(i,j+1) F(i,j+2)
        F(i+1,j-2) F(i+1,j-1) F(i+1,j) F(i+1,j+1) F(i+1,j+2)
        F(i+2,j-2) F(i+2,j-1) F(i+2,j) F(i+2,j+1) F(i+2,j+2)];

        Trows = reshape(Templet,5*5,1); %将模板转换成1列
        theta=std2(Trows);
        delta=2*theta;
 
        count_1=0;count_0=0;
            for m=1:5
                for n=1:5
                    A=Templet(m,n)-delta;
                    B=Templet(m,n)+delta;
                    if A<=Templet(3,3)<=B
                        Sigma(m,n)=1;
                        count_1=count_1+1;
                    else
                        Sigma(m,n)=0;
                        count_0=count_0+1;                        
                    end
                end
            end
 
        K=3;N=2;
        Sum=0;Num=0;
        if count_1>=K
            for m=1:5
                for n=1:5
                    Sum=Sum+Sigma(m,n)*Templet(m,n);
                    Num=Num+Sigma(m,n);
                end
            end
         F(i,j)=Sum/Num;
        else       
            F(i,j)=mean(Trows);
        end
    end
end

subplot(1,2,2);imshow(uint8(F)); title('Sigma');

效果图
在这里插入图片描述

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值