Ruby-vip bibliothèque de traitement d'images.Existe-il des bons exemples d'utilisation?

StackOverflow https://stackoverflow.com//questions/10709995

  •  13-12-2019
  •  | 
  •  

Question

Je suis totalement nouveau dans le traitement de l'image.Je ne sais rien à propos de ce qui est JPEG en interne et comment il fonctionne.

Je me demande, si je peux trouver quelque part morceau de code ruby effectuer suivant l'opération simple:

  1. Ouvrez le fichier jpeg.
  2. Itérer sur chaque pixel et l'ensemble de la couleur de fx vert.
  3. Écrire le résultat dans un autre fichier.

Je suis particulièrement intéressé par la façon dont ceci peut être accompli à l'aide de ruby-vip bibliothèque
https://github.com/ender672/ruby-vips

Mon objectif: apprendre à réaliser de base de traitement de l'image à l'aide de ruby-vip (correction gamma, la luminosité, la teinte, ...)

Tous les liens vers des exemples plus complexes que 'bonjour le monde'-comme un sur ruby-vip de la page github serait très appréciée!

Si il y a des alternatives à ruby-vip, je serais reconnaissant pour eux aussi.


Mise à JOUR

A passé beaucoup de choses depuis que j'ai posé cette question:

Était-ce utile?

La solution

mise à jour ruby-vip a un peu changé depuis cette réponse a été écrit.J'ai révisé pour le courant (2018) version.

Je suis l'un des responsables de libvips, la librairie de traitement d'image que ruby-vip enveloppements.

Tim ruby-vip référentiel n'a pas été touché pendant un certain temps.J'ai une fourche ici qui fonctionne avec du courant libvips:

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

Il y a quelques exemples ici:

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

Pour définir le rouge et le bleu chaînes à zéro et il suffit de laisser un image verte vous pourriez multiplier R et B par zéro et G par 1.ruby-vip utilise des tableaux pour représenter pixel constantes, de sorte que vous pouvez simplement écrire:

out = in * [0, 1, 0]

Un complet praticable exemple pourrait être:

#!/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'

Il y a un truc que vous pouvez utiliser pour new_from_file:si vous savez que vous serez juste en faisant de simples de haut en bas les opérations sur l'image, comme l'arithmétique ou de filtrage ou de redimensionner, vous pouvez dire rubis vip qui vous avez seulement besoin d'un accès séquentiel à des pixels:

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

Maintenant ruby-vip diffuser votre image.Ça va fonctionner de la charge, de les multiplier et de sauvegarder le tout en parallèle et ne gardez jamais de plus de quelques lignes de pixels en mémoire à tout moment.Cela peut donner une très belle amélioration de la vitesse et de l'utilisation de la mémoire.

Pour modifier le gamma de l'image vous pouvez essayer quelque chose comme:

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

Bien que cela va être un peu lent (il va appeler pow() trois fois pour chaque pixel), ce serait beaucoup plus rapide de faire une table de recherche, exécutez la pow() sur ce, puis la carte de l'image à travers la table:

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

Des questions, n'hésitez pas à les ouvrir sur le rubyvips issue tracker:

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

Autres conseils

Je suis désolé de ne pas savoir Ruby-Vips, mais ImageMagick est un classique en matière de traitement de l'image. Il y a des liaisons de rubis sous la forme de Rmagick ( Repo ) et vous pouvez tirer beaucoup de fonctionnalités de l'imagemagick Docs, mais il y a aussi trois tutoriels ici , ainsi que beaucoup d'exemples sur le Web.

Si vous voulez vraiment aller au fond de la théorie du traitement de l'image, qui dans ses racines est une forme de traitement du signal (il s'agit totalement passionnant et enrichissant car il vous permet souvent d'appliquer des algorithmes très similaires sur des images et signaux audio / vidéo, mais il sera finalement très lourd sur les transformations de Math - Fourier), alors, si les mathématiques ne vous font pas peur, je ne peux que recommander de lire le Réservez par Gonzalez et Woods, je dirais que c'est la référence définitive dans ce champ. C'est cher, mais il y a tout ce dont vous avez besoin pour vous faire démarrer et bien au-delà. Voici également une page avec des liens vers des livres électroniques gratuits si vous souhaitez commencer sans dépenser beaucoup d'argent en premier.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top