algorithm - ¿Cómo funciona el contenido satisfecho?
graphics image-processing (7)
En la próxima versión de Photoshop, hay una función llamada relleno Content-Aware.
Esta característica llenará una selección de una imagen basada en la imagen circundante, hasta el punto de que puede generar arbustos y nubes sin dejar de ser perfecta con la imagen circundante.
Consulte http://www.youtube.com/watch?v=NH0aEp1oDOI para obtener una vista previa de la función Photoshop de la que estoy hablando.
Mi pregunta es: ¿Cómo funciona esta característica algorítmicamente?
Bueno, no van a decir por las razones obvias. El nombre general de la técnica es "InPainting", puede buscarlo.
Específicamente, si nos fijamos en lo que Criminisi hizo en Microsoft http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.67.9407 y lo que Todor Georgiev hace ahora en Adobe http://www.tgeorgiev.net/Inpainting.html , podrás adivinar muy bien. Supongo un 90%, diría, que debería ser lo suficientemente bueno.
Como una conjetura (y eso es todo lo que sería), esperaría que haga algún análisis de frecuencia (algunos como una transformada de Fourier) de la imagen. Al observar solo la imagen en el borde de la selección e ignorar el centro, podría extrapolarse nuevamente al centro. Si los diseñadores eligen las llanuras de color correctas y lo que no, deben ser capaces de generar una textura que se mezcle perfectamente con la imagen en los bordes.
editar: mirando el último ejemplo en el video; Si observas la parte superior de la imagen original en cualquier borde, ves que la línea de selección se extiende por un "espacio" en las nubes y que justo en el medio hay un "golpe". Estos son el tipo de artefactos que esperaría ver si mi suposición es correcta. (OTOH, también espero verlos porque estaba usando algún tipo de sudo-mirroring a través del límite de selección).
El enfoque general se llama tallado de costuras. El grupo de Ariel Shamir es responsable del trabajo seminal aquí, que se presentó en SIGGRAPH 2007. Ver: http://www.faculty.idc.ac.il/arik/site/subject-seam-carve.asp
Hay un algoritmo muy similar para GIMP durante bastante tiempo. Se llama resynthesizer y probablemente debería ser capaz de encontrar una fuente para ello (tal vez en el sitio del proyecto )
EDITAR
También hay una fuente disponible en el repositorio de ubuntu
Y aquí puede ver el procesamiento de las mismas imágenes con GIMP: http://www.youtube.com/watch?v=0AoobQQBeVc&feature=related
Soy coautor del artículo de PatchMatch mencionado anteriormente aquí, y dirigí el desarrollo de la característica original Content-Aware Fill en Photoshop, junto con Ivan Cavero Belaunde y Eli Shechtman en Creative Technologies Lab, y Jeff Chien en Photoshop. equipo.
La aplicación Content-Aware Fill de Photoshop utiliza una variación altamente optimizada y multiproceso del algoritmo descrito en el documento de PatchMatch, y un método más antiguo denominado "Completación de video SpaceTime". Ambos documentos se citan en la siguiente página de tecnología para esta función:
http://www.adobe.com/technology/projects/content-aware-fill.html
Puede encontrar más información sobre nosotros en las páginas web de Adobe Research.
Supongo que para los agujeros más pequeños están agarrando parches de textura similar que rodean el área para rellenarlo. Esto se describe en un artículo titulado " PatchMatch: Un algoritmo de correspondencia aleatorio para edición de imágenes estructurales " por Connelly Barnes y otros en SIGGRAPH 2009 Para agujeros más grandes, pueden explotar una gran base de datos de imágenes con estadísticas o texturas globales similares, como se describe en " Terminación de escena usando millones de fotografías ". Si de alguna manera pudieran fusionar los dos juntos, creo que debería funcionar como en el video.
Trabajo en un problema similar. Por lo que leo, usan "PatchMatch" o "muestreo de parche no paramétrico" en general.
PatchMatch: un algoritmo de correspondencia aleatorio para la edición de imágenes estructurales