Main Content

inpaintExemplar

Restaurar regiones de imagen específicas utilizando la pintura de imagen basada en ejemplos

Descripción

ejemplo

J = inpaintExemplar(I,mask) rellena regiones específicas de la imagen de entrada mediante el método de pintura basada en ejemplos. es una imagen lógica que denota las regiones de destino en la imagen que se va a rellenar mediante la pintura en pintura.mask

ejemplo

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

Ejemplos

contraer todo

Lea una imagen en el espacio de trabajo.

I = imread('liftingbody.png');

Muestre la imagen.

figure imshow(I,[])

Utilice la función para seleccionar una región elíptica de interés (ROI) para la pintura.drawellipse Utilice los pares nombre-valor ' y ' para especificar la ubicación de un ROI.Center'SemiAxes'

h = drawellipse('Center',[410 155],'SemiAxes',[95 20]);

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

mask = createMask(h);

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 del ROI mediante la pintura inpainting.

J = inpaintExemplar(I,mask);

Muestre la imagen original y la imagen pintada.

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

Lea una imagen en el espacio de trabajo.

I = imread('forestdistorted.png');

Muestre la imagen. La imagen comprende regiones distorsionadas que se restaurarán mediante pintura inpintura.

figure imshow(I,[])

Lea una imagen de máscara binaria que contenga las regiones de imagen distorsionadas en el espacio de trabajo.

mask = imread('imagemask.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'])

Inpaint la imagen original para restaurar la región de la imagen distorsionada. Especifique el orden de relleno y el tamaño del parche para la pintura como y , respectivamente.tensor7

J = inpaintExemplar(I,mask,'FillOrder','tensor','PatchSize',7);

Muestre la imagen original y la imagen pintada.

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

Argumentos de entrada

contraer todo

Imagen que se va a pintar, especificada como una imagen en escala de grises 2D o una imagen RGB de tamaño -por- .mn

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

Máscara espacial de regiones de destino, especificada como una imagen binaria 2D del mismo tamaño que la imagen de entrada.I Los píxeles distintos de cero especifican las regiones de destino que se rellenarán mediante la pintura inpainting.mask

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 = inpaintExemplar(I,mask,'FillOrder','gradient')

Orden de llenado, especificada como el par separado por comas que consta de y o .'FillOrder''gradient''tensor' La orden de llenado denota la función de prioridad que se utilizará para calcular la prioridad de revisión. El valor de prioridad de revisión especifica el orden de relleno de las revisiones de imagen en las regiones de destino.

Tipos de datos: char | string

Tamaño del parche de imagen, especificado como el par separado por comas que consta de y una de estas opciones.'PatchSize'

  • Un escalar, — El parche de imagen es una región cuadrada de tamaño -by- .sss

  • Un vector de forma [ ] — El parche de imagen es una región cuadrada o rectangular de tamaño -por- .psps

El tamaño de parche de imagen predeterminado es 9 por 9. Un parche de imagen hace referencia a la región de imagen considerada para la coincidencia de parches y la pintura en pintura.

Nota

  • El tamaño del parche de imagen debe ser al menos 3 por 3 y siempre menor que el tamaño de la imagen de entrada.

Tipos de datos: double

Argumentos de salida

contraer todo

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

Algoritmos

El algoritmo de inserción de imágenes basado en ejemplos es un enfoque basado en parches que restaura las regiones de destino en la imagen de entrada mediante estos pasos.

  1. Identifique las regiones de destino a partir de la imagen de entrada.

  2. 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 corresponder a las regiones de destino que se van a pintar.

  3. Identifique la región de origen. Todas las regiones, excepto las regiones de destino, en la imagen de entrada comprenden la región de origen. Es decir source region = input imagetarget regions.

  4. Para cada parche de tamaño centrado en un píxel de límite en la región de destino, calcule la prioridad de revisión mediante el método gradiente o tensor.ps

  5. Encuentra el parche con la máxima prioridad. Este parche constituye el parche de destino que se va a pintar.

  6. Dado el parche de destino, busque el parche que mejor coincida en la región de origen mediante la suma de la diferencia cuadrada (SSD).

  7. Copie los datos de imagen del parche que mejor se corresponde con el parche de destino.

  8. Actualice el valor de prioridad de imagen, máscara y parche de entrada.

  9. Repita los pasos del 4 al 8 hasta que se inpintaran las regiones de destino.

Referencias

[1] Criminisi, A., P. Perez, and K. Toyama. "Region Filling and Object Removal by Exemplar-Based Image Inpainting." IEEE Transactions on Image Processing. Vol. 13, No. 9, 2004, pp. 1200–1212.

[2] Le Meur, O., M. Ebdelli, and C. Guillemot. "Hierarchical Super-Resolution-Based-Inpainting." IEEE Transactions on Image Processing. Vol. 22, No. 10, 2013, pp. 3779–3790.

Introducido en R2019b