MATLAB 实现 K近邻域滤波器

Posted 雾里赏花

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MATLAB 实现 K近邻域滤波器相关的知识,希望对你有一定的参考价值。

MATLAB 实现 数字图像处理 K近邻域滤波器

function [ J ] = fun( I )
%   边界保持类滤波器的K近邻均值滤波器
[l,w]=size(I);
M=5;K=9;                    %设定M*M为模板,K个邻近值
MM=M*M;                     %25
weighMM=ceil(M/2);          %3
lweighMM=fix(M/2);          %2
lhalfMM=fix(M*M/2);         %12
uhalfMM=ceil(M*M/2);        %13,为中心位置编号
iend=l-weighMM;
jend=w-weighMM;
J=I;
for i=weighMM:iend
    for j=weighMM:jend
        I1=I(i-weighMM+1:i+weighMM-1,j-weighMM+1:j+weighMM-1);%取出M*M的矩阵
        A=reshape(I1,1,MM);          %降为一维数组
        intA=int16(A);              %变成有符号数用来求绝对值大小
        for k=1:MM                  %将每个数与该矩阵中间数相减
            B(1,k)=int16(intA(uhalfMM)-intA(k));
        end
        BB=abs(B);                  %求绝对值,排序后绝对值最小的数为最接近的数
        [BBB,id]=sort(BB);              %id为排序前位置编号
        for k=1:K;                      %将绝对值最小的K个数拿出
            C(1,k)=A(id(k));
        end
        J(i,j)=round(mean(C));         %求这K个数的均值
    end
end
end

以上是关于MATLAB 实现 K近邻域滤波器的主要内容,如果未能解决你的问题,请参考以下文章

Matlab基于k近邻算法实现多分类预测(源码可直接替换数据)

Matlab基于k近邻算法实现多分类预测(源码可直接替换数据)

MATLAB实现K-近邻算法(源码)

滤波跟踪基于matlab最近邻算法多目标航迹关联含Matlab源码 2093期

滤波跟踪基于matlab最近邻算法多目标航迹关联含Matlab源码 2093期

K近邻分类算法实现 in Python