【问题标题】:first steps using ruby-vips使用 ruby​​-vips 的第一步
【发布时间】:2012-12-10 12:35:45
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: ruby image-processing


    【解决方案1】:

    注意这是一个非常古老的答案,并在两个主要版本之前描述了 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

    【讨论】:

    • 哇。非常感谢。花费数小时尝试转换 js/python 算法让我感到非常愚蠢。我知道有这方面经验的人只需要几分钟就能解决这个问题。我会试着看看我是否能弄清楚这是如何工作的,这样我就可以在这个过程中学到一些东西。我希望我能 +1000 这个。谢谢!
    • 谢谢@Stanislaw - 我确实已经看到了你的问题,但仍然对如何在 daltonize 转换方面取得任何进展感到非常迷茫。我还没有尝试过建议的实现,但希望很快会再次深入研究它。
    • 大家好,请记住 ruby​​-vips 有带有“示例”和“基本概念”页面的 wiki:github.com/jcupitt/ruby-vips/wiki。成功后,请随时在此处添加您的 daltonize 代码。示例页面确实缺乏 ruby​​-vips 的良好用例。
    • @Stanislaw。我在 wiki 中添加了一个修改后的示例。我快速测试了它并且它有效。上面的原始实现与 wiki 版本之间的区别在于 wiki 版本使用 LMS 而不是 bradford cone space 并且似乎以某种方式更好地工作。
    【解决方案2】:

    对于新手:ruby-vips 有 wiki:https://github.com/jcupitt/ruby-vips/wiki,其中包含“示例”和“基本概念”页面。它们展示了 ruby​​-vips 使用的基础知识。

    此外,您可以随意添加您自己的用例,就像 @YoavAner 所做的那样(Daltonize 示例)。

    【讨论】:

      猜你喜欢
      • 2015-08-23
      • 2016-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多