📜  什么是图像模糊

📅  最后修改于: 2021-04-16 08:58:56             🧑  作者: Mango

什么是2D卷积?
图像表示为计算机内部的矩阵。图像包含许多特征,例如边缘,对比度等。在图像处理中,必须从图像中提取特征,以进一步研究图像。
卷积是对图像进行的基本运算,其中对每个像素应用数学运算以获得所需的结果。
为此,使用了另一个称为内核的矩阵,该矩阵的图像尺寸较小。这也称为过滤器。该过滤器应用于图像的每个像素,并且获得的新值就是该像素的值。获得的图像称为滤波图像
在内核中,每个单元格都包含一个值,该内核保持在像素上方,然后将对应的值相乘,然后求和该值,得出的值就是新的像素值。

什么是模糊
如果仔细观察到模糊的图像,则通常需要注意的是图像是平滑的,这意味着没有观察到边缘。用于模糊的滤波器也称为低通滤波器,因为它允许低频进入并停止高频。这里的频率是指像素值的变化。边缘像素值随着模糊图像平滑而迅速变化,因此应滤除高频。
出于模糊目的,使用每个呼叫的值为1的滤波器,因为要使图像模糊,像素值应接近邻居值。
在滤波器中,将其除以9以进行归一化,否则像素的值将增加,从而导致更多的对比度,而这不是目标。

我们可以根据要平滑图像的程度来选择内核的大小。选择更大的尺寸将在更大的面积上平均。这倾向于增加平滑效果。

# Write Python3 code here
  
import cv2
import numpy as np
  
image = cv2.imread('geek.jpg')
  
# making filter of 3 by 3 filled with 1 divide 
# by 9 for normalization
blur_filter1 = np.ones((3, 3), np.float)/(9.0)
  
# making filter of 5 by 5 filled with 1 divide
# by 25 for normalization
blur_filter2 = np.ones((5, 5), np.float)/(25.0)
  
# making filter of 7 by 7 filled with 1 divide 
# by 49 for normalization
blur_filter3 = np.ones((7, 7), np.float)/(49.0)
  
image_blur1 = cv2.filter2D(image, -1, blur_filter1)
image_blur2 = cv2.filter2D(image, -1, blur_filter2)
image_blur3 = cv2.filter2D(image, -1, blur_filter3)
  
cv2.imshow('geek', image)
cv2.imshow('geek_blur1', image_blur1)
cv2.imshow('geek_blur2', image_blur2)
cv2.imshow('geek_blur3', image_blur3)
  
cv2.waitKey(0)
cv2.destroyAllWindows()

输出

原始图片


被3 x 3的滤镜模糊


被5 x 5的滤镜模糊


被7 x 7滤镜模糊

使用大滤镜,图像更平滑。