实现SNN(对称近邻平滑滤波器)的代码

本文档介绍了如何实现SNN(对称近邻平滑滤波器)的代码,该算法应用于图像处理。给出了函数`[im]=SNN_denoise(I,N)`的定义,其中`I`是输入图像矩阵,`N`是模板大小参数,表示边长为2*N+1的正方形模板。提供的参考测试代码读取'peppers.png'图像,应用SNN_denoise函数并显示处理后的图像。" 113722570,10296950,解决MySQL安装报错:Permission denied,"['数据库', 'MySQL安装', '权限管理']

要求:算法实现为函数[im]=SNN_denoise (I,N),其中I为读入的图像矩阵; N为模板大小参数(正方形模板,边长为:2*N+1)。

参考测试代码:I = imread('peppers.png');im = SNN_denoise(I,2);figure,imshow(im)

function [im]=SNN_denoise(I,N)
% I  = [1 3 2 3 2 1 2; 1 2 1 4 3 3 2; 1 10 2 3 4 4 2; 
%         5 2 6 18 8 7 3; 5 5 7 0 8 8 5; 5 6 7 8 9 9 8; 
%         4 5 6 8 8 6 7];
%  N=2;
 [m, n]=size(I);
 I = imnoise(I,'salt & pepper');
 figure,imshow(I);
 for i=N+1:m-N
     for j=N+1:n-N
        B = I(i-N:i+N,j-N:j+N);			%B为取N*N的模板
        A = reshape(B, 1, []);			%把B变成一维放到A中,一层for循环,主要是为了节约遍历时间
        for k=1:2*N*(N+1)				%取2*N*(N+1)个 对角线值接近I(i,j)的
            a = A(1,k);			%因为reshape,是把一列一列的放入A的第一行中
            i1 = mod(k, 2*N+1);	%a在模板中行的位置,模板始终由(1,1)开始
            j1 = fix(k/(2*N+1))+1;	%a在模板中列的位置,模板始终由(1,1)开始
            i2 = 2*(N+1)-i1;		%a的对角线,在模板中的位置
            j2 = 2*(N+1)-j1;		%a的对角线,在
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值