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

模糊的优点

模糊的好处如下:

  • 它去除低强度的边缘。
  • 它有助于平滑图像。
  • 在隐藏细节方面很有用;例如,在许多情况下需要模糊,比如警察故意要隐藏受害者的面孔。

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()  

输出

10-1.png

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  

输出

10-2.png

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    

输出:

10-3.png

标签: OpenCV, OpenCV教程, OpenCV图像识别, OpenCV安装教程, OpenCV下载, OpenCV入门, OpenCV基础, OpenCV库, OpenCV学习, OpenCV指南, OpenCV教程中文版, OpenCV快速入门, OpenCV基础教程