使用 scipy/numpy 在 python 中进行图像处理的高通滤波器
我目前正在学习图像处理。在SciPy中,我知道scipy.signal中有一个中值滤波器。有没有类似于高通滤波器的滤波器?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我目前正在学习图像处理。在SciPy中,我知道scipy.signal中有一个中值滤波器。有没有类似于高通滤波器的滤波器?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(5)
“高通滤波器”是一个非常通用的术语。有无数种不同的“高通滤波器”,它们可以做非常不同的事情(例如,边缘检测滤波器,如前所述,在技术上是高通(大多数实际上是带通)滤波器,但具有与您可能的效果非常不同的效果)无论如何
,根据您提出的大多数问题,您可能应该研究
scipy.ndimage
而不是scipy.filter
,特别是当您要处理大图像时(ndimage 可以预先形成就地操作,节省内存)。作为一个基本示例,展示了几种不同的处理方式:
"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 ofscipy.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:
以下是我们如何使用 scipy fftpack 设计 HPF
原始图像
FFT 频谱
阻止频谱中的低频
应用 HPF 后的输出图像
Here is how we can design a HPF with
scipy fftpack
Original Image
Frequency Spectrum with FFT
Block low Frequencies in the Spectrum
Output Image after applying the HPF
一个简单的高通滤波器是:
Sobel 运算符 是另一个简单的示例。
在图像处理中,这类过滤器通常称为“边缘检测器” - 维基百科页面 没问题我上次检查过这一点。
One simple high-pass filter is:
The Sobel operator is another simple example.
In image processing these sorts of filters are often called "edge-detectors" - the Wikipedia page was OK on this last time I checked.
scipy.filter 包含大量通用过滤器。类似于 iirfilter 类可以配置为产生典型的切比雪夫或巴特沃斯数字或模拟高通滤波器。
scipy.filter contains a large number of generic filters. Something like the iirfilter class can be configured to yield the typical Chebyshev or Buttworth digital or analog high pass filters.
您可以使用高斯滤波器,因为它比纯 HPF 提供更多清晰度,对于使用简单的 HPF,您可以使用以下代码
要使用高斯滤波器,只需将高斯模糊添加到图像中
然后从原始图像中减去它
原始代码来自: 使用 Python 和 OpenCV 通过高通滤波器进行图像锐化
You can use a Gaussian filter as it gives much sharpness than a pure HPF, for using a simple HPF you can use the following code
To use the Gaussian filter just add the Gaussian blur to your image
Then minus it from the original image
Original code taken from : Image Sharpening by High Pass Filter using Python and OpenCV