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.

locallapfilt

Rápido filtrado local Laplaciano de imágenes

Descripción

ejemplo

B = locallapfilt(I,sigma,alpha) filtra la imagen en escala de grises o RGB con un filtro laplaciano local rápido y consciente de los bordes. caracteriza la amplitud de los bordes en. controla el suavizado de detalles.IsigmaIalpha

B = locallapfilt(I,sigma,alpha,beta) filtra la imagen utilizando para controlar el rango dinámico de.betaUn

ejemplo

B = locallapfilt(___,Name,Value) utiliza pares nombre-valor para controlar los aspectos avanzados del filtro. Los nombres de los argumentos pueden abreviarse.

Ejemplos

contraer todo

Importe una imagen RGB

A = imread('peppers.png');

Establezca los parámetros del filtro para aumentar los detalles menores que 0,4.

sigma = 0.4; alpha = 0.5;

Utilice el filtrado local rápido de Laplacian

B = locallapfilt(A, sigma, alpha);

Visualice las imágenes originales y filtradas una al lado de la otra.

imshowpair(A, B, 'montage')

El filtrado laplaciano local es un algoritmo de cálculo intensivo. Para acelerar el procesamiento, se aproxima el algoritmo mediante la discretización del rango de intensidad en un número de muestras definidas por el parámetro ' '.locallapfiltNumIntensityLevels Este parámetro se puede utilizar para equilibrar la velocidad y la calidad.

Importe una imagen RGB y mostrarla.

A = imread('peppers.png'); figure imshow(A) title('Original Image')

Utilice un valor para procesar los detalles y un valor para aumentar el contraste, mejorando eficazmente el contraste local de la imagen.sigmaalpha

sigma = 0.2; alpha = 0.3;

El uso de menos muestras aumenta la velocidad de ejecución, pero puede producir artefactos visibles, especialmente en áreas de contraste plano. Tiempo de la función utilizando sólo 20 niveles de intensidad.

t_speed = timeit(@() locallapfilt(A, sigma, alpha, 'NumIntensityLevels', 20))  
t_speed = 0.2449 

Ahora, procese la imagen y mostrarla.

B_speed = locallapfilt(A, sigma, alpha, 'NumIntensityLevels', 20); figure imshow(B_speed) title(['Enhanced with 20 intensity levels in ' num2str(t_speed) ' sec'])

Un mayor número de muestras produce resultados de mejor aspecto A expensas de más tiempo de procesamiento. Tiempo de la función utilizando 100 niveles de intensidad.

t_quality = timeit(@() locallapfilt(A, sigma, alpha, 'NumIntensityLevels', 100))
t_quality = 1.1155 

Procese la imagen con 100 niveles de intensidad y mostrarlo:

B_quality = locallapfilt(A, sigma, alpha, 'NumIntensityLevels', 100); figure imshow(B_quality) title(['Enhancement with 100 intensity levels in ' num2str(t_quality) ' sec'])

Trate de variar el número de niveles de intensidad en sus propias imágenes. Intenta también aplanar el contraste (con > 1).alpha Verá que el número óptimo de niveles de intensidad es diferente para cada imagen y varía con.alpha De forma predeterminada, utiliza una heurística para equilibrar la velocidad y la calidad, pero no puede predecir el mejor valor para cada imagen.locallapfilt

Importe una imagen de color, reduzca su tamaño y mostrarla.

A = imread('car2.jpg'); A = imresize(A, 0.25); figure imshow(A) title('Original Image')

Establezca los parámetros del filtro para aumentar drásticamente los detalles menores que 0,3 (de un rango normalizado de 0 a 1).

sigma = 0.3; alpha = 0.1;

Vamos a comparar los dos modos diferentes de filtrado de color. Procese la imagen filtrando su intensidad y filtrando cada canal de color por separado:

B_luminance = locallapfilt(A, sigma, alpha); B_separate  = locallapfilt(A, sigma, alpha, 'ColorMode', 'separate');

Visualice las imágenes filtradas.

figure imshow(B_luminance) title('Enhanced by boosting the local luminance contrast')

figure imshow(B_separate) title('Enhanced by boosting the local color contrast')

Se ha aplicado una cantidad igual de mejora de contraste a cada imagen, pero los colores están más saturados cuando se establece ' ' a ' '.ColorModeseparate

Importar una imagen. Convierta la imagen a punto flotante para que podamos añadir ruido artificial más fácilmente.

A = imread('pout.tif'); A = im2single(A);

Añadir ruido Gaussiano con media cero y varianza 0,001.

A_noisy = imnoise(A, 'gaussian', 0, 0.001); psnr_noisy = psnr(A_noisy, A); fprintf('The peak signal-to-noise ratio of the noisy image is %0.4f\n', psnr_noisy);        
The peak signal-to-noise ratio of the noisy image is 30.0234 

Defina la amplitud de los detalles para suavizar y, a continuación, establezca la cantidad de suavizado que se aplicará.

sigma = 0.1; alpha = 4.0;

Aplique el filtro que tenga en cuenta el borde.

B = locallapfilt(A_noisy, sigma, alpha); psnr_denoised = psnr(B, A); fprintf('The peak signal-to-noise ratio of the denoised image is %0.4f\n', psnr_denoised);
The peak signal-to-noise ratio of the denoised image is 32.3065 

Observe una mejora en la PSNR de la imagen.

Visualice las tres imágenes una al lado de la otra. Observe que los detalles están suavizados y las variaciones agudas de intensidad a lo largo de los bordes no cambian.

figure subplot(1,3,1), imshow(A), title('Original') subplot(1,3,2), imshow(A_noisy), title('Noisy') subplot(1,3,3), imshow(B), title('Denoised')

Importar la imagen, redimensionarla y mostrarla

A = imread('car1.jpg'); A = imresize(A, 0.25); figure imshow(A) title('Original Image')

El coche está sucio y cubierto de marcas. Intentemos borrar el polvo y las marcas del cuerpo. Establezca la amplitud de los detalles para suavizar y establezca una gran cantidad de suavizado para aplicar.

sigma = 0.2; alpha = 5.0;

Al suavizar (> 1), el filtro produce resultados de alta calidad con un pequeño número de niveles de intensidad.alpha Establezca un pequeño número de niveles de intensidad para procesar la imagen más rápido.

numLevels = 16;

Aplique el filtro.

B = locallapfilt(A, sigma, alpha, 'NumIntensityLevels', numLevels);

Muestre el coche "limpio".

figure imshow(B) title('After smoothing details')

Argumentos de entrada

contraer todo

Imagen a filtrar, especificada como una imagen en escala de grises en 2-D de tamaño por-o una imagen en color 2-D de tamaño-por--por-3.mnmn

Tipos de datos: single | int8 | int16 | uint8 | uint16

Amplitud de aristas, especificada como un escalar no negativo. debe estar en el intervalo [0,1] para las imágenes de enteros y para las imágenes individuales definidas en el intervalo [0, 1].sigma Para imágenes individuales definidas en un rango diferente [,], también debe estar en el rango [,].absigmaab

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

Suavizado de detalles, especificado como un escalar positivo. Los valores típicos de están en el rango [0,01, 10].alpha

ValorDescripción
menos dealpha1Aumenta los detalles de la imagen de entrada, mejorando eficazmente el contraste local de la imagen sin afectar a los bordes o introduciendo halos.
mayor quealpha1Suaviza los detalles de la imagen de entrada conservando los bordes nítidos
igual aalpha1Los detalles de la imagen de entrada se dejan sin cambios.

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

Rango dinámico, especificado como un escalar no negativo. Los valores típicos de beta están en el rango [0,5]. afecta al rango dinámico de.betaUn

ValorDescripción
menos debeta1Reduce la amplitud de los bordes de la imagen, comprimiendo eficazmente el rango dinámico sin afectar a los detalles.
mayor quebeta1Expande el rango dinámico de la imagen.
igual abeta1El rango dinámico de la imagen se deja sin cambios. Este es el valor predeterminado.

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

Argumentos de par nombre-valor

Especifique pares de argumentos separados por comas opcionales. es el nombre del argumento y es el valor correspondiente. deben aparecer dentro de las cotizaciones.Name,ValueNameValueName Puede especificar varios argumentos de par de nombre y valor en cualquier orden como.Name1,Value1,...,NameN,ValueN

Ejemplo:

Método utilizado para filtrar imágenes RGB, especificado como uno de los siguientes valores. Este parámetro no afecta a las imágenes en escala de grises.

ValorDescripción
'luminance'convierte la imagen RGB de entrada a escala de grises antes de filtrar y reintroduce el color después del filtrado, lo que cambia el contraste de la imagen de entrada sin afectar a los colores.locallapfilt
'separate'filtra cada canal de color de forma independiente.locallapfilt

Tipos de datos: char | string

Número de muestras de intensidad en el rango dinámico de la imagen de entrada, especificado como entero positivo.'auto' Un mayor número de muestras da resultados más cercanos al filtrado laplaciano local exacto. Un número más bajo aumenta la velocidad de ejecución. Los valores típicos están en el rango.[10, 100] Si se establece en, elige el número de niveles de intensidad automáticamente para equilibrar la calidad y la velocidad en función de otros parámetros del filtro.'auto'locallapfilt

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

Argumentos de salida

contraer todo

Imagen filtrada, devuelta como una matriz numérica del mismo tamaño y clase que la imagen de entrada.

Referencias

[1] Paris, Sylvain, Samuel W. Hasinoff, and Jan Kautz. Local Laplacian filters: edge-aware image processing with a Laplacian pyramid, ACM Trans. Graph. 30.4 (2011): 68.

[2] Aubry, Mathieu, et al. Fast local laplacian filters: Theory and applications. ACM Transactions on Graphics (TOG) 33.5 (2014): 167.

Consulte también

|

Introducido en R2016b