NyARToolkit/2.4.0のリリースについて
NyARToolkit/2.4.0が完成しました。
Java、C#はリリース済です。
C++については、Alchemyバインドを修正後のリリースとなりますが、それ以外はSubversionのRev309からダウンロード可能です。
http://sourceforge.jp/projects/nyartoolkit/
今回アップデートでは、アルゴリズムレベルでの高速化を行いました。1フレーム辺りの画処理時間が約1.5倍、1マーカ辺りの座標変換速度が約10倍に高速化しています。
高速化手法
高速化手法の紹介です。
ラベリング方式の変更
画像処理部で、ARToolKit由来のラベリングから、自前で実装したRLEラベリングへの切り替えを行いました。ベンチマーク用の画像では、概ね1.5倍の高速化が確認できています。ARToolKitのラベリング機能では不可能だった、画像端1ドットのラベリングもできるようになりました。
並進ベクトル計算器の最適化・高度化
座標変換行列計算処理で、並進ベクトル計算器を、ARToolKitの本を参考に実装しなおしました。逆行列を使用した解法を使わないので、4頂点以上の入力が受け付けられます。元々負荷が少ないのでパフォーマンスにはあまり影響を及ぼしませんが、高速化しています。
偏微分フィッティング
座標変換行列計算処理で、行列最適化処理を、自前で実装したZXY系の偏微分フィッティング処理に置き換えました。処理速度が10倍程度高速化しています(2.3.0系比)。処理方式の変更により、N個の頂点から最適化問題を解くことが出来るようになりました。また、精度も向上しています。(してるはず…)
#ARToolKitもN個の頂点から最適化問題解けましたが、NyARToolKitで一度4個に絞った経緯があります。
全体では、ARToolKit/2.72.1系と比較して、4倍程度の速度が達成できています。(同一言語で比較した場合)ARToolkit/2.72.1を1倍とすると、Java版で2倍、C#版で1.0倍、C++版で4倍くらいの処理速度になります。
座標変換行列計算処理の高速化具合が大きいので、特にマルチマーカを使用した場合に、さらに大きな速度向上が期待できます。