6

色覚異常の人の画像をルビーに補正するためのダルトナイズアルゴリズムを実装/変換しようとしています。

javascriptpythonで書かれた2つの主要なリファレンス実装と、私がよく知らない言語/環境での他の実装があります。

私は、VIPS / ruby​​-vipsは言うまでもなく、画像処理の経験はほとんどありません。最初の一歩を踏み出す方法を考えています。ドキュメントは主にC/C ++で書かれているようで、ルビー側ではほとんどありません。また、非常に詳細です。どの基本操作を使うべきかさえわかりません。この関数は良い出発点のように見えlinますが、どのように適用するのか正確にはわかりません。

VIPSの経験があれば、おそらく数分でアルゴリズム全体を理解できます。どこから始めればいいのか、誰か教えてくれないかしら。具体的には:

  • 単一の(R / G / B)要素にアクセスする方法は?
  • daltonizeの実装に基づくより良いアプローチはありますか?
4

2 に答える 2

5

(note This was a very old answer and described ruby-vips as of two major versions ago. I've updated it for the 2.0.16 gem, the current version in November 2019)

There is complete documentation here:

https://rubydoc.info/gems/ruby-vips

The Vips section has a tutorial-style introduction:

https://rubydoc.info/gems/ruby-vips/Vips

For example:

require 'vips'

if ARGV.length < 2
    raise "usage: #{$PROGRAM_NAME}: input-file output-file"
end

im = Vips::Image.new_from_file ARGV[0], access: :sequential

im *= [1, 2, 1]

mask = Vips::Image.new_from_array [
        [-1, -1, -1],
        [-1, 16, -1],
        [-1, -1, -1]
       ], 8
im = im.conv mask, precision: :integer

im.write_to_file ARGV[1]

This opens an image in streaming mode, multiplies the middle band (green) by two, sharpens the image with an integer convolution, and writes the result back. You can run it like this:

./example.rb x.jpg y.ppm

There's a full "daltonize" example in the ruby-vips repo:

https://github.com/libvips/ruby-vips/blob/master/example/daltonize8.rb

于 2013-01-29T11:13:15.747 に答える
1

初心者向け: ruby​​-vips には wiki があります: https://github.com/jcupitt/ruby-vips/wikiに「例」と「基本概念」のページがあります。ruby-vips の使い方の基本を示します。

また、@YoavAner が行ったように、そこに独自のユースケースを自由に追加してください (Daltonize の例)。

于 2013-02-01T21:13:20.753 に答える