python - 试图在 opencv(python)中实现低通频率滤波器但得到的结果不准确

标签 python opencv image-processing

我正在尝试在 opencv python 中实现理想的低通滤波器。我不确定我在这里做错了什么。有人可以指导我吗。

我遵循了以下步骤

  1. 阅读图片
  2. 获取图片的fft --> f
  3. crate 面具
  4. 获取掩码的 fft --> h
  5. 将 f 与 h 相乘 --> g
  6. 得到g的倒数

代码如下

#!/usr/bin/env python

import cv2
import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread('1.tif', 0)
height, width = img.shape

plt.figure("Input")
plt.subplot(221),plt.imshow(img, cmap = 'gray')
plt.title('Image'), plt.xticks([]), plt.yticks([])

fft = np.log(np.abs(np.fft.fftshift(np.fft.fft2(img))))
plt.subplot(222),plt.imshow(fft, cmap = 'gray')
plt.title('Fourier Transform'), plt.xticks([]), plt.yticks([])

r = 20
h_Filter_Low_Pass = np.zeros(img.size, img.dtype).reshape(img.shape)
for icounter in range(1, height):
    for jcounter in range(1, width):
        if ((icounter - height/2)**2 + (jcounter - width/2)**2) < r**2:
            h_Filter_Low_Pass[icounter, jcounter] = 1
plt.subplot(223),plt.imshow(h_Filter_Low_Pass, cmap = 'gray')
plt.title('Filter'), plt.xticks([]), plt.yticks([])

h_fft = np.log(np.abs(np.fft.fftshift(np.fft.fft2(h_Filter_Low_Pass))))
plt.subplot(224),plt.imshow(h_fft, cmap = 'gray')
plt.title('Fourier Transform (Filter)'), plt.xticks([]), plt.yticks([])


plt.figure("Output")
g = fft * h_fft
g_ifft = np.abs(np.fft.ifftshift(np.fft.ifft2(g)).real)
plt.subplot(),plt.imshow(g_ifft, cmap = 'gray')
plt.title(''), plt.xticks([]), plt.yticks([])
plt.show()

以下是输出enter image description here我得到 enter image description here

最佳答案

在您的步骤中,您不会进行低通处理,而是将图像与蒙版进行卷积。做一个低通,步骤是:

  1. 阅读图片
  2. 获取图片的fft --> f
  3. crate 面具
  4. 将 f 与掩码相乘 --> g
  5. 得到g的倒数

关于python - 试图在 opencv(python)中实现低通频率滤波器但得到的结果不准确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44102017/

相关文章:

python - pandas.to_datetime 包含最后两位数字的年份

python - pandas 中所有 NaN 的总和返回零?

python - 使用 PIP 在 OSX (yosemite) 上安装 psycopg 时出错

python - 为什么我的轮廓没有被 opencv 完全填充?

python - 使用 OpenCV 读取图像,改变像素并返回新图像

python - GTK - Python Treeview 排序列数据(文件大小 - 字节数据)

python - 如何从图像中去除颜色

image - 变形 2 张面孔图像

matlab - N维小波变换

c++ - tbb::parallel_reduce 对比 tbb::combinable 对比 tbb::enumerable_thread_specific