图像的平滑处理_python

本文详细介绍了Python中图像的平滑处理,包括均值滤波、高斯滤波和中值滤波。均值滤波适用于一般噪声,但对孤立噪声敏感;高斯滤波适用于消除高斯噪声,保护图像边缘;中值滤波能有效过滤椒盐噪声,保持图像边缘。通过不同大小的滤波器展示了滤波效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.定义图像与kernel进行卷机

#convolve 
def imgConvolve(img,kernel):
    rows,cols=img.shape
    kernel_rows,kernel_cols=kernel.shape
    padding_rows,padding_cols=int((kernel_rows-1)/2),int((kernel_cols-1)/2)
    
    convolve_rows=rows+2*padding_rows
    convolve_cols=cols+2*padding_cols
    
    img_padding=np.zeros((convolve_rows,convolve_cols))
    img_padding[padding_rows:padding_rows+rows,padding_cols:padding_cols+cols]=img[:,:]
    
    img_convolve=np.zeros((rows,cols))
    
    for i in range(padding_rows,padding_rows+rows):
        for j in range(padding_cols,padding_cols+cols):
            img_convolve[i-padding_rows][j-padding_cols]=int(np.sum(img_padding
                                                                    [i-padding_rows:i+padding_rows+1,
                                                                     j-padding_cols:j+padding_cols+1]*kernel))
    return img_convolve

本次采用的原图像

在这里插入图片描述

二.均值滤波

线性滤波算法,用模板中的全体像素的平均值来代替原来像素值,对噪声图像特别是有大的孤立点的图像非常敏感,即使有极少数量点存在较大差异也会导致平均值的明显波动

def imgAverageFilter(img,kernel):
    return imgConvolve(img,kernel)*(1.0/kernel.size)
filter 3x3
kernel=np.random.randint(3,size=(3,3))
img=cv2.imread('IMG_4470.JPG',0)
new_img=imgAverageFilter(img,kernel)
cv2.imwrite('IMG_4470_Average_33.JPG',new_img)

得到图像为:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值