Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

imreducehaze

Reducir la neblina atmosférica

Sintaxis

[D,T,L] = imreducehaze(X)
[___] = imreducehaze(X,amount)
[___] = imreducehaze(___,Name,Value)

Descripción

ejemplo

[D,T,L] = imreducehaze(X) reduce la neblina atmosférica en X, que es una imagen RGB o en escala de grises. D es la imagen desempañada. T contiene una estimación del espesor de neblina en cada píxel. L es la luz atmosférica estimada, que representa el valor de la bruma no especular más brillante.

[___] = imreducehaze(X,amount) reduce la neblina atmosférica en la imagen X, donde amount especifica la cantidad de neblina eliminada.

ejemplo

[___] = imreducehaze(___,Name,Value) cambia el comportamiento del algoritmo de denovatación mediante pares nombre-valor.

Ejemplos

contraer todo

Lee la imagen borrosa en el espacio de trabajo.

A = imread('foggysf1.jpg');

Reduc la neblina y muestre el resultado a lo largo del lado de la imagen original.

B = imreducehaze(A);
figure, imshowpair(A, B, 'montage')

Lee la imagen borrosa en el espacio de trabajo.

A = imread('foggysf2.jpg');

Reduzca el 90% de la neblina usando el método approxdcp .

B = imreducehaze(A, 0.9, 'method', 'approxdcp');

Muestre el resultado junto con la imagen original.

figure, imshowpair(A, B, 'montage')

Lee la imagen borrosa en el espacio de trabajo.

A = imread('foggyroad.jpg');

Reduzca la neblina en la imagen utilizando los valores de parámetro predeterminados.

[~, T] = imreducehaze(A);

Muestre el resultado junto con la imagen original.

figure, imshowpair(A, T, 'montage')

El espesor de la neblina proporciona una aproximación aproximada de la profundidad de la escena, definida hasta un factor de multiplicación desconocido. Añada eps para evitar log(0).

D = -log(1-T+eps);

Para los propósitos de la exhibición, escale la profundidad de modo que esté en [0.1].

D = mat2gray(D);

Muestra la imagen original junto a la profundidad estimada en color falso.

figure subplot(1,2,1) imshow(A), title('Hazy image') subplot(1,2,2) imshow(D), title('Depth estimate') colormap(gca, hot(256))

Argumentos de entrada

contraer todo

Introduzca la imagen RGB o en escala de grises, especificada como una matriz real, no dispersa, m-por-n-por-3 (RGB) o m-por-n (escala de grises).

Tipos de datos: single | double | uint8 | uint16

Cuánta neblina eliminar, especificada como escalar en el rango [0,1]. Cuando la cantidad es 1 (el valor por defecto), imreducehaze reduce la cantidad máxima de neblina. Cuando la cantidad es 0, la imagen de entrada no se modifica.

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Argumentos de par nombre-valor

Especifique pares opcionales separados por comas de argumentos Name,Value . Name es el nombre del argumento y Value es el valor correspondiente. Name debe aparecer dentro de comillas simples (' '). Puede especificar varios argumentos de par de nombre y valor en cualquier orden como Name1,Value1,...,NameN,ValueN.

Ejemplo: B = imreducehaze(A, 0.9, 'method', 'approxdcp');

Técnica utilizada para reducir la neblina, especificada como 'simpledcp' o 'approxdcp'. El método 'simpledcp' emplea un canal oscuro por píxel antes de la estimación de Haze y la descomposición Quadtree para calcular la luz atmosférica. 'approxdcp' utiliza tanto los bloques por píxel como los espaciales al calcular el canal oscuro antes de la reducción de la neblina y no utiliza la descomposición Quadtree.

Tipos de datos: char | string

Valor máximo que debe tratarse como Haze, especificó un vector 1 por 3 (para imágenes RGB) o un escalar (para imágenes en gris). Los valores deben ser inferiores o iguales a 1. Cuando no se especifica, este valor depende del valor de 'method'. Para 'approxdcp', los píxeles más brillantes del 0,1% del canal oscuro se consideran para estimar el valor. Para 'simpledcp', imreducehaze utiliza la descomposición Quadtree para calcular el valor.

Tipos de datos: double

Técnica de post-procesamiento para mejorar el contraste de la imagen, especificada como 'global' (default), 'boost'o 'none'.

Tipos de datos: char | string

Cantidad de ganancia por píxel para aplicar como post-procesamiento, especificada como escalar en el rango [0,1]. Este parámetro sólo se permite si 'ContrastEnhancement' se establece en 'boost'.

Tipos de datos: double

Argumentos de salida

contraer todo

Imagen desempañada, devuelta como matriz numérica.

Estimación del espesor de Haze en cada píxel, devuelto como una matriz numérica.

Luz atmosférica estimada, devuelta como una matriz numérica. L representa la bruma no especular más brillante.

Sugerencias

  • Los valores de luz atmosférica deben ser superiores a 0,5 para obtener mejores resultados

  • Utilice el realce del contraste como ningunos para aplicar la técnica modificada para requisitos particulares del contraste del usuario

  • El valor de la cantidad debe estar cerca de 1 para reducir más neblina.

  • Reducir el valor de la cantidad si el resultado parece distorsión de color

Algoritmos

Function imreducehaze utiliza dos métodos diferentes de denovatada, simpledcp y approxdcp, para reducir la neblina en una imagen. Estas dos técnicas de denovatada se pueden describir en cinco pasos principales

  • Estimación de la luz atmosférica con canal oscuro antes

  • Estimación del mapa de transmisión

  • Refinar el mapa de transmisión Estimado

  • Restauración

  • Post-procesado

El modelo ampliamente utilizado para describir la formación de la imagen nebulosa [1] es

I(x) = J(x)t(x)+A(1-t(x))

Donde I es la intensidad observada, J es el resplandor de la escena, A es la luz atmosférica, y t es el medio de transmisión que describe la porción de luz que no se dispersa y llega a la cámara. Con la estimación del mapa de transmisión t y la luz atmosférica A podemos recuperar la escena resplandor J.

J(x) = (I(x)-A)/(max(t(x), t0)) + A

El método de canal oscuro aproximado anterior (ApproxDCP) [1] utiliza el canal oscuro para reducir la neblina de una sola imagen nebulosa. El canal oscuro se basa en la observación clave de que la mayoría de los parches locales en imágenes sin neblina al aire libre contienen algunos píxeles cuya intensidad es muy baja en al menos un canal de color. La luz atmosférica se estima usando los pixeles brillantes de 0,1% de canal oscuro. El mapa de transmisión es entonces estimado usando el canal oscuro y la luz atmosférica. Este método utilizó un filtro guiado para refinar el mapa de transmisión estimado. Después de conseguir la luz atmosférica y el mapa de la transmisión, resplandor de la escena se recupera usando ley Koschmieder inversa. La imagen desempañada resultante tiene un bajo contraste (DIM), por lo que el realce de contraste se utiliza para mejorar el contraste como paso de postprocesamiento.

El método simple Dark canal Prior (SimpleDCP) utiliza el canal oscuro para reducir la neblina de la imagen. El canal oscuro se puede estimar considerando la intensidad mínima a través de los canales R, G, B. La luz atmosférica se estima usando la descomposición Quadtree [2] del canal oscuro. Entonces la estimación del mapa de la transmisión usando el canal oscuro se hace. El filtro guiado se utiliza para refinar el mapa de transmisión. El resplandor de la escena se recupera usando la luz atmosférica estimada y el mapa de transmisión. La técnica de realce de contraste se aplica como paso de procesamiento posterior para mejorar el contraste de una imagen. La diferencia principal entre SimpleDCP y ApproxDCP es la estimación del canal oscuro y de la luz atmosférica.

Referencias

[1] He, Kaiming. "Single Image Haze Removal Using Dark Channel Prior." Thesis, The Chinese University of Hong Kong, 2011.

[2] Dubok, et al. "Single Image Dehazing with Image Entropy and INformation Fidelity." ICIP, 2014.

Introducido en R2017b