图像平滑3-K邻近平滑

来源:互联网 发布:建筑施工组织软件 编辑:程序博客网 时间:2024/05/20 20:57

K-Nearest Neighbors (KNN)

  • 概念
    选择处理点邻域内与处理点最相近的K个邻点平均,其核心是确定边界点和非边界点。

  • 优点
    可以保护边界,不被平滑。

  • 步骤

    1. 以待处理点为中心取N*N的模版。
    2. 在模版中,选择K个与待处理点像素灰度差为最小的像素。
    3. 计算K 个像素平均,代替计算点像素。
  • 效果
    KNN

code

clear allload ('lena512.mat');pic=uint8(lena512);pic=imnoise(pic,'gaussian');N=3;K=5;picFilter=lowFilter(N,K,pic);subplot(121)imshow(pic)title('original image')subplot(122)imshow(picFilter)title('KNN filter image')function [picFilter]=lowFilter(N,K,pic)Nmid=(N-1)/2;[m,n]=size(pic);for i=1:m    mb=i-Nmid;    me=i+Nmid;    if mb<1            mb=1;    end    if me>m            me=m;    end    for j=1:n               nb=j-Nmid;        ne=j+Nmid;                if nb<1            nb=1;        end               if ne>n            ne=n;        end        pic_temp=reshape(pic(mb:me,nb:ne),numel(pic(mb:me,nb:ne)),1);        [~,index]=sort(abs(pic_temp-pic(i,j)));        if index<K            picFilter(i,j)=mean(pic_temp(index));        else            picFilter(i,j)=mean(pic_temp(index(2:K+1)));        end    endendpicFilter=uint8(picFilter);end
原创粉丝点击