• python实现高通滤波后进行频率积分。可以配置滤波器类型和滤波参数
• 理想高通滤波实现 python opencv import numpy as np import cv2 from matplotlib import pyplot as plt plt.rcParams[‘font.sans-serif']=[‘SimHei'] plt.rcParams[‘axes.unicode_minus'] = False I = cv2....
• I am currently studying image processing. In Scipy, I know there is one median filter in Scipy.signal. Can anyone tell me if there is one filter similar to high pass filter?Thank you解决方案"High pass...

I am currently studying image processing. In Scipy, I know there is one median filter in Scipy.signal. Can anyone tell me if there is one filter similar to high pass filter?
Thank you
解决方案
"High pass filter" is a very generic term. There are an infinite number of different "highpass filters" that do very different things (e.g. an edge dectection filter, as mentioned earlier, is technically a highpass (most are actually a bandpass) filter, but has a very different effect from what you probably had in mind.)
At any rate, based on most of the questions you've been asking, you should probably look into scipy.ndimage instead of scipy.filter, especially if you're going to be working with large images (ndimage can preform operations in-place, conserving memory).
As a basic example, showing a few different ways of doing things:
import matplotlib.pyplot as plt
import numpy as np
from scipy import ndimage
import Image
def plot(data, title):
plot.i += 1
plt.subplot(2,2,plot.i)
plt.imshow(data)
plt.gray()
plt.title(title)
plot.i = 0
im = Image.open('lena.png')
data = np.array(im, dtype=float)
plot(data, 'Original')
# A very simple and very narrow highpass filter
kernel = np.array([[-1, -1, -1],
[-1, 8, -1],
[-1, -1, -1]])
highpass_3x3 = ndimage.convolve(data, kernel)
plot(highpass_3x3, 'Simple 3x3 Highpass')
# A slightly "wider", but sill very simple highpass filter
kernel = np.array([[-1, -1, -1, -1, -1],
[-1, 1, 2, 1, -1],
[-1, 2, 4, 2, -1],
[-1, 1, 2, 1, -1],
[-1, -1, -1, -1, -1]])
highpass_5x5 = ndimage.convolve(data, kernel)
plot(highpass_5x5, 'Simple 5x5 Highpass')
# Another way of making a highpass filter is to simply subtract a lowpass
# filtered image from the original. Here, we'll use a simple gaussian filter
# to "blur" (i.e. a lowpass filter) the original.
lowpass = ndimage.gaussian_filter(data, 3)
gauss_highpass = data - lowpass
plot(gauss_highpass, r'Gaussian Highpass, $\sigma = 3 pixels$')
plt.show()

展开全文
• 创作不易，如果此文使您有收获，记得点赞哦！... 高通滤波：高频信息通过，低频信息被阻挡； 低通滤波：低频信息通过，高频信息被阻挡； 带通滤波：介于低频和高频之间的一带信息通过，其它信息被阻挡。 ...
创作不易，如果此文使您有收获，记得点赞哦！

一. 傅里叶变化原理：
https://www.cnblogs.com/wojianxin/p/12529809.html

二. 高通滤波、低通滤波、带通滤波：
高通滤波：高频信息通过，低频信息被阻挡；
低通滤波：低频信息通过，高频信息被阻挡；
带通滤波：介于低频和高频之间的一带信息通过，其它信息被阻挡。

图解高通、低通、带通滤波器 ↑

三. python实现高通滤波实验：
# Writer : wojianxinygcl@163.com

# Data  : 2020.3.20

import cv2

import numpy as np

from matplotlib import pyplot as plt

#读取图像

#傅里叶变换

dft = cv2.dft(np.float32(img), flags = cv2.DFT_COMPLEX_OUTPUT)

fshift = np.fft.fftshift(dft)

#设置高通滤波器

rows, cols = img.shape

crow,ccol = int(rows/2), int(cols/2) #中心位置

mask = np.ones((rows, cols, 2), np.uint8)

#掩膜图像和频谱图像乘积

#傅里叶逆变换

ishift = np.fft.ifftshift(f)

iimg = cv2.idft(ishift)

res = cv2.magnitude(iimg[:,:,0], iimg[:,:,1])

#显示原始图像和高通滤波处理图像

plt.subplot(121), plt.imshow(img, 'gray'), plt.title('Original Image')

plt.axis('off')

plt.subplot(122), plt.imshow(res, 'gray'), plt.title('High Pass Filter Image')

plt.axis('off')

plt.show()

四. 高通滤波实验结果：

高通滤波实验结果 ↑

五. python实现低通滤波实验：
# Writer : wojianxinygcl@163.com

# Data  : 2020.3.20

import cv2

import numpy as np

from matplotlib import pyplot as plt

#读取图像

#傅里叶变换

dft = cv2.dft(np.float32(img), flags = cv2.DFT_COMPLEX_OUTPUT)

fshift = np.fft.fftshift(dft)

#设置低通滤波器

rows, cols = img.shape

crow,ccol = int(rows/2), int(cols/2) #中心位置

mask = np.zeros((rows, cols, 2), np.uint8)

#掩膜图像和频谱图像乘积

#傅里叶逆变换

ishift = np.fft.ifftshift(f)

iimg = cv2.idft(ishift)

res = cv2.magnitude(iimg[:,:,0], iimg[:,:,1])

#显示原始图像和低通滤波处理图像

plt.subplot(121), plt.imshow(img, 'gray'), plt.title('Original Image')

plt.axis('off')

plt.subplot(122), plt.imshow(res, 'gray'), plt.title('Low Pass Filter Image')

plt.axis('off')

plt.show()

六. 低通滤波实验结果：

低通滤波实验结果 ↑

七. python实现带通滤波实验：
# Writer : wojianxinygcl@163.com

# Data  : 2020.3.20

import cv2

import numpy as np

import math

from matplotlib import pyplot as plt

#读取图像

#傅里叶变换

dft = cv2.dft(np.float32(img), flags = cv2.DFT_COMPLEX_OUTPUT)

fshift = np.fft.fftshift(dft)

#设置带通滤波器

# w 带宽

rows, cols = img.shape

crow,ccol = int(rows/2), int(cols/2) #中心位置

w = 30

mask = np.ones((rows, cols, 2), np.uint8)

for i in range(0, rows):

for j in range(0, cols):

# 计算(i, j)到中心点的距离

d = math.sqrt(pow(i - crow, 2) + pow(j - ccol, 2))

if radius - w / 2 < d < radius + w / 2:

else:

#掩膜图像和频谱图像乘积

#傅里叶逆变换

ishift = np.fft.ifftshift(f)

iimg = cv2.idft(ishift)

res = cv2.magnitude(iimg[:,:,0], iimg[:,:,1])

#显示原始图像和带通滤波处理图像

plt.subplot(121), plt.imshow(img, 'gray'), plt.title('Original Image')

plt.axis('off')

plt.subplot(122), plt.imshow(res, 'gray'), plt.title('Band Pass Filter Image')

plt.axis('off')

plt.show()

八. 带通滤波实验结果：

带通滤波实验结果 ↑

九. 总结：
高通滤波，通过了高频信息，提取了图像边缘和噪声；低通滤波，通过了低频信息，保留了图像背景和基本内容，图像边缘被阻挡，图像变模糊；带通滤波，阻挡了部分特别高频信息和特别低频信息，相对高通滤波来讲，提取的图像边缘减少，相对低通滤波来讲，保留的图像内容也减少。

十. 参考内容：
① https://www.cnblogs.com/wojianxin/p/12531004.html
② https://www.jianshu.com/p/28b03ea8592b

十一. 版权声明：
未经作者允许，请勿随意转载抄袭，抄袭情节严重者，作者将考虑追究其法律责任，创作不易，感谢您的理解和配合！
展开全文
• 在运行python高通滤波过程中，出现了图上的错误，请问是因为版本的原因还是其他原因？ img
• plt.subplot(243), plt.imshow(image_high_pass_filtering5, 'gray'), plt.title("半径为50像素的高通滤波"), plt.xticks([]), plt.yticks([]) plt.subplot(247), plt.imshow(image_high_pass_filtering1, 'gray')...
import cv2
import numpy as np
import matplotlib.pyplot as plt
import math
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False    # 用来正常显示负号

def salt_pepper(image, salt, pepper):
"""
添加椒盐噪声的图像
:param image: 输入图像
:param salt: 盐比例
:param pepper: 椒比例
:return: 添加了椒盐噪声的图像
"""
height = image.shape[0]
width = image.shape[1]
pertotal = salt + pepper    #总噪声占比
noise_image = image.copy()
noise_num = int(pertotal * height * width)
for i in range(noise_num):
rows = np.random.randint(0, height-1)
cols = np.random.randint(0,width-1)
if(np.random.randint(0,100)<salt*100):
noise_image[rows][cols] = 255
else:
noise_image[rows][cols] = 0
return noise_image

"""
低通滤波函数
:param image: 输入图像
:return: 滤波结果
"""
# 对图像进行傅里叶变换，fft是一个三维数组，fft[:, :, 0]为实数部分，fft[:, :, 1]为虚数部分
fft = cv2.dft(np.float32(image), flags=cv2.DFT_COMPLEX_OUTPUT)
# 对fft进行中心化，生成的dshift仍然是一个三维数组
dshift = np.fft.fftshift(fft)

# 得到中心像素
rows, cols = image.shape[:2]
mid_row, mid_col = int(rows / 2), int(cols / 2)

# 构建掩模，256位，两个通道
mask = np.zeros((rows, cols, 2), np.float32)

# 给傅里叶变换结果乘掩模
# 傅里叶逆变换
ishift = np.fft.ifftshift(fft_filtering)
image_filtering = cv2.idft(ishift)
image_filtering = cv2.magnitude(image_filtering[:, :, 0], image_filtering[:, :, 1])
# 对逆变换结果进行归一化（一般对图像处理的最后一步都要进行归一化，特殊情况除外）
cv2.normalize(image_filtering, image_filtering, 0, 1, cv2.NORM_MINMAX)
return image_filtering

"""
高通滤波函数
:param image: 输入图像
:param n: ButterWorth滤波器阶数
:return: 滤波结果
"""
# 对图像进行傅里叶变换，fft是一个三维数组，fft[:, :, 0]为实数部分，fft[:, :, 1]为虚数部分
fft = cv2.dft(np.float32(image), flags=cv2.DFT_COMPLEX_OUTPUT)
# 对fft进行中心化，生成的dshift仍然是一个三维数组
dshift = np.fft.fftshift(fft)

# 得到中心像素
rows, cols = image.shape[:2]
mid_row, mid_col = int(rows / 2), int(cols / 2)

# 构建ButterWorth高通滤波掩模

mask = np.zeros((rows, cols, 2), np.float32)
for i in range(0, rows):
for j in range(0, cols):
# 计算(i, j)到中心点的距离
d = math.sqrt(pow(i - mid_row, 2) + pow(j - mid_col, 2))
try:
except ZeroDivisionError:
# 给傅里叶变换结果乘掩模
# 傅里叶逆变换
ishift = np.fft.ifftshift(fft_filtering)
image_filtering = cv2.idft(ishift)
image_filtering = cv2.magnitude(image_filtering[:, :, 0], image_filtering[:, :, 1])
# 对逆变换结果进行归一化（一般对图像处理的最后一步都要进行归一化，特殊情况除外）
cv2.normalize(image_filtering, image_filtering, 0, 1, cv2.NORM_MINMAX)
return image_filtering

"""
带通滤波函数
:param image: 输入图像
:param w: 带宽
:param n: 阶数
:return: 滤波结果
"""
# 对图像进行傅里叶变换，fft是一个三维数组，fft[:, :, 0]为实数部分，fft[:, :, 1]为虚数部分
fft = cv2.dft(np.float32(image), flags=cv2.DFT_COMPLEX_OUTPUT)
# 对fft进行中心化，生成的dshift仍然是一个三维数组
dshift = np.fft.fftshift(fft)

# 得到中心像素
rows, cols = image.shape[:2]
mid_row, mid_col = int(rows / 2), int(cols / 2)

# 构建掩模，256位，两个通道
mask = np.zeros((rows, cols, 2), np.float32)
for i in range(0, rows):
for j in range(0, cols):
# 计算(i, j)到中心点的距离
d = math.sqrt(pow(i - mid_row, 2) + pow(j - mid_col, 2))
if radius - w / 2 < d < radius + w / 2:
else:

# 给傅里叶变换结果乘掩模
# 傅里叶逆变换
ishift = np.fft.ifftshift(fft_filtering)
image_filtering = cv2.idft(ishift)
image_filtering = cv2.magnitude(image_filtering[:, :, 0], image_filtering[:, :, 1])
# 对逆变换结果进行归一化（一般对图像处理的最后一步都要进行归一化，特殊情况除外）
cv2.normalize(image_filtering, image_filtering, 0, 1, cv2.NORM_MINMAX)
return image_filtering

"""
带通滤波函数
:param image: 输入图像
:param w: 带宽
:param n: 阶数
:return: 滤波结果
"""
# 对图像进行傅里叶变换，fft是一个三维数组，fft[:, :, 0]为实数部分，fft[:, :, 1]为虚数部分
fft = cv2.dft(np.float32(image), flags=cv2.DFT_COMPLEX_OUTPUT)
# 对fft进行中心化，生成的dshift仍然是一个三维数组
dshift = np.fft.fftshift(fft)

# 得到中心像素
rows, cols = image.shape[:2]
mid_row, mid_col = int(rows / 2), int(cols / 2)

# 构建掩模，256位，两个通道
mask = np.zeros((rows, cols, 2), np.float32)
for i in range(0, rows):
for j in range(0, cols):
# 计算(i, j)到中心点的距离
d = math.sqrt(pow(i - mid_row, 2) + pow(j - mid_col, 2))
if radius - w / 2 < d < radius + w / 2:
else:

# 给傅里叶变换结果乘掩模
# 傅里叶逆变换
ishift = np.fft.ifftshift(fft_filtering)
image_filtering = cv2.idft(ishift)
image_filtering = cv2.magnitude(image_filtering[:, :, 0], image_filtering[:, :, 1])
# 对逆变换结果进行归一化（一般对图像处理的最后一步都要进行归一化，特殊情况除外）
cv2.normalize(image_filtering, image_filtering, 0, 1, cv2.NORM_MINMAX)
return image_filtering

if __name__ == "__main__":
# image_noise = salt_pepper(image, 0.05, 0.05)
image_low_pass_filtering5 = low_pass_filtering(image, 50)
image_low_pass_filtering1 = low_pass_filtering(image, 10)
image_high_pass_filtering5 = high_pass_filtering(image, 50, 1)
image_high_pass_filtering1 = high_pass_filtering(image, 10, 1)
image_bandpass_filtering5 = bandpass_filter(image, 30, 56, 1)
image_bandstop_filtering5 = bandstop_filter(image, 30, 56, 1)
plt.subplot(241), plt.imshow(image, 'gray'), plt.title("原图"), plt.xticks([]), plt.yticks([])
# plt.subplot(334), plt.imshow(image_noise, 'gray'), plt.title("添加了椒盐噪声的图像"), plt.xticks([]), plt.yticks([])
plt.subplot(242), plt.imshow(image_low_pass_filtering5, 'gray'), plt.title("半径为50像素的低通滤波"), plt.xticks([]), plt.yticks([])
plt.subplot(246), plt.imshow(image_low_pass_filtering1, 'gray'), plt.title("半径为10像素的低通滤波"), plt.xticks([]), plt.yticks([])
plt.subplot(243), plt.imshow(image_high_pass_filtering5, 'gray'), plt.title("半径为50像素的高通滤波"), plt.xticks([]), plt.yticks([])
plt.subplot(247), plt.imshow(image_high_pass_filtering1, 'gray'), plt.title("半径为10像素的高通滤波"), plt.xticks([]), plt.yticks([])
plt.subplot(244), plt.imshow(image_bandpass_filtering5, 'gray'), plt.title("带通滤波"), plt.xticks([]), plt.yticks([])
plt.subplot(248), plt.imshow(image_bandstop_filtering5, 'gray'), plt.title("带阻滤波"), plt.xticks([]), plt.yticks([])
plt.show()


展开全文
• 本文将继续补充基于傅里叶变换的高通滤波和低通滤波。基础性文章，希望对你有所帮助。同时，该部分知识均为杨秀璋查阅资料撰写，转载请署名CSDN+杨秀璋及原地址出处，谢谢！！ 1.高通滤波 2.低通滤波 3.本章小结
该系列文章是讲解Python OpenCV图像处理知识，前期主要讲解图像入门、OpenCV基础用法，中期讲解图像处理的各种算法，包括图像锐化算子、图像增强技术、图像分割等，后期结合深度学习研究图像识别、图像分类应用。希望文章对您有所帮助，如果有不足之处，还请海涵~
前面一篇文章我讲解了傅里叶变换，它将时间域上的信号转变为频率域上的信号，用来进行图像除噪、图像增强等处理。本文将继续补充基于傅里叶变换的高通滤波和低通滤波。基础性文章，希望对你有所帮助。 同时，该部分知识均为杨秀璋查阅资料撰写，未经授权禁止转载，谢谢！！如果有问题随时私聊我，只望您能从这个系列中学到知识，一起加油喔~
1.高通滤波 2.低通滤波 3.本章小结
该系列在github所有源代码：

https://github.com/eastmountyxz/ImageProcessing-Python

PS：请求帮忙点个Star，哈哈，第一次使用Github，以后会分享更多代码，一起加油。
同时推荐作者的C++图像系列知识：

[数字图像处理] 一.MFC详解显示BMP格式图片


展开全文
• #高通滤波 rows,cols = img.shape crow,ccol = int(rows/2),int(cols/2) fshift[crow-30:crow+30,ccol-30:ccol+30] = 0 #逆傅里叶变换 ishift = np.fft.ifftshift(fshift) iimg = np.fft.ifft2(ishift) iimg = np....
• 本专栏主要介绍如果通过OpenCv-Python进行图像处理，通过原理理解OpenCv-Python的函数处理原型，在具体情况中，针对不同的图像进行不同等级的、不同方法的处理，以达到对图像进行去噪、锐化等一系列的操作。...
• 今天小编就为大家分享一篇Python利用FFT进行简单滤波的实现，具有很好的参考价值，希望对大家有所帮助。一起跟随小编过来看看吧
• 用matlab实现快速傅里叶变换及其逆变换，另外对图像的频域进行高通滤波
• 理想高通滤波实现 python opencv import numpy as np import cv2 from matplotlib import pyplot as plt plt.rcParams[‘font.sans-serif’]=[‘SimHei’] plt.rcParams[‘axes.unicode_minus’] = False I = ...
• 高通滤波与低通滤波正好相反，是频域图像的高频部分通过而抑制低频部分。在图像中图像的边缘对应高频分量，因此高通滤波的效果是图像锐化。同样最简单的高通滤波器是理想高通滤波器。通过设置一个频率阈值，将高于该...
• 在OpenCV-Python中，使用Sobel的算子的函数原型如下： dst = cv2.Sobel(src, ddepth, dx, dy[, dst[, ksize[, scale[, delta[, borderType]]]]]) 函数返回其处理结果。 前四个是必须的参数： ...
• 1.基于python的频域滤波，使用OpenCV等 2.主要设计频域滤波器 3.有丰富的图片
• 巴特沃斯高通滤波 n阶巴特沃斯高通滤波的传递函数如下： H(u,v)=1−11+(D(u,v)/D0)2n(7-1) H(u,v) = 1 - \frac{1}{1 + (D(u,v) / D_0)^{2n}} \tag{7-1} H(u,v)=1−1+(D(u,v)/D0​)2n1​(7-1) 其中，D(u,v)=(u−P2)2+...
• back = np.abs(img_back) cv.imwrite("img3_1back.png", img_back) def gaotonglvbo(): """ 高通滤波 :return: """ img_man = cv.imread('3_1.png', 0) rows, cols = img_man.shape h = int(rows / 2) v = int(cols ...
• 影像融合，包括基于高通滤波的加权融合和非加权融合、基于HIS变换的融合 ，其中基于HIS变换的融合需要较多时间，这是由于直方图匹配要花费很多时 间，具体算法可以参考武大贾永红的《数字图像处理》一书
• 本节将要介绍OpenCV 提供的三种不同的梯度滤波器，或者说高通滤波器：Sobel，Scharr 和 Laplacian。 总的来说：Sobel，Scharr 其实就是求一阶或二阶导数。Scharr 是对 Sobel（使用小的卷积核求解求解梯度角度时）的...
• 借用python巴特沃斯低通滤波公式得到滤波参数，用C语言概念写出滤波公式
• 高通滤波，3.带通滤波，4.带阻滤波器。具体的含义大家可以查阅大学课程，信号与系统。简单的理解就是低通滤波指的是去除高于某一阈值频率的信号；高通滤波去除低于某一频率的信号；带通滤波指的是类似低通高通的结合...
• 所以，高通滤波器，只通过高频信息，所以留下来的图像只有边缘等细节信息，看起来像简笔画。 低通滤波器同理。 效果图 代码 import numpy as np import matplotlib.pyplot as plt import cv2 #####################...
• 主要介绍了Python图像的增强处理操作,结合实例形式分析了使用ImageEnhance类处理图片的亮度、对比度、色度以及锐度等相关操作技巧,需要的朋友可以参考下
• 高通滤波结果展示： #-*- coding: utf-8 -*- """ Created on Mon Jun 22 14:39:10 2020 答疑：李立宗 lilizong@gmail.com """ import numpy as np import pandas as pd from scipy import signal import ...
• 1、一阶RC高通滤波器 1.1 电路图 （1）微分公式： VO=RC(dVidt−dVOdt）V_O=RC(\frac{dV_i}{dt}-\frac{dV_O}{dt}）VO​=RC(dtdVi​​−dtdVO​​） （2）微分公式离散化 Vo(n)=RC/T[Vi(n)−Vi(n−1)]−[Vo(n)−Vo(n...
• 高通滤波numpy实现 高通滤波：将频谱图像的中心的位置区域设置为0（中心部位为低频，之前傅里叶变换将低频移到中心位置啦，由前文得知低频为白色） import cv2 import numpy as np import matplotlib.pyplot as plt...
• 梯形高通滤波 梯形高通滤波器(TLPF)的传递函数如下：  H(u,v) = 1 - \begin{cases} 1 & D(u,v) \lt D_0 \\ \frac{D(u,v) - D_1}{D_0-D_1} & D_0 \lt D(u,v) \leq D_1 \\ 0 &D(u,v) > D_1 \end{...
• 点击此处返回总目录 本次课介绍在频域进行高通滤波。 频域就是傅里叶域。 一、高频和低频 低频：细节。 高频：边界。 ...
• 高通滤波法 理想高通滤波器 Butterworth 高通滤波器 指数高通滤波器 微分算子法 Roberts 算子 Sobel 算子 Laplacian 算子 Canny 算子 神经网络方法 HED 算法 高通滤波法 图像中的边缘或线条等细节部分与...

...

python 订阅