泰宁新闻网

高通滤波器和低通滤波器,怎么看滤波器是低通还是高通

鞋

泰宁新闻网 http://www.tainingxinwen.cn 2020-05-24 09:18 出处:网络
高通滤波器和低通滤波器,怎么看滤波器是低通还是高通,高通滤波器与低通滤波器

高通滤波器和低通滤波器,怎么看滤波器是低通还是高通,高通滤波器与低通滤波器

 高通滤波器

以检测边缘的高通过滤器为例

高通滤波器和低通滤波器,怎么看滤波器是低通还是高通


这是个三乘三的核 其元素总和为 0,边缘检测时 所有元素总和为 0 是很重要的,因为这类过滤器要计算的是相邻像素的差异 或者说变化,要计算差异 就需要将像素值相减,如果这些核值加起来不等于 0,那就意味着计算出来的差,权重会有正负结果就是滤波后的图像亮度会相应地提高或降低,这就是卷积核元素相加为零的原因。

高通滤波器和低通滤波器,怎么看滤波器是低通还是高通

高通滤波器和低通滤波器,怎么看滤波器是低通还是高通

import numpy as np
import matplotlib.pyplot as plt
import cv2
%matplotlib inline
image = cv2.imread('1.png')
image_copy = np.copy(image)
image_copy = cv2.cvtColor(image_copy,cv2.COLOR_BGR2RGB)
plt.imshow(image_copy)

高通滤波器和低通滤波器,怎么看滤波器是低通还是高通

gray = cv2.cvtColor(image_copy,cv2.COLOR_RGB2GRAY)
plt.imshow(gray,cmap='gray')

高通滤波器和低通滤波器,怎么看滤波器是低通还是高通

sobel_x = np.array([[-1,0,1],
 [-2,0,2],
 [-1,0,1]]) #sobel filter
filtered = cv2.filter2D(gray,-1,sobel_x) #-1表示输入和输出类型一致
plt.imshow(filtered,cmap='gray')

高通滤波器和低通滤波器,怎么看滤波器是低通还是高通

retval,binary_image = cv2.threshold(filtered,100,255,cv2.THRESH_BINARY)
plt.imshow(binary_image,cmap='gray')
print(retval) #不知道这个retval有什么用,输出看一下

高通滤波器和低通滤波器,怎么看滤波器是低通还是高通

 

 

低通滤波器

 高通滤波器检测边缘时不仅会检测到噪声,而且还会强化它们,所以在高通滤波之前,需要先降噪。 低通滤器通常会取均值 不像高通过滤器取的是差值,因此低通过滤器的元素加起来应该为 1,这就能保留图像的亮度,确保图像不会变亮或变暗,但我们可以看到 这个核的元素加起来等于 9,所以我们需要进行归一化处理 也就是将核值总和除以 9

高通滤波器和低通滤波器,怎么看滤波器是低通还是高通

高通滤波器和低通滤波器,怎么看滤波器是低通还是高通

 

 

有时我们会想要个既能模糊图像 又能更好地保存图像边缘的过滤器,为此 我们可用高斯模糊,这或许是计算机视觉应用中最常用的低通过滤器了。高斯低通过滤器其实就是加权平均法 赋予中心像素最大的权重,但也会考虑到周围的像素 权重多少主要取决于周围像素有多接近中心像素

高通滤波器和低通滤波器,怎么看滤波器是低通还是高通

 

import numpy as np
import cv2
import matplotlib.pyplot as plt
%matplotlib inline
image = cv2.imread('2.png')
image_copy = np.copy(image)
image_copy = cv2.cvtColor(image_copy,cv2.COLOR_BGR2RGB)
plt.imshow(image_copy)

高通滤波器和低通滤波器,怎么看滤波器是低通还是高通

 

对图像进行高斯滤波,比较两者

gray = cv2.cvtColor(image_copy,cv2.COLOR_RGB2GRAY)
gray_blur = cv2.GaussianBlur(gray,(5,5),0)
f,(ax1,ax2) = plt.subplots(1,2,figsize=(20,10))
ax1.set_title('original gray')
ax1.imshow(gray,cmap='gray')
ax2.set_title('blurred image')
ax2.imshow(gray_blur,cmap='gray')

高通滤波器和低通滤波器,怎么看滤波器是低通还是高通

 

对未模糊处理的灰度图像和经过模糊处理的图像分别进行高通滤波操作 比较两者的效果

sobel_y = np.array([[2,1,2],
 [0,0,0],
 [-2,-1,-2]])
filtered = cv2.filter2D(gray,-1,sobel_y)
filtered_blurred = cv2.filter2D(gray_blur,-1,sobel_y)
f,(ax1,ax2) = plt.subplots(1,2,figsize=(20,10))
ax1.set_title('original gray')
ax1.imshow(filtered,cmap='gray')
ax2.set_title('blurred image')
ax2.imshow(filtered_blurred,cmap='gray')

高通滤波器和低通滤波器,怎么看滤波器是低通还是高通

 可以看到未模糊处理的图像,噪声更多 而模糊处理后的图像边缘检测效果更准确

通常来讲 对于这个图像以及其它诸多图像,我们都会先对图像进行小型低通滤波处理,比如应用高斯模糊 从而去除噪声,然后再用高通过滤器来检测边缘,所以在对图像进行滤波处理时 要牢牢记住这个顺序

 

高通滤波器和低通滤波器的相关网页热门搜索词

怎么看滤波器是低通还是高通|高通低通滤波器区别|高通滤波器和低通滤波器串联|无源二阶低通滤波器|高通滤波器的作用|四种滤波器的幅频特性|二阶减幅型高通滤波器|无源滤波器原理|互补滤波器原理|

本文标题:高通滤波器和低通滤波器,怎么看滤波器是低通还是高通
http://www.tainingxinwen.cn/qitaxinxi/382456.html

0

精彩评论

暂无评论...
验证码 换一张
取 消