K近邻(knn)中值滤波器(KNNMF)原理及python代码

这是K近邻平滑滤波器的另一种方法——k近邻中值滤波器,在K近邻均值滤波器中有详细的介绍K近邻均值滤波器。

原理

在K近邻中值滤波器中,不选k个邻近像素的平均灰度来代替,而选k个邻近像素的中值灰度来代替。
在这里插入图片描述

python代码

img= np.array([[1,2,1,4,3],
                [1,2,2,3,4],
                [5,7,6,8,9],
                [5,7,6,8,8],
                [5,6,7,8,9]])

def meanKernel(center,matrix,k):  #center:要替换点的坐标,matrix:目标所在kernel矩阵,k:近邻数
    matrix = matrix.astype('int')
    list1 = [[abs(i-center),i] for i in matrix.ravel()]   #对目标所在的矩阵平铺展开,然后相减,然后排序,前k个对应的
    list1.sort()
    print(list1)  #打印出排序后的list 
    print(np.sort(np.array(list1)[:k,1]))  
    return np.median(np.sort(np.array(list1)[:k,1]))  #  取中位数

kernel = 3 #3*3模板
k = 5 #k近邻个数
def KNN(img,kernel,k):
    result_img = img.copy()
    for i in 
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值