【问题标题】:Image de-blurring图像去模糊
【发布时间】:2018-07-13 04:45:55
【问题描述】:

这篇文章分为两部分


第一部分

我在将图像从灰度转换回 RGB 时遇到了一点问题。

有问题的图片:

我用这段代码来转换它:

equ = cv2.cvtColor(equ, cv2.COLOR_GRAY2RGB)

虽然没有成功...


第二部分

此外,我需要对此类图像进行去模糊处理。 Here 我发现了一些使用维纳过滤器的代码,但是当我实现它时,它似乎不能有效地工作。代码如下:

psf = np.ones((5, 5)) / 25
img = convolve2d(equ, psf, 'same')
img += 0.1 * img.std() * np.random.standard_normal(img.shape)
#deconvolved_img = restoration.wiener(img, psf, 1100)
deconvolved = restoration.wiener(img, psf, 1, clip=False)
plt.imshow(deconvolved, cmap='gray')

这是输出:

非常感谢您对这两个问题的任何帮助!

【问题讨论】:

  • 对于您的第 1 部分,如果您使用 equ = cv2.cvtColor(equ, cv2.COLOR_GRAY2RGB),您应该得到一个 3 通道图像,但没有颜色,因为所有通道的值都与灰度图像相同。
  • @LakshyaKejriwal 但是我该如何回到RGB 格式呢?我将图像转换为grayscale,以便对其执行直方图均衡化,据我所知,去模糊也是在图像的grayscale 版本上完成的
  • OpenCV 没有任何内置函数来为灰度图像着色。为此,您需要研究像 this 这样使用深度学习的开源项目。

标签: python opencv rgb scikit-image grayscale


【解决方案1】:

要均衡彩色图像,似乎很常见的做法是

  • 将图像转换为 HSV 或 YUV
  • 将图像拆分为单独的组件(例如 H、S、V)
  • 均衡价值渠道(或所有三个,如果你想)
  • 将频道重新合并在一起

    hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
    split = cv2.split(hsv)  # split is a 3D array containing H S V info
    split[2] = cv2.equalizeHist(split[2])
    hsv = cv2.merge(split)
    img = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR)
    

对于“去模糊”,我有时会使用不清晰的蒙版。从Wikipedia page on unsharp masking,这个操作的公式是

锐化=原始+(原始-模糊)×数量

可以重新排列为

锐化=原始×(1 +数量)+模糊×(-数量)

维基百科说amount 的一个很好的起点是 0.5 到 1.5。在我的应用程序中,我有一个旋转框,让它在 0 和 10 之间变化。对于模糊,我使用内核大小从 1 到 31(必须是奇数和整数)的高斯模糊。要进行矩阵数学运算,我更喜欢使用 OpenCV 函数,因为它们通常比 NumPy 更快,并且它们通常会将输出自动缩放到 0 到 255 之间的值(例如,对于 8 位和 8 位/3 通道图像)。这里我们使用addWeighted

dst = src1*alpha + src2*beta + gamma;

amount = 1.5
ksize = 3
blur = cv2.GaussianBlur(img, ksize, 0, 0)
unsharp = cv.addWeighted(img, 1 + amount, blur, -amount, 0)

【讨论】:

  • 感谢您的回答!如果我没有原始图像,您有什么建议?我只有一个模糊的。
  • @StefanoPozzi,找回原件的唯一方法是使用时间机器或备份。我知道的光栅文件中没有历史信息。当然,您可以想象对原始文件进行重命名的副本以防止意外覆盖是个好主意。相信我,我们都做到了。如果您的原始图像在 Windows 文件服务器上的共享上,也许您可​​以使用 Properties...Previous Versions 取回它。祝你好运。
  • 这实际上是我被分配到大学做的一项任务。分配是Take a (blurry) image with your phone (or a camera) and transfer it to your computer. Perform some basic image analysis steps to enhance the image: a) Histogram equalization (with comments and plots) b) De-blurring (de-noising) of the image by application of a suitable filter (either on space/frequency filed) and experiment with different choices and provide comments. c) Edge detection using one (or more) technique.
  • 好的。如果这是分配,则不需要“好”原始图像。看来任务的重点是拍一张“坏”的照片,并对其进行一些图像处理。
猜你喜欢
  • 2019-05-13
  • 2013-08-29
  • 2013-03-02
  • 2017-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-24
相关资源
最近更新 更多