如何使用opencv(python / c ++)从图像中删除模糊



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

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

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

以下是您可以尝试的其他锐化内核

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()

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

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

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

最新更新