Я пытаюсь восстановить и улучшить детали изображения на нескольких фотографиях. Я попытался выявить детали, увеличив резкость с cv2.filter2D()
и простыми ядрами .
Я пробовал ядро обнаружения ребер
[-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)