根据@Fix 的建议进行更新,我应该将 BGR 转换为 RGB,但输出仍然与论文的输出不同。
(小记:这篇文章已经在https://dsp.stackexchange.com/posts/60670上发布,但由于我需要快速帮助,所以我想我在这里重新发布,希望这不会违反任何政策)
我尝试使用 PSF 内核(以 png 格式)从真实图像创建合成模糊图像,一些论文只提到我需要对其进行卷积操作,但似乎我需要的不止这些。我做了什么
import matplotlib.pyplot as plt
import cv2 as cv
import scipy
from scipy import ndimage
import matplotlib.image as mpimg
import numpy as np
img = cv.imread('../dataset/text_01.png')
norm_image = cv.normalize(img, None, alpha=-0.1, beta=1.8, norm_type=cv.NORM_MINMAX, dtype=cv.CV_32F)
f = cv.imread('../matlab/uniform_kernel/kernel_01.png')
norm_f = cv.normalize(f, None, alpha=0, beta=1, norm_type=cv.NORM_MINMAX, dtype=cv.CV_32F)
result = ndimage.convolve(norm_image, norm_f, mode='nearest')
result = np.clip(result, 0, 1)
imgplot = plt.imshow(result)
plt.show()
这只会给我一个全白的图像。我试图将 beta 降低到像这里这样的较低数字norm_f = cv.normalize(f, None, alpha=0, beta=0.03, norm_type=cv.NORM_MINMAX, dtype=cv.CV_32F)
,并且图像出现了,但它的颜色非常不同。
我知道如何做到这一点的论文和数据集(具有地面实况和 PNG 格式的 PSF 内核的图像)在这里
他们是这样说的:
我们以类似于 [3, 10] 的方式创建合成饱和图像。具体来说,我们首先将潜在图像的强度范围从 [0,1] 拉伸到 [-0.1,1.8],并将模糊核与图像进行卷积。然后我们将模糊图像剪辑到 [0,1] 的范围内。采用相同的过程来生成不均匀的模糊图像。
请帮帮我,解决方案并不重要,即使它是一个软件,另一种语言,另一种工具。我只关心最终我从具有良好性能的 PSF 内核的原始(清晰)图像合成模糊图像(我在 Matlab 上尝试过,但遇到了类似的问题,我使用了 imfilter,Matlab 的另一个问题是它们很慢)。
(请不要判断只关心过程的输出,我没有使用反卷积方法将模糊模糊回原始图像,因此我希望有足够的数据集(原始和模糊)对来测试我的假设/方法)
谢谢。