国内高端大气的网站设计,设计院一般年薪,怎么在百度上推广自己,小程序源码下载网上一篇文章#xff1a;OpenCV计算机视觉 02 图片修改 图像运算 边缘填充 阈值处理
目录
添加椒盐噪声
图像平滑常见处理方式
均值滤波 (blur)
方框滤波 (boxFilter)
高斯滤波 (GaussianBlur)
中值滤波 (medianBlur) 添加椒盐噪声
def add_peppersalt_noise(image, n…上一篇文章OpenCV计算机视觉 02 图片修改 图像运算 边缘填充 阈值处理
目录
添加椒盐噪声
图像平滑常见处理方式
均值滤波 (blur)
方框滤波 (boxFilter)
高斯滤波 (GaussianBlur)
中值滤波 (medianBlur) 添加椒盐噪声
def add_peppersalt_noise(image, n10000):result image.copy()h, w image.shape[:2] # 获取图片的高和宽for i in range(n): # 生成n个椒盐噪声x np.random.randint(1, h)y np.random.randint(1, w)if np.random.randint(0, 2) 0:result[x, y] 0else:result[x,y] 255return result
image cv2.imread(tu.png)
cv2.imshow(original,image)
cv2.waitKey(0)
noise add_peppersalt_noise(image)
cv2.imwrite(rnoise.png,noise)#保存一下等会我们做平滑操作
cv2.imshow(noise,noise)
cv2.waitKey(0) 图像平滑常见处理方式
图像平滑smoothing也称为“模糊处理”bluring 是一项简单且使用频率很高的图像处理方法。图像平滑处理可以用来压制、弱化或消除图像中的细节、突变、边缘和噪声。但最常见的是用来减少图像上的噪声或者失真。降低图像分辨率时平滑处理是很重要的。下面是常用的一些滤波器 均值滤波邻域平均滤波– blur函数 方框滤波– boxFilter函数 高斯滤波–GaussianBlur函数 中值滤波–medianBlur函数
均值滤波 (blur)
是指用当前像素点周围 n*n 个像素值的均值来代替当前像素值。边界点的处理可以扩展当前图像的周围像素点padding.
特别注意核数尽量选奇数不选偶数原因是当核大小为奇数时能够明确地定义一个中心像素。这样在计算平均值时更容易确定以哪个像素为中心进行周边像素值的平均计算。当边界像素周围的像素数量不足 n×n 个为了能够对边界像素也进行均值滤波计算就通过在图像的四周添加额外的像素即 padding来补足所需的像素数量。这些添加的像素值可以是 0、图像边缘像素的重复值或者通过其他特定的算法计算得到的值从而使得边界像素也能像内部像素一样进行完整的 n×n 区域的均值计算。 dstcv2.blur(src,ksize,anchor,borderType)dst是返回值src是需要处理的图像kszie是滤波核(卷积核)的大小anchor是锚点默认值是-1-1一般无需更改borderType是边界样式一般无需更改一般情况下使用dstcv2.blur(src,ksize)即可blur_1 cv2.blur(noise,(3,3)) #卷积核为33 效果一般清晰度一般
cv2.imshow(blur_1,blur_1)
cv2.waitKey(0)
blur_2 cv2.blur(noise,(5,5))#卷积核为55 效果好但模糊
cv2.imshow(blur_2,blur_2)
cv2.waitKey(0)
cv2.destroyAllWindows() 优点
算法简单计算效率高。能有效地平滑均匀分布的噪声。
缺点
会使图像变得比较模糊因为它对所有像素一视同仁丢失了图像的细节和边缘信息。
方框滤波 (boxFilter)
方框滤波是指用当前像素点周围nxn个像素值的和来代替当前像素值。 dstcv2.boxFiltersrc,ddepth,ksize,anchor,normalize,borderType式中● dst是返回值表示进行方框滤波后得到的处理结果。● src 是需要处理的图像即原始图像。● ddepth是处理结果图像的图像深度一般使用-1表示与原始图像使用相同的图像深度。● ksize 是滤波核的大小。滤波核大小是指在滤波处理过程中所选择的邻域图像的高 度和宽度。● anchor 是锚点指对应哪个区域● normalize 表示在滤波时是否进行归一化。1.当值为True时归一化用邻域像素值的和除以面积。 此时方框滤波与 均值滤波 效果相同。2.当值为False时不归一化直接使用邻域像素值的和。和255时使用255boxFilter_1 cv2.boxFilter(noise,-1,(3,3),normalize True)
cv2.imshow(boxFilter_1,boxFilter_1)
cv2.waitKey(0)
boxFilter_2 cv2.boxFilter(noise,-1,(3,3),normalize False)
cv2.imshow(boxFilter_2,boxFilter_2)
cv2.waitKey(0) 优点
计算相对简单速度较快。对于一些平滑程度要求不高的情况可以快速达到一定的平滑效果。
缺点
如果未进行归一化可能会导致像素值超出正常范围例如 0 - 255出现异常的结果。与均值滤波类似可能会使图像变得模糊丢失部分细节。
高斯滤波(GaussianBlur)
使用高斯函数来确定滤波核中每个像素的权重。离中心像素越近权重越大离中心像素越远权重越小。再对滤波核覆盖区域内的像素进行加权平均得到中心像素的新值。 cv2.GaussianBlur(src, ksize[, sigmaX[, sigmaY[, dst]]])高斯滤波
参数说明
src:输入图像通常是一个NumPy数组。
ksize:滤波器的大小它是一个元组表示在水平和垂直方向上的像素数量。例如(5, 5)表示一个5x5的滤波器。
sigmaX和sigmaY:分别表示在X轴和Y轴方向上的标准差。这些值与滤波器大小相同。默认情况下它们都等于0,这意味着没有高斯模糊。
dst:输出图像通常是一个NumPy数组。如果为None,则会创建一个新的数组来存储结果。GaussianB cv2.GaussianBlur(noise,(3,3),1) #标准差为1标准正太分布。
cv2.imshow(GaussianBlur_k3_s1,GaussianB)
cv2.waitKey(0)
GaussianB cv2.GaussianBlur(noise,(3,3),2)
cv2.imshow(GaussianBlur_k3_s2,GaussianB)
cv2.waitKey(0)
GaussianB cv2.GaussianBlur(noise,(5,5),1) #标准差为1标准正太分布。
cv2.imshow(GaussianBlur_k5_s1,GaussianB)
cv2.waitKey(0) 优点
相比均值滤波能更好地保留图像的边缘和细节因为其权重分配更符合图像的特征。对高斯噪声有较好的抑制效果。
缺点
计算复杂度相对较高因为需要计算每个像素的权重。
中值滤波(medianBlur)
会取当前像素点及其周围临近像素点一共有奇数个像素点的像素值将这些像素值从小到大排序然后将位于中间位置的像素值作为当前像素点的像素值。 medianBlur函数 cv2.medianBlur(src, ksize[, dst])中值滤波
参数说明
src:输入图像。
ksize:滤波器的大小它是一个整数表示在水平和垂直方向上的像素数量。例如5表示一个5x5的滤波器。
dst:输出图像通常是一个NumPy数组。如果为None,则会创建一个新的数组来存储结果。medianB cv2.medianBlur(noise,3)
cv2.imshow(medianBlur_k3,medianB)
cv2.waitKey(0)
medianB cv2.medianBlur(noise,5)
cv2.imshow(medianBlur_k5,medianB)
cv2.waitKey(0)
cv2.destroyAllWindows() 优点
对椒盐噪声有非常好的去除效果。能够在去除噪声的同时较好地保护图像的边缘信息。
缺点
对于一些细节丰富的图像可能会使部分细节变得模糊。
综合来看中值滤波处理椒盐噪声效果最好