2011-02-14 50 views

Respuesta

132

Un procedimiento general se presenta en the wikipedia article on unsharp masking: Se utiliza un filtro de suavizado gaussiano y restar la versión suavizada de la imagen original (de una manera ponderada por lo que los valores de un área constante permanecen constantes).

Para obtener una versión de afilado de frame en image: (tanto cv::Mat)

cv::GaussianBlur(frame, image, cv::Size(0, 0), 3); 
cv::addWeighted(frame, 1.5, image, -0.5, 0, image); 

Los parámetros que hay algo que tiene que ajustar por sí mismo.

También hay afilado laplaciano, debería encontrar algo sobre eso cuando googlee.

+0

¿Hay una manera de replicar el resultado de Photoshop de la Máscara de enfoque? – Royi

+0

@Drazick ¿Estás preguntando porque no se puede replicar? el enlace a la wikipedia se ha dado arriba. [digital_unsharp_masking] (https://en.wikipedia.org/wiki/Unsharp_masking#Digital_unsharp_masking) para ser específico – tilaprimera

+0

@tilaprimera, pregunto porque el USM de Photoshop es diferente del USM "clásico". – Royi

-4

intento con esto:

cv::bilateralFilter(img,9,75,75); 

Usted puede encontrar más información here

+6

La cuestión es sobre la nitidez de la imagen, no el suavizado de preservación de bordes. –

12

se puede encontrar un código de ejemplo la misma utilizando "máscara de enfoque" algoritmo de sobre afilado en OpenCV Documentation

valores cambiantes de sigma, threshold, amount dará resultados diferentes

// sharpen image using "unsharp mask" algorithm 
Mat blurred; double sigma = 1, threshold = 5, amount = 1; 
GaussianBlur(img, blurred, Size(), sigma, sigma); 
Mat lowContrastMask = abs(img - blurred) < threshold; 
Mat sharpened = img*(1+amount) + blurred*(-amount); 
img.copyTo(sharpened, lowContrastMask); 
Cuestiones relacionadas