OpenCV 模糊

2024年11月23日 OpenCV 模糊 极客笔记

OpenCV 模糊

模糊是图像处理中常用的技术,用于去除噪声。它通常用于消除图像中的高频内容,如噪点和边缘。当我们对图像应用模糊时,边缘会变得模糊。模糊的优点如下:

模糊的优点

模糊的好处如下:

  • 它可以消除低强度的边缘。
  • 它有助于平滑图像。
  • 它有利于隐藏细节;例如,在许多情况下需要进行模糊,比如警方故意要隐藏受害者的脸。

OpenCV主要提供以下类型的模糊技术。

OpenCV平均模糊

在这种技术中,图像与一个框式滤波器(归一化)进行卷积。它计算位于卷积核区域下的所有像素的平均值,并用计算得到的平均值替换中央元素。OpenCV提供了cv2.blur()cv2.boxFilter()来执行此操作。我们应该定义卷积核的宽度和高度。cv2.blur()函数的语法如下所示。

cv2.blur(src, dst, ksize, anchor, borderType)

参数:

src – 它代表源(输入)图像。

dst – 它代表目标(输出)图像。

ksize – 它代表卷积核的大小。

anchor – 它表示锚点的位置。

borderType – 它表示输出图像使用的边界类型。

考虑以下示例:

im = cv2.imread(r'C:\Users\DEVANSH SHARMA\cat_16x9.jpg')
cv2.imshow('Original Image',im)
cv2.imshow('Blurred Image', cv2.blur(im, (3,3)))
cv2.waitKey(0)
cv2.destroyAllWindows()

输出

OpenCV中值模糊

中值模糊操作与高斯模糊操作非常相似。OpenCV提供了 medianblur() 函数来执行模糊操作。它取得了核区域下所有像素的中值,并用该中值替换中心元素的值。它对图像中的椒盐噪声非常有效。核大小应为一个正的奇数整数。以下是该方法的语法。

cv2.medianBlur(src, dst, ksize)

参数:

src – 表示源(输入图像)。

dst – 表示目标(输出图像)。

ksize – 表示核的大小。

考虑以下示例:

import cv2  
import numpy  
# read image  
img = cv2.imread(r'C:\Users\DEVANSH SHARMA\cat_16x9.jpg', 1)    
# apply gaussian blur on src image  
dst = median = cv2.medianBlur(img,5)
# display input and output image  
cv2.imshow("Gaussian Smoothing", numpy.hstack((src, dst)))  
cv2.waitKey(0)  # waits until a key is pressed  
cv2.destroyAllWindows()  # destroys the window showing image

输出

OpenCV高斯模糊

图像平滑是一种帮助减少图像中噪点的技术。由于相机传感器的原因,图像可能包含各种类型的噪点。它基本上消除了图像中的高频(噪声、边缘)内容,因此在此操作中边缘稍微模糊。OpenCV提供 gaussianblur() 函数来对图像应用平滑处理。语法如下:

dst=cv2.GuassiasBlur(src, ksize, sigmaX[,dst[,sigmaY[, borderType=BORDER_DEFAULT]]]

参数:

  • src - 用于输入图像。
  • dst - 存储输出图像的变量。
  • ksize - 定义高斯核大小[height width]。高度和宽度必须为奇数(1, 3, 5, …),可以具有不同的值。如果ksize设置为[0, 0],则从sigma值计算ksize。
  • sigmaX - 沿X轴(水平方向)的核标准偏差。
  • sigmaY - 沿Y轴(垂直方向)的核标准偏差。如果sigmaY = 0,则使用sigmaX的值作为sigmaY。

  • borderType - 在应用核时指定的图像边界。可能的边界类型为:

    • cv.BORDER_CONSTANT
    • cv.BORDER_REPLICATE
    • cv.BORDER_REFLECT
    • cv.BORDER_WRAP
    • cv.BORDER_REFLECT_101
    • cv.BORDER_TRANSPARENT
    • cv.BORDER_REFLECT101
    • cv.BORDER_DEFAULT
    • cv.BORDER_ISOLATED

考虑以下示例:

import cv2  
import numpy  

# read image  
src = cv2.imread(r'C:\Users\DEVANSH SHARMA\cat_16x9.jpg', 1)    
# apply gaussian blur on src image  
dst = cv2.GaussianBlur(src, (5, 5), cv2.BORDER_DEFAULT)  

# display input and output image  
cv2.imshow("Gaussian Smoothing", numpy.hstack((src, dst)))  
cv2.waitKey(0)  # waits until a key is pressed  
cv2.destroyAllWindows()  # destroys the window showing image  

输出:

本文链接:http://so.lmcjl.com/news/18360/

展开阅读全文