はじめに
いま画像処理(といっても切ったり縮めたりですが)にRMagickつまりImageMagickを使っているわけですが、若干遅い。ということで他のやり方もあるだろう多分、と調べたところ、候補に挙がったのがこの3つ。ひとまず全部入れてみる。
- VIPS
- OpenCV(速いか知らない)
- Core Image(Macなので)
Core Image?
Core Image (コア・イメージ)はMac OS Xを構成するミドルウェアの一種で、GPUのプログラマブルシェーダを用いてイメージのフィルタ処理を行うコンポーネント及びAPIである。シェーダー非対応の場合はCPUによる計算を行い、ハードウェア層を抽象化する。
各フィルタはImage Unit(イメージユニット)と呼ばれるプラグイン形式で、いったん組み込めばシステム全体で使用可能となる。またカラー領域を32ビット精度で浮動小数点処理する為、非常に精密な演算結果が得られるのも特徴。
Mac OS X v10.4以降で使用可能で、実用的な速度を出すには対応GPUまたは高速なCPUが必要となる。
wikipedia:Core_Image
Apple社のMac OS X バージョン10.4 "Tiger"で新しく装備されたグラフィックエンジン。Apple社はGPUの処理能力を簡単に活用できると説明している。
また、CPUが行っていた処理をGPUに任せることでCPUの負荷を軽減することができる。
GPUにCPUの仕事を肩代わりさせるという機能はすでにQuartz Extremeとして実現しているが、Core ImageではImage Unitプラグインで機能拡張が行えることや「プログラマブル」GPUに対してプログラムを書くことでGPUの備えるフィルタやエフェクト等の機能が容易に利用できるという利点がある。
Core Imageとは - はてなキーワード
なぜrubygemsのcore_imageいれるの?MacRuby入れればCore Image使えるじゃん?
なんとなくです。
Ruby全面的に入れ替えてしまうMacRubyではなく、画像処理部分だけ変更できる(ような)core_imageのほうが良いかと思って。
(しかし…結局は入替になったのだったorz)
install core_image
$ gem install core_image Fetching: core_image-0.0.3.5.gem (100%) Successfully installed core_image-0.0.3.5 1 gem installed Installing ri documentation for core_image-0.0.3.5... Building YARD (yri) index for core_image-0.0.3.5... Installing RDoc documentation for core_image-0.0.3.5...
あっさり。
core_imageにはRubyCocoaが要るじゃないか
core_image/core_image.rb at master · serogers/core_image · GitHub
を見ると、
require 'osx/cocoa'
とある。つまり、core_imageはRubyCocoaが必要なのだな、うんw
RubyCocoa - Documentation : Getting Started
を参照し、
RubyCocoa - Browse /RubyCocoa/1.0.6 at SourceForge.net
のRubyCocoa-1.0.6-OSX10.7.dmgをダウンロードしてインストール。
インストールされるのは以下の通り。
/Library/Frameworks/RubyCocoa.framework RubyCocoa framework (core) inside of /Library/Ruby/Site/1.8/osx RubyCocoa library (stub) /Library/Ruby/Site/1.8/universal-darwin12.0/rubycocoa.bundle RubyCocoa extended library (stub) inside of '/Library/Application Support/Apple/Developer Tools' Some templates for Xcode 3 or earlier /Developer/Examples/RubyCocoa Sample programs
…しかしまだ
require 'osx/cocoa'
が通らないぞ。
rbenvで入れたRubyでRubyCocoaを使うためにビルドする
http://limechat.net/rubycocoa/wiki/?Build
を参考にして実行してみる。which rubyすると~/.rbenv/shims/rubyだと言ってるので以下のように。
$ ruby install.rb config --prefix=~/.rbenv/shims/ruby --build-universal=no install.rb:53: Use RbConfig instead of obsolete and deprecated Config. RubyCocoa DO NOT support Ruby-1.9 try 'ruby install.rb --help' for usage
…なんだと!?
RubyCocoa DO NOT support Ruby-1.9だと!?
んじゃsystemしかダメじゃんか、ぷんぷん。
(ここでやる気が失せてますのであとはオマケです)
systemのRubyで試す
$ rbenv local system $ ruby -v ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin11.0]
ではpryでいけるか。
$ pry [1] pry(main)> require 'osx/cocoa' => true
いけたっ☆
ということで、systemでやるしかないですね。
system Ruby(1.8.7)にgem install core_image
systemだからsudoしないと入れれなくて面倒。
$ sudo gem install core_image Password: Successfully installed core_image-0.0.3.5 1 gem installed Installing ri documentation for core_image-0.0.3.5... Building YARD (yri) index for core_image-0.0.3.5... Installing RDoc documentation for core_image-0.0.3.5...
おk。