一、图像平滑处理

1.概念

        图像平滑处理(smoothing)也称为"模糊处理”(bluring)通过消除图像中的噪声或细节来使图像看起来更为模糊,从而实现平滑效果可以用来压制、弱化、消除图像中的细节、突变和噪声。

2.常用滤波器

1.均值滤波--->blur函数

dst=cv2.blur(src,ksize,anchor,borderType)
dst:是返回值
src:是需要处理的图像
kszie:是滤波核(卷积核)的大小
anchor:是锚点,默认值是(-1,-1)一般无需更改
borderType:是边界样式,一般无需更改

2.方框滤波--->boxFilter函数

dst=cv2.boxFilter(src,ddepth,ksize,anchor,normalize,borderType)式中:
●dst是返回值,表示进行方框滤波后得到的处理结果。
●src是需要处理的图像,即原始图像。
●ddepth是处理结果图像的图像深度,一般使用-1表示与原始图像使用相同的图像深度。(可以理解为数据类型)
●ksize是滤波核的大小。滤波核大小是指在滤波处理过程中所选择的邻域图像的高度和宽度。
●anchor是锚点,(指对应哪个区域)
●normalize表示在滤波时是否进行归一化。
1.当值为True时,归一化,用邻域像素值的和除以面积。此时方框滤波与均值滤波效果相同。
2.当值为False时,不归一化,直接使用邻域像素值的和。和>255时使用255

3.高斯滤波--->GaussianBlur函数

cv2.GaussianBlur(src,ksize[,sigmaX[,sigmaY[,dst]]])高斯滤波
参数说明:
src:输入图像,通常是一个NumPy数组。
ksize:滤波器的大小,它是一个元组,表示在水平和垂直方向上的像素数量。例如,(5,5)表示一个5x5的滤波器。
sigmaX和sigmaY:分别表示在X轴和Y轴方向上的标准差。这些值与滤波器大小相同。默认情况下,它们都等于0,这意味着没有高斯模糊。
dst:输出图像,通常是一个NumPy数组。如果为None,则会创建一个新的数组来存储结果。

4.中值滤波--->medianBlur函数

cv2.medianBlur(src,ksize[,dst])中值滤波
参数说明:
src:输入图像。
ksize:滤波器的大小,它是一个整数,表示在水平和垂直方向上的像素数量。例如,5表示一个5x5的滤波器。
dst:输出图像,通常是一个NumPy数组。如果为None,则会创建一个新的数组来存储结果。

3.生成噪声图片

代码:

import numpy as np

def add_peppersalt_noise(image,n=10000):
    result =image.copy()
    h,w = image.shape[:2]
#获取图片的高和宽
    for i in range(n):
#生成n个椒盐噪声
        x = np.random.randint(0,h)
        y = np.random.randint(0,w)
        if np.random.randint(0,2)==0:
            result[x,y]=0
        else:
            result[x,y]=255
    return result
image=cv2.imread("1.png")
cv2.imshow("yutu",image)
cv2.waitKey(0)
noise=add_peppersalt_noise(image)
cv2.imshow("noise",noise)
cv2.waitKey(0)

定义一个函数参数是需要生成噪声的图像和噪声点的个数,通过在图像大小范围使用随机函数让该点颜色变成黑色

二、边界填充

cv2.copyMakeBorder()是OpenCV库中的一个函数,用于给图像添加额外的边界(padding)。
copyMakeBorder(src, top, bottom, left, right, borderType)
它有以下几个参数。
src:要扩充边界的原始图像。
top,bottom,left,right:相应方向上的边框宽度。
borderType:定义要添加边框的类型,它可以是以下的一种:
cv2.BORDER_CONSTANT:添加的边界框像素值为常数(需要额外再给定一个参数)。
cv2.BORDER_REFLECT:添加的边框像素将是边界元素的镜面反射,类似于gfedcba|abcdefgh|hgfedcba。(交界处也复制了)
cv2.BORDER_REFLECT_101或cv2.BORDER_DEFAULT:和上面类似,但是有一些细微的不同,类似于gfedcb|abcdefghIgfedcba(交接处删除了)
cv2.BORDER_REPLICATE:使用最边界的像素值代替,类似于aaaaaa|abcdefgh|hhhhhhh
cv2.BORDER_WRAP:上下左右边依次替换

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐