python - 简单图像反卷积问题

标签 python python-2.7 image-processing

我正在研究一些非常简单的图像反卷积以证明概念。

目标是将图像与内核(我使用的是 5*5 高斯矩阵)进行卷积,然后在傅立叶域中对其进行反卷积。

通过对图像矩阵和滤波器内核进行 FFT,元素相乘 他们在一起,并采用结果的 iFFT,我能够获得相同的结果 作为滑动核卷积。要撤消此卷积,我应该能够进行元素划分 图像的 FFT 和滤波器的 FFT。

但是,当我尝试实现它时,我最终得到了一个非常奇怪的纹理。我知道我的方法是正确的,但我似乎无法在我的代码中找到错误,这让我抓狂。

# blur image
imblur = filters.convolve(im1, blurfilter)

# compute fft of kernel with padding
padfilfft = np.fft.fft2(blurfilter, s=im1.shape[:2], axes=(0,1))    

# take fft of image
imfft = np.fft.fft2(imblur)

# element division
deconvolveimfft = np.divide(imfft, padfilfft)
deconvolveim = np.abs(np.fft.ifft2(deconvolveimfft))

这是使用 plt.imshow() 的输出:

typical, problematic output

这是原图。我正在使用 misc.imread 进行扁平化阅读: cheering

就其值(value)而言,blurfilter 定义如下: blurfilter = (1./273.) * np.array([[1,4,7,4,1],[4,16,26,16,4],[7,26,41,26 ,7],[4,16,26,16,4],[1,4,7,4,1]])

最佳答案

好的,所以我实际上能够弄明白。事实证明这是我内核的一个“问题”。我发现,一般来说,sigma > 1 的高斯核会产生这种奇怪的噪声问题。正如@MarkRansom 在评论中指出的那样,过滤器的 fft 变得非常接近于零。出于某种原因,当我们使用 σ<1 的内核时,噪声放大会少得多。

关于python - 简单图像反卷积问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29136706/

相关文章:

图像转换库 : Word, PDF、Excel 到图像

python - 通过 WSGI 的 REMOTE_PORT

python - Python 类实例是否有一个属性来获取类名?

验证时间输入的 Pythonic 方法(仅适用于 Hr、Min、Sec)

python-2.7 - 如何安排 dag 运行一年中一个月的特定时间。即,一次

opencv - 从 IPLImage 到 Mat

python - 帮助清理一些 Python 代码

python-2.7 - 使用 python 的 openssl 模块时,何时将 TLSv1.2 密码添加为默认选择

python - 收集函数的值

python - 使用修正的Hausdorff距离查找形状