Main Content

inpaintCoherent

Restaurar regiones de imagen específicas utilizando la inpintura de imagen basada en el transporte de coherencia

Descripción

ejemplo

J = inpaintCoherent(I,mask) restaura regiones específicas en la imagen de entrada utilizando el método de pintura basada en el transporte de coherencia. es una imagen lógica que denota las regiones de destino en la imagen que se va a rellenar a través de la pintura.mask

ejemplo

J = inpaintCoherent(I,mask,Name,Value) especifica opciones de pintura adicionales mediante uno o varios argumentos nombre-valor.

Ejemplos

contraer todo

Lea una imagen que se va a pintar en el espacio de trabajo. Esta imagen contiene superposiciones de texto que se van a eliminar.

I = imread('overlayimage.png');

Lea la imagen de máscara en el espacio de trabajo. Esta imagen de máscara contiene las regiones de texto superpuestas presentes en la imagen que se va a pintar.

mask = imread('text.png');

Muestre la imagen que se va a pintar y su imagen de máscara correspondiente.

montage({I,mask}); title(['Image to Be Inpainted','   |   ','Mask for Inpainting'])

Inpinta la imagen original eliminando las superposiciones de texto.

J = inpaintCoherent(I,mask);

Muestre la imagen original y la imagen pintada.

montage({I,J}); title(['Image to Be Inpainted','    |    ','Inpainted Image'])

Lea una imagen que se va a pintar en el espacio de trabajo.

I = imread('coloredChips.png');

Muestre la imagen.

figure imshow(I,[])

Utilice la función para seleccionar una región circular de interés (ROI) para la pintura.drawcircle Utilice los pares nombre-valor y para especificar la ubicación de un ROI.CenterRadius

h = drawcircle('Center',[130,42],'Radius',40);

Seleccione Varios ROIs para Inpainting

También puede seleccionar varios ROI de forma iterativa.

Establezca el número de regiones que se van a pintar en 6.

numRegion = 6;

Especifique el centro y los radios para cada región.

roiCenter = [130 42;433 78;208 108;334 124;434 167;273 58]; roiRadius = [40 50 40 40 40 30];

Seleccione varios ROI circulares de forma iterativa especificando los pares nombre-valor.drawcircleCenterRadius

roi = cell([numRegion,1]); for i = 1:numRegion     c = roiCenter(i,:);     r = roiRadius(i);     h = drawcircle('Center',c,'Radius',r);     roi{i} = h; end

Utilice la función para generar una máscara a partir de los ROI seleccionados.createMask

mask = zeros(size(I,1),size(I,2)); for i = 1:numRegion     newmask = createMask(roi{i});     mask = xor(mask,newmask); end

Muestre la imagen que se va a pintar y su imagen de máscara correspondiente.

montage({I,mask}); title(['Image to Be Inpainted','   |   ','Mask for Inpainting'])

Elimine los objetos de los IUU mediante la pintura. Especifique una desviación estándar de 0,5 y un radio de pintura de 1.

J = inpaintCoherent(I,mask,'SmoothingFactor',0.5,'Radius',1);

Muestre la imagen original y la imagen pintada.

montage({I,J}); title(['Image to Be Inpainted','    |    ','Inpainted Image']);

Argumentos de entrada

contraer todo

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

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

Máscara espacial de regiones de destino, especificada como una imagen binaria 2D de tamaño -por- , donde y son las dimensiones de la imagen de entrada.mnmnI Los píxeles distintos de cero constituyen las regiones de destino que se deben rellenar a través de la pintura.mask

Nota

Tipos de datos: logical

Argumentos de par nombre-valor

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

Ejemplo: J = inpaintCoherent(I,mask,'Radius',7)

Desviación estándar del filtro gaussiano, especificado como el par separado por comas que consta de y un número positivo.'SmoothingFactor' Este valor se utiliza para calcular las escalas de los filtros gaussianos mientras se estima la dirección de coherencia.

Radio de pintura, especificado como el par separado por comas que consta de y un entero positivo.'Radius' El radio de pintura denota el radio de la región de vecindad circular centrada en el píxel que se va a pintar.

Argumentos de salida

contraer todo

Imagen pintada, devuelta como una imagen en escala de grises o una imagen en color RGB del mismo tamaño y tipo de datos que la imagen de entrada.I

Sugerencias

  • Los resultados de la pintura dependen de la especificación del par nombre-valor. Puede modificar los valores de y para obtener resultados variados.'Radius''SmoothingFactor'

  • Cada ROI de la imagen de máscara binaria debe ser lo suficientemente grande como para incluir la región correspondiente en la imagen que se va a pintar.

Algoritmos

El método de pintura basado en el transporte de coherencia es un enfoque basado en píxeles para eliminar objetos y rellenar regiones en imágenes.[1] La pintura se realiza hacia adentro a partir de los píxeles de límite de la región de destino. El valor de pintura de un píxel se estima a partir de sus píxeles vecinos coherentes con valores conocidos. Los pasos involucrados se resumen de la siguiente manera:

  1. Identifique las regiones de destino de la imagen de entrada que se va a rellenar o pintar. Genere una máscara binaria del mismo tamaño que la imagen de entrada. Los píxeles distintos de cero de la imagen de máscara deben contener las regiones de destino que se van a pintar.

    El orden en que se inpintadon los píxeles de la región de destino se calcula desde su distancia euclidiana hasta el límite de la región de destino.

  2. El valor de pintura de un píxel en la región de destino es el promedio ponderado de los valores de píxel conocidos dentro de su radio de pintura. A los píxeles conocidos a lo largo de la dirección de coherencia se les asigna un valor de peso más alto que los píxeles vecinos incoherentes. La dirección de coherencia se estima mediante el uso de un tensor de estructura.

Referencias

[1] F. Bornemann and T. März. "Fast Image Inpainting Based on Coherence Transport." Journal of Mathematical Imaging and Vision. Vol. 28, 2007, pp. 259–278.

Capacidades ampliadas

Consulte también

| | |

Introducido en R2019a