python 实现盒滤波boxfilter

盒滤波作为一种快速窗口求和算法在图像处理中被广泛使用

行列处理都分为ABC三部分,如图所示
这里写图片描述
以下是python代码实现

#coding:u8
import numpy as np
import numpy.matlib
import cv2
np.set_printoptions(threshold='nan')
def boxfilter(I,r):
    I=I.copy()
    imdst=np.zeros(I.shape)
    h,w=I.shape

    #行处理
    I=np.cumsum(I,0)
    imdst[:r+1,:]=I[r:2*r+1,:]
    imdst[r+1:h-r,:]=I[2*r+1:,:]-I[:h-2*r-1,:]
    imdst[h-r:,:]=np.matlib.repmat(I[h-1,:],r,1)-I[h-2*r-1:h-r-1,:]
    #列处理
    I=np.cumsum(imdst,1)
    imdst[:,:r+1]=I[:,r:2*r+1]
    imdst[:,r+1:w-r]=I[:,2*r+1:]-I[:,:w-2*r-1]
    imdst[:,w-r:]=np.matlib.repmat(I[:,w-1].reshape(-1,1),1,r)-I[:,w-2*r-1:w-r-1]

    return imdst    
map=np.ones((400,400))
out=boxfilter(map,40)
out=np.uint8(out*255/np.max(out))   
cv2.imshow('out',out)
cv2.waitKey(0)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值