【问题标题】:How to remove blurriness from an image using opencv (python/c++)如何使用opencv(python/c++)从图像中去除模糊
【发布时间】:2019-10-09 16:35:34
【问题描述】:

我正在使用opencv 来检测实时视频源中的人。我需要保存检测到的人的图像。但是这里的人并没有站立,而是一直在移动,因此当我要保存图像时,它以非常模糊的格式保存,如下图:

如您所见,图像不是很清晰,而且有很多模糊之处。脸也不清楚。无论如何,我们可以从图像中消除模糊。谢谢

【问题讨论】:

  • 减少曝光时间。再多的反卷积也无法使人脸更容易辨认。

标签: python image opencv image-processing blur


【解决方案1】:

您可以尝试使用cv2.filter2D() 和通用锐化内核来锐化图像

这里有其他 sharpening kernels 你可以尝试

import cv2
import numpy as np

image = cv2.imread('1.jpg')
sharpen_kernel = np.array([[-1,-1,-1], [-1,9,-1], [-1,-1,-1]])
sharpen = cv2.filter2D(image, -1, sharpen_kernel)

cv2.imshow('sharpen', sharpen)
cv2.waitKey()

【讨论】:

  • 您能否详细说明您是如何提出过滤器[[-1,-1,-1], [-1,9,-1], [-1,-1,-1]] 的?您共享的 wiki 文章具有不同的过滤器。我尝试实现unsharp masking 过滤器(如文章所示),但我没有得到预期的结果
  • 这只是 wiki 上的另一个锐化滤镜。
【解决方案2】:

正如@nathancy 所建议的,您可以尝试基于形态学的操作,这在所有情况下都有效,但它需要根据图像形状、噪声水平调整滤波器尺寸,而且还会导致图像质量下降。

最近,生成对抗网络 (GAN) 也因重新生成图像而受到关注,并且似乎在图像质量增强方面很有前景。

这篇文章(https://medium.com/machine-learning-world/deblur-photos-using-generic-pix2pix-6f8774f9701e) 描述了一种基于 GAN(基于 pixtopix 模型)的图像去模糊解决方案,这也可能适用于您的情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-29
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    • 2019-04-08
    相关资源
    最近更新 更多