| 
                2017-02-12 - 2018-11-07 (update)             | 
              | 
            
                                             | 
        
    
 
                 
    
        
    
        
            
            
            
         
        
*ARマーカー とは
 AR (Augmented Reality 拡張現実) による表示の,位置や角度を決めるために利用するマーカーです.例えば、画像上のマーカーに合わせて文字やCGを表示したいとします.これは,画像上でマーカーを検出することで実現できます.{{small:関連:[link:ARマーカーの応用]}} 
 図1は実際にマーカーを検出し,そこに立方体のフレームを表示した例を示します.
[img:f1lt]
{{small:図1 ARマーカーとその検出結果}}
{{small:(ネコのイラストは,stohnqo様の作品です.GATAG|フリーイラスト素材集から頂戴しました.[link:http://free-illustrations.gatag.net])}}
*サンプルコード (C++)
ライブラリ:[link:simplesp]
サンプルコード:simplesp/sample/cv/bitmarker_neko
Webカメラで撮影中の画像からネコのマーカーを検出します.
*アルゴリズム
 ここでは,四角形タイプのマーカーを検出する一般的な手順を,次の3つの段階で説明します.
1.撮影した画像上から、マーカーの角の4点を検出する
2.マーカーの角の4点の位置から,カメラとマーカーの位置と角度の関係を推定する
3.マーカーの模様から、マーカーの回転とIDを特定する
 
**マーカーの角の検出
 シンプルな方法ですが,2値化に基づく方法が良く利用されます.画像を2値化することで,コントラストの高いマーカーの輪郭(2値化した領域の外周)を特定できるようにします.次に,その輪郭をなぞるように移動してカーブの強さを調べることで角を検出します.この時,輪郭の形状やサイズなどから,マーカーではなさそうな候補は外れ値として除外します.
 検出までの流れを図2に示します.
[img:t1zr]
{{small:図2 左から入力画像,2値化画像,輪郭と角の検出結果}}
**位置と角度の推定
 マーカーの4点の物理的な間隔と,画像上から検出した4点の座標が分かれば,位置と角度を推定できます.これは,PnP(perspective-n-point) problem と呼ばれる問題として知られています(ちなみに,数学のミレニアム問題P≠NP予想とは別物です).具体的な解き方は,別途説明したいと思います.なお,この時点では四角形の回転(0度,90度,180度,270度)は不定です.この不定性は,実世界のマーカーの4点と検出した4点との組み合わせが4通り考えられるため発生します.
**マーカーの回転とIDの特定
 マーカーの回転は,内側の模様や何かしらの特徴を手掛かりに決定します.内側の模様を手掛かりにする場合は,回転を特定できるような模様が必要です(回転対称の模様はNG).また,何かしらの特徴を手掛かりにする場合は,他の処理をできるだけ邪魔しない特徴を考える必要があります.図1に示すマーカーについては,マーカーの四角形の1辺に小さな切れ込みを加え,その位置をもとに回転を特定します.
 次に,マーカーのIDを特定します.マーカーの種類は少なくとも1つ以上あるとします.その種類のうちどれか,或いはどれでもないか(つまり外れ値か)を判定します.その判定は,入力画像上のマーカーと,マーカーの理想画像とを比較することで計算します.ここで、前段の処理で推定した位置と角度の情報から,画像上のマーカーの見た目を正方形に変形しておくと,画像の比較は簡単に実行できます.
 画像上のマーカーを正方形に変形した例を図3に示します. 
[img:d3qr]
{{small:図3 入力画像上のマーカーを正方形に変形した画像と,マーカーの理想画像}}
        
 
        
>> ご意見・ご質問など お気軽にご連絡ください.info