【发布时间】:2019-11-10 17:49:43
【问题描述】:
我正在尝试恢复和增强多张照片的图像细节。我试图通过增加cv2.filter2D() 和simple kernels 的清晰度来显示细节。
我已经尝试过边缘检测内核
[-1 -1 -1]
[-1 9 -1]
[-1 -1 -1]
还有一个锐化的内核
[ 0 -1 0]
[-1 5 -1]
[ 0 -1 0]
但结果看起来颗粒状且不自然。为了消除噪音,我尝试了cv2.medianBlur() 和cv2.GaussianBlur() 等模糊技术,但效果并不理想。图像背景模糊或较暗,这使得特征难以区分。有没有更好的方法来显示更多细节,尤其是在背景中?对 Python 或 C++ 开放
输入图像
import numpy as np
import cv2
img = cv2.imread('people.jpg')
grayscale = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# edge_kernel = np.array([[-1,-1,-1], [-1,9,-1], [-1,-1,-1]])
sharpen_kernel = np.array([[0,-1,0], [-1,5,-1], [0,-1,0]])
img = cv2.filter2D(grayscale, -1, sharpen_kernel)
# Smooth out image
# blur = cv2.medianBlur(img, 3)
blur = cv2.GaussianBlur(img, (3,3), 0)
cv2.imshow('img',img)
cv2.imwrite('img.png',img)
cv2.imshow('blur',blur)
cv2.waitKey(0)
【问题讨论】:
-
您可以使用 pyTorch 获得更好的结果:github.com/pytorch/examples/tree/master/super_resolution
标签: python c++ opencv image-processing computer-vision