Enmascaramiento de enfoque - Unsharp masking

Máscara de enfoque aplicada a la parte inferior de la imagen

El enmascaramiento de enfoque ( USM ) es una técnica de nitidez de imagen , a menudo disponible en software de procesamiento de imágenes digitales . Su nombre deriva del hecho de que la técnica utiliza una imagen negativa borrosa o "desenfocada" para crear una máscara de la imagen original. Luego, la máscara de enfoque se combina con la imagen positiva original, creando una imagen menos borrosa que la original. La imagen resultante, aunque más clara, puede ser una representación menos precisa del sujeto de la imagen. En el contexto del procesamiento de señales , una máscara de enfoque es generalmente un filtro lineal o no lineal que amplifica los componentes de alta frecuencia de una señal.

Enmascaramiento de desenfoque de cuarto oscuro fotográfico

Principio simplificado de enmascaramiento de enfoque

Para el proceso de cuarto oscuro fotográfico, un negativo de placa de vidrio de gran formato se copia por contacto en una película o placa de bajo contraste para crear una imagen positiva. Sin embargo, la copia positiva se hace con el material de copia en contacto con la parte posterior del original, en lugar de emulsión a emulsión , por lo que se ve borrosa. Después de procesar este positivo borroso se reemplaza en contacto con la parte posterior del negativo original. Cuando la luz pasa a través del negativo y del positivo en registro (en una ampliadora , por ejemplo), el positivo cancela parcialmente parte de la información del negativo.

Debido a que el positivo se ha difuminado intencionalmente, solo se cancela la información de baja frecuencia (borrosa). Además, la máscara reduce eficazmente el rango dinámico del negativo original. Por lo tanto, si la imagen ampliada resultante se graba en papel fotográfico de contraste , la cancelación parcial enfatiza la información de alta frecuencia espacial (detalles finos) en el original, sin pérdida de detalles de luces o sombras. La impresión resultante parece más nítida que una realizada sin la máscara de desenfoque : aumenta su agudeza .

En el procedimiento fotográfico, la cantidad de desenfoque se puede controlar cambiando la "suavidad" o "dureza" (de fuente puntual a completamente difusa) de la fuente de luz utilizada para la exposición inicial de la máscara de enfoque, mientras que la fuerza del efecto se puede reducir. controlado cambiando el contraste y la densidad (es decir, exposición y revelado) de la máscara de enfoque.

Para la fotografía tradicional, el enmascaramiento de enfoque generalmente se usa en materiales monocromáticos ; Se han disponible películas pancromáticas especiales en blanco y negro de trabajo suave para enmascarar transparencias fotográficas en color. Esto ha sido especialmente útil para controlar el rango de densidad de una transparencia destinada a la reproducción fotomecánica .

Enmascaramiento de desenfoque digital

Imagen de origen (arriba),
imagen más nítida (medio),
imagen muy nítida (abajo)

El mismo principio de diferenciación se utiliza en la herramienta de enmascaramiento de enfoque en muchos paquetes de software de imágenes digitales, como Adobe Photoshop y GIMP . El software aplica un desenfoque gaussiano a una copia de la imagen original y luego la compara con el original. Si la diferencia es mayor que una configuración de umbral especificada por el usuario, las imágenes se restan (de hecho).

El enmascaramiento digital de enfoque es una forma flexible y poderosa de aumentar la nitidez, especialmente en imágenes escaneadas . Desafortunadamente, puede crear efectos de borde llamativos no deseados o aumentar el ruido de la imagen . Sin embargo, estos efectos se pueden utilizar de forma creativa, especialmente si se afina un solo canal de una imagen RGB o de laboratorio . Los efectos no deseados se pueden reducir mediante el uso de una máscara, en particular una creada por detección de bordes, para aplicar únicamente la nitidez a las regiones deseadas, lo que a veces se denomina "nitidez inteligente".

Normalmente, el enmascaramiento de desenfoque digital se controla mediante la cantidad, el radio y el umbral:

  • La cantidad se muestra como un porcentaje y controla la magnitud de cada sobreimpulso (cuánto más oscuros y cuánto más claros se vuelven los bordes del borde). Esto también se puede considerar como la cantidad de contraste que se agrega en los bordes. No afecta el ancho de los bordes de las llantas.
  • El radio afecta el tamaño de los bordes que se van a mejorar o el ancho de los bordes de los bordes, por lo que un radio más pequeño mejora los detalles a menor escala. Los valores de radio más altos pueden causar halos en los bordes, un borde de luz tenue detectable alrededor de los objetos. Los detalles finos necesitan un radio más pequeño. El radio y la cantidad interactúan; reducir uno permite más del otro.
  • Threshold controla el cambio mínimo de brillo que se agudizará o la distancia que deben tener los valores tonales adyacentes antes de que el filtro haga algo. Esta falta de acción es importante para evitar que las áreas lisas se manchen. El ajuste de umbral se puede utilizar para dar nitidez a los bordes más pronunciados, dejando intactos los bordes más sutiles. Los valores bajos deberían enfocarse más porque se excluyen menos áreas. Los valores de umbral más altos excluyen las áreas de menor contraste.

Existen varias recomendaciones para los valores iniciales de estos parámetros, y el significado puede diferir entre implementaciones. Generalmente se recomienda un radio de 0,5 a 2 píxeles y una cantidad de 50-150%.

También es posible implementar USM manualmente, creando una capa separada para que actúe como máscara; esto se puede utilizar para ayudar a comprender cómo funciona USM o para una personalización fina.

La fórmula de mezcla típica para el enmascaramiento sin nitidez es

afilado = original + (original - borroso) × cantidad.

Mejora del contraste local

El enmascaramiento de enfoque también se puede utilizar con un radio grande y una cantidad pequeña (como un radio de 30 a 100 píxeles y una cantidad de 5 a 20%), lo que produce un mayor contraste local, una técnica denominada mejora de contraste local . USM puede aumentar la nitidez o el contraste (local) porque ambas son formas de aumentar las diferencias entre los valores, aumentar la pendiente: la nitidez se refiere a diferencias de muy pequeña escala (alta frecuencia) y el contraste se refiere a gran escala (baja frecuencia) diferencias. Las técnicas más potentes para mejorar la tonalidad se denominan mapeo de tonos .

Comparación con la deconvolución

Para el procesamiento de imágenes, la deconvolución es el proceso de invertir aproximadamente el proceso que provocó que una imagen se volviera borrosa. Específicamente, el enmascaramiento de enfoque es una operación de imagen lineal simple: una convolución de un núcleo que es el delta de Dirac menos un núcleo de desenfoque gaussiano. La deconvolución, por otro lado, generalmente se considera un problema inverso mal planteado que se resuelve mejor con enfoques no lineales. Si bien el enmascaramiento de enfoque aumenta la nitidez aparente de una imagen sin conocer la forma en que se adquirió la imagen, la deconvolución aumenta la nitidez aparente de una imagen, pero se basa en información que describe algunos de los posibles orígenes de las distorsiones de la trayectoria de luz utilizada. en la captura de la imagen; por lo tanto, a veces puede ser preferible, cuando el costo del tiempo de preparación y el tiempo de cálculo por imagen se compensan con el aumento de la claridad de la imagen.

Con la deconvolución, los detalles "perdidos" de la imagen pueden recuperarse aproximadamente, aunque generalmente es imposible verificar que cualquier detalle recuperado sea exacto. Estadísticamente, se puede lograr cierto nivel de correspondencia entre las imágenes más nítidas y las escenas reales que se están imaginando. Si las escenas que se capturarán en el futuro son lo suficientemente similares a las escenas de imágenes validadas, entonces se puede evaluar hasta qué punto los detalles recuperados pueden ser precisos. La mejora de la calidad de la imagen suele ser atractiva, ya que los mismos problemas de validación están presentes incluso para las imágenes no mejoradas.

Para que la deconvolución sea eficaz, es necesario modelar todas las variables en la escena de la imagen y el dispositivo de captura, incluida la apertura , la distancia focal , la distancia al sujeto, la lente y los índices y geometrías de refracción de los medios . La aplicación exitosa de la deconvolución a imágenes de cámaras de uso general generalmente no es factible, porque las geometrías de la escena no están configuradas. Sin embargo, la deconvolución se aplica en realidad a la microscopía y las imágenes astronómicas, donde el valor de la nitidez ganada es alto, los dispositivos de imagen y las posiciones relativas del sujeto están bien definidos, y la optimización de los dispositivos de imagen para mejorar la nitidez físicamente costaría significativamente más. En los casos en los que existe una aberración estable y bien definida, como el defecto de la lente en las primeras imágenes del telescopio espacial Hubble , la deconvolución es una técnica especialmente eficaz.

Implementación

En el siguiente ejemplo, la imagen se convoluciona con el siguiente filtro de nitidez:

Filtro de nitidez

Esta matriz se obtiene tomando el kernel de identidad y restando un kernel de detección de bordes:

- =

El efecto de nitidez se puede controlar variando la contribución de la detección de bordes .

La segunda imagen se ha mejorado el doble que la primera.

Esta es una posible implementación de este kernel en Processing (Java).

float sharpenForce = 1;
float[][] kernel =  {{ 0, -1*sharpenForce, 0}, 
                     { -1*sharpenForce, (4*sharpenForce) +1,-1 *sharpenForce}, 
                     { 0, -1*sharpenForce, 0}};
   
PImage image;

void setup() {
    size(1920, 1080);
    image = loadImage("Car.jpg");
    noLoop();
}

void draw() {
    image(image, 0, 0); 
    image.loadPixels();
    PImage NewImage = createImage(image.width, image.height, RGB);
  
    for (int Y = 1; Y < image.height-1; Y++ ) {
        for (int X = 1; X < image.width-1; X++) {
            int newPixelValueR = 0;
            int newPixelValueG = 0;
            int newPixelValueB = 0;
             
            for (int YK = -1; YK < 2; YK++) {   
                for (int XK = -1; XK < 2; XK++) {
                    int PixelPosition = (Y+YK) * image.width + (X+XK);
                    float PixelValueR = red(image.pixels[PixelPosition]);
                    float PixelValueG = green(image.pixels[PixelPosition]);
                    float PixelValueB = blue(image.pixels[PixelPosition]);
                    newPixelValueR += kernel[YK+1][XK+1] * PixelValueR;
                    newPixelValueG += kernel[YK+1][XK+1] * PixelValueG;
                    newPixelValueB += kernel[YK+1][XK+1] * PixelValueB;
                }
            }
                
            NewImage.pixels[Y*image.width + X] = color(newPixelValueR, newPixelValueG, newPixelValueB);
        }
    }
    
    NewImage.updatePixels();
    image(NewImage, width/2, 0);
}

Ver también

Referencias

enlaces externos