Pregunta

Soy completamente nuevo en el procesamiento de la imagen.Yo no sé nada acerca de lo que está JPEG internamente y cómo funciona.

Me pregunto, si puedo encontrar algún trozo de código ruby, la realización de simples siguiente operación:

  1. Abrir archivos jpeg.
  2. Iterar a través de cada píxel y el conjunto es de color fx verde.
  3. Escribir el resultado en otro archivo.

Estoy especialmente interesado en cómo esto se puede lograr usando ruby-vips de la biblioteca
https://github.com/ender672/ruby-vips

Mi objetivo: aprender a realizar tareas básicas de procesamiento de imágenes operaciones usando ruby-vips (corrección de gamma, brillo, matiz, ...)

Todos los enlaces a ejemplos de trabajo más compleja que la de 'hola mundo'-como uno de ruby-vips de la página de github sería muy apreciada!

Si hay alternativas a ruby-vips, yo estaría muy agradecido por ellos.


ACTUALIZACIÓN

Mucho ha sucedido desde que hice esta pregunta:

¿Fue útil?

Solución

actualización ruby-vips ha cambiado un poco desde que esta respuesta fue escrito.He revisado por el actual (2018) versión.

Yo soy uno de los mantenedores de libvips, la biblioteca de procesamiento de imagen que ruby-vips envuelve.

Tim ruby-vips repositorio no ha sido tocado por un tiempo.Tengo una horquilla de aquí que funciona con corriente libvips:

https://github.com/jcupitt/ruby-vips

Hay algunos ejemplos aquí:

https://github.com/jcupitt/ruby-vips/tree/master/example

Para establecer los canales rojo y azul a cero y acaba de salir de una imagen verde podría multiplicar R y B por cero y G por 1.ruby-vips utiliza matrices para representar los píxeles de las constantes, por lo que sólo puede escribir:

out = in * [0, 1, 0]

Una completa ejecutables ejemplo podría ser:

#!/usr/bin/ruby

require 'vips'

im = Vips::Image.new_from_file '/home/john/pics/theo.jpg'
im *= [0, 1, 0]
im.write_to_file 'x.jpg'

Hay un truco que puede utilizar para new_from_file:si usted sabe que usted acaba de hacer simple de arriba a abajo de operaciones en la imagen, como la aritmética o el filtro o cambiar el tamaño, usted puede decirle a ruby-vips que usted necesita solamente el acceso secuencial a los píxeles:

im = Vips::Image.new_from_file '/home/john/pics/theo.jpg', access: :sequential

Ahora ruby-vips va a transmitir su imagen.Se va a ejecutar la carga, la multiplica y la guarde todos en paralelo y nunca tener más de un par de líneas de exploración de píxeles en la memoria en cualquier momento.Esto puede dar una muy buena mejora de la velocidad y el uso de la memoria.

Para cambiar la imagen de rayos gamma podría intentar algo como:

im = im ** 0.5 * 255 / 255 ** 0.5

A pesar de que va a ser un poco lento (se le llame pow() tres veces para cada píxel), sería mucho más rápido para hacer una tabla de búsqueda, ejecute el pow() en la que, a continuación, asignar la imagen a través de la tabla:

lut = Vips::Image.identity
lut = lut ** 0.5 * 255 /255 ** 0.5
im = im.maplut lut

Cualquier pregunta, por favor siéntase libre de abrir en el rubyvips issue tracker:

https://github.com/jcupitt/ruby-vips/issues

Otros consejos

Lo siento, no sé Ruby-Vips, pero imagemagick Es un clásico cuando se trata de procesamiento de imágenes. Hay unidades de rubíes en forma de rmagick ( repo actualmente ), y puede derivar una gran cantidad de funcionalidad de ImageMagick Docs, pero también hay tres tutoriales aquí , así como muchos ejemplos en la web.

Si realmente desea profundizar en la teoría del procesamiento de la imagen, que en sus raíces es una forma de procesamiento de señales (esto es totalmente emocionante y gratificante, ya que a menudo le permite aplicar algoritmos muy similares en imágenes y Señales de audio / video, pero finalmente se pondrá muy pesado en las transformadas de matemáticas: Fourier, entonces, si las matemáticas no lo asustan, solo puedo recomendar leer el libro de Gonzalez y Woods, diría que es la referencia definitiva en este campo. Es caro, pero hay todo lo que necesitas para que usted comience y mucho más allá. Aquí está también una página con enlaces a libros electrónicos gratuitos si desea comenzar sin gastar sin gastar Mucho dinero primero.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top