6

私は画像処理にまったく慣れていません。内部でのJPEGとは何か、そしてそれがどのように機能するかについては何も知りません。

次の簡単な操作を実行するルビーコードの一部をどこかで見つけることができるかどうか疑問に思います。

  1. jpegファイルを開きます。
  2. 各ピクセルを繰り返し処理し、その色をfxgreenに設定します。
  3. 結果を別のファイルに書き込みます。

私はこれがruby-vipsライブラリ
https://github.com/ender672/ruby-vipsを使用してどのように達成できるかに特に興味があります

私の目標-ruby-vipsを使用して基本的な画像処理操作(ガンマ補正、明るさ、色合いなど)を実行する方法を学ぶこと

「helloworld」よりも複雑な実例へのリンク(ruby-vipsのgithubページにあるものなど)は大歓迎です!

ruby-vipsに代わるものがあれば、私もそれらに感謝します。


アップデート

私がこの質問をして以来、多くのことが起こりました:

4

2 に答える 2

10

この回答が書かれてから、更新ruby-vipsが少し変更されました。現在の(2018)バージョン用に改訂しました。

私は、ruby-vipsがラップする画像処理ライブラリであるlibvipsのメンテナーの1人です。

Timのruby-vipsリポジトリはしばらく触れられていません。私はここに現在のlibvipsで動作するフォークを持っています:

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

ここにいくつかの例があります:

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

赤と青のチャンネルをゼロに設定し、緑の画像を残すには、RとBにゼロを掛け、Gに1を掛けます。ruby-vipsは配列を使用してピクセル定数を表すため、次のように記述できます。

out = in * [0, 1, 0]

実行可能な完全な例は次のとおりです。

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

使用できるトリックがありますnew_from_file。算術演算、フィルタリング、サイズ変更など、画像に対して単純な上から下への操作を行うだけであることがわかっている場合は、ピクセルへの順次アクセスのみが必要であることをruby-vipsに伝えることができます。

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

これで、ruby-vipsが画像をストリーミングします。ロード、乗算、保存をすべて並行して実行し、一度に数ピクセルを超えるピクセルのスキャンラインをメモリに保持することはありません。これにより、速度とメモリ使用量が大幅に向上します。

画像のガンマを変更するには、次のような方法を試してください。

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

これは少し遅くなりますが(ピクセルごとにpow()を3回呼び出す)、ルックアップテーブルを作成し、その上でpow()を実行してから、テーブルを介して画像をマップする方がはるかに高速です。 :

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

ご不明な点がございましたら、rubyvipsIssueTrackerでお気軽にご連絡ください。

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

于 2012-05-23T08:24:28.200 に答える
2

申し訳ありませんが、ruby-vipsはわかりませんが、ImageMagickは画像処理に関しては古典的です。RMagick現在のリポジトリ)の形式のRubyバインディングがあり、ImageMagickドキュメントから多くの機能を引き出すことができますが、ここには3つのチュートリアルと、Web上の多くの例もあります。

画像処理の理論を深く掘り下げたい場合は、そのルーツは信号処理の形式です(これは、画像オーディオ/ビデオ信号に非常によく似たアルゴリズムを適用できるため、非常にエキサイティングでやりがいがありますが、最終的には数学に非常に重くなります-フーリエ変換)、そして数学があなたを怖がらせないのであれば、ゴンザレスとウッズの本を読むことをお勧めします、それはこの分野の明確な参考資料だと思います。費用はかかりますが、始めるために必要なものはすべてあります。あなたが最初にたくさんのお金を使わずに始めたいならば、 ここに無料の電子ブックへのリンクがあるページもあります。

于 2012-05-22T21:19:15.020 に答える