はじめに
Magroという画像をNumo::NArrayで扱える(読み書きできる)Gemを作っていたが、いろいろと時間がとれず更新が滞っていた。
せっかくの連休なので、Bilinear補完によるサイズ変更を追加した。基本的なとこから実装するならばNearest Neighbor法であるし、クオリティを重視するならばLanczos法であるが、実装しやすさからBilinear補完にした。OpenCVのresizeのデフォルトがBliinearなのもある。
使い方
Magroは画像ファイルの読み書きにlibpngとlibjpegを必要とする。Magroをインストールすると、依存関係でNumo::NArrayがインストールされる。
$ brew install libpng libjpeg $ gem install magro
画像の読み込み・サイズ変更・保存までは以下のようになる。
require 'magro' img = Magro::IO.imread('hoge.png') resized = Magro::Transform.resize(img, height: 128, width: 128) Magro::IO.imsave('hoge_resized.png', resized)
おわりに
Bilinear補完によるサイズ変更の実装では、Extensionは使わずにすべてRubyで書いてある。画像をNumo::NArrayで扱える便利さを、自身で体験することになった。次に追加するとすればフィルタかな。