6

我正在尝试实现/转换用于将色盲人的图像校正为红宝石的daltonize算法。

在我不熟悉的语言/环境中,有两个用javascriptpython + 其他实现编写的主要参考实现。

我几乎没有图像处理经验,更不用说 VIPS / ruby​​-vips。我想知道如何迈出第一步。该文档似乎主要是 C/C++ 和很少在 ruby​​ 方面。它也非常详细。我什至不确定要使用哪些基本操作。看起来该lin功能是一个很好的起点,但我不确定如何应用它。

任何有 VIPS 经验的人都可能在几分钟内完成整个算法。我想知道是否有人可以给我一些关于从哪里开始的指示。具体来说:

  • 如何访问单个(R/G/B)元素?
  • 是否有基于 daltonize 实现的更好方法?
4

2 回答 2

5

注意这是一个非常古老的答案,并在两个主要版本之前描述了 ruby​​-vips。我已将其更新为 2.0.16 gem,即 2019 年 11 月的当前版本)

这里有完整的文档:

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

Vips部分有一个教程式的介绍:

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

例如:

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]

这将以流模式打开图像,将中间波段(绿色)乘以 2,使用整数卷积锐化图像,并将结果写回。你可以像这样运行它:

./example.rb x.jpg y.ppm

ruby-vips repo 中有一个完整的“daltonize”示例:

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 回答