2010-10-06 33 views
9

Estoy tratando de averiguar de qué efectos está compuesto el filtro de "bordes del póster" de Photoshop. Parece que es una combinación de detección de bordes y posterización, pero no he podido duplicarlo, ni siquiera cerrarlo, así que supongo que me estoy perdiendo algo. La imagen siguiente muestra la misma imagen antes y después del filtro Bordes añadidos:Implementación del filtro "Bordes del póster" de Photoshop

alt text

He intentado realizar posterización (y de cuantificación) en la imagen, junto con la detección de bordes utilizando Sobel, pero al parecer está haciendo Photoshop algo diferente ya que los resultados son muy diferentes. Básicamente, la posterización se ve muy diferente y los bordes son muy débiles en comparación con el filtro de Photoshop.

Así que, ¿alguien sabe cómo se implementa el filtro de bordes del póster, o tiene alguna idea de qué procesamiento de imágenes se debe hacer para lograr la última imagen de la anterior.

No es que realmente importa, pero estoy usando Java, y mi código de filtrado de imágenes se basa en su mayor parte en los filtros se encuentran aquí: http://www.jhlabs.com/ip/filters/index.html

Editar Descripción del filtro de adobe.com :

Bordes del cartel Reduce el número de colores en una imagen (lo posteriza) de acuerdo con la opción de posterización que establezca, y encuentra los bordes de la imagen y dibuja líneas negras en ellos. Las áreas amplias grandes tienen sombreado simple, y los detalles oscuros finos se distribuyen por toda la imagen.

Respuesta

7

En cuanto a los bordes: Supongo que Photoshop utiliza algo más sofisticado que un simple filtro derivado (como Sobel) para la detección de bordes. Existen algoritmos de detección de bordes que intentan encontrar solo bordes "salientes", es decir, aquellos que son relevantes para la visión humana, bordes que dibujaría un artista humano si hace un boceto de líneas. Un algoritmo viejo y (más bien) simple que va en esta dirección (al menos un poco) es el Canny edge detector. Debería poder encontrar una implementación de este. Busca "bordes salientes" para la literatura de investigación actual, pero no esperes implementaciones o un buen pseudocódigo en trabajos de investigación.

En cuanto posterization: Teniendo en cuenta sus conversaciones en SIGGRAPH, los chicos de Adobe están muy en el filtrado bilateral (indique Google, no puedo vincular más), una técnica de suavizado de bordes que conserva importantes. Creo que si aplica el filtro bilateral y posteriza posteriormente, debería acercarse al aspecto que desea.Desafortunadamente, la implementación eficiente del filtro bilateral no es trivial.

actualización para cualquier persona todavía está interesado en este tema

El filtro bilateral, que he sugerido más arriba, cada vez se reemplaza con el Guided filter, al menos en la comunidad de Visión por Computador (la gente no se parecen a los gráficos ya se dio cuenta del filtro guiado). El filtro guiado logra resultados similares, pero es mucho más fácil de implementar de manera eficiente. El algoritmo exacto para el filtro guiado es altamente eficiente, mientras que el filtrado bilateral eficiente requiere aproximaciones o algoritmos increíblemente complicados.

+0

Gracias por los consejos. De hecho, probé la detección de bordes astutos, pero los resultados de las imágenes de prueba fueron en realidad un poco más débiles que con Sobel (parece que Canny produjo bordes más débiles, aunque con un poco más de precisión, y estoy buscando bordes más fuertes, pero no tiene que ser así de exacto). La búsqueda en Google de filtros bilaterales da resultados que creo que podría tener razón al respecto. Desafortunadamente mirando el algoritmo también parece muy no trivial. Tengo que desenterrar esos viejos libros de matemáticas de la universidad ... – TuomasR

+0

Los bordes caídos son, de hecho, "débiles" en el sentido de que tienen solo 1 píxel de ancho. Los bordes caídos solo indican que hay un borde allí. Yo trataría de detectar primero los "buenos" bordes y luego "hacerlos crecer", probablemente de forma proporcional a su longitud, utilizando, por ejemplo, la dilatación. – DCS

+0

Después de algunas pruebas, ahora estoy obteniendo resultados que comienzan a parecerse a los bordes del póster de PS. Todavía no está allí, pero ahora creo que es más una cuestión de ajustar los parámetros. Muchas gracias por tu ayuda. Ahora solo para que el filtrado se ejecute en un tiempo razonable: P – TuomasR

0

Sospecho que tiene que hacer esto en varias escalas, para filtrar la respuesta del borde.

  1. Ejecutar su detección de bordes en varios niveles (escamas) de una pirámide suavizado gaussiano de la imagen de entrada [sigma_min, sigma_max]
  2. Entonces, o suma o seleccionar magnitudes máximas de borde a través escalas
  3. Posterize con originales imagen (¿mezcla?)
+0

Probablemente estés en el camino correcto, y esto está muy cerca de lo que estoy haciendo, pero estoy buscando algo que me diga exactamente qué hacer. He hecho un lote de prueba y error con diferentes combinaciones y todavía no está produciendo el resultado deseado. – TuomasR

+0

No se puede sugerir una solución exacta sin mirar el código fuente. ¿Puedes compartirlo? – nav

+0

Podría, pero como el código no funciona (el resultado es incorrecto, ya que el 99% de posibilidades es que la secuencia de efectos sea incorrecta y falte), no veo el valor en ella. Lo que estoy buscando en este caso es una respuesta que dice "El resultado se puede lograr con X, Y y Z". La respuesta en este caso es que contiene palabras "sospechoso", "cualquiera", etc. – TuomasR

0

Copie la imagen original y luego aplique el PosterizeFilter. A continuación, aplique EdgeFilter, GrayscaleFilter y InvertFilter a la copia. Finalmente multiplique el posterized original con la copia. En ese punto, debe tener algo cerca de Poster edges.

+0

Con eso obtengo esto: http://img.skitch.com/20101010-m9y5eeqbtmkkug7xqm9ssihxmr.jpg A la izquierda está la versión de Photoshop, a la derecha es la creada mediante programación. – TuomasR

+0

Esto es lo que obtuve siguiendo el mismo procedimiento en photoshop http://img137.imageshack.us/img137/8885/89390115.png – Diadistis

+0

Hmm ... Me pregunto si estoy haciendo algo mal. ¿Puedes intentarlo con esto? http://img.skitch.com/20101010-qm28e4wrr1i9dceta4twfedcbd.jpg – TuomasR

Cuestiones relacionadas