简单图像反褶积问题

2024-10-04 09:18:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一些非常简单的图像反褶积来证明概念。在

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

通过对图像矩阵和滤波器核进行FFT运算,实现了元素相乘 他们在一起,并采取的结果,我能够达到同样的结果 作为滑动核卷积。为了解开这个卷积,我应该能够进行元素除法 图像的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))

以下是使用IMPLT显示():

{1美元^

这是原图。我在使用misc.imread和平坦一起阅读: cheering

对于它的价值,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]])


Tags: of图像imagefft元素np矩阵卷积
1条回答
网友
1楼 · 发布于 2024-10-04 09:18:16

好吧,所以我真的能弄明白。结果是我的内核出了问题。我发现,一般来说,带有sigma>;1的高斯核会产生这种奇怪的噪声问题。正如@MarkRansom在评论中指出的,滤波器的fft非常接近于零。由于某些原因,当我们使用σ<;1的核时,噪声放大要小得多。在

相关问题 更多 >