チェンジセット 3708

差分発生行の前後
無視リスト:
コミット日時:
2010/04/06 22:46:02 (2 年前)
コミッタ:
rokubou
ログメッセージ:

画像二値化のしきい値自動調整機能を追加

ファイル:

凡例:

変更無し
追加
削除
更新
コピー
移動
  • as3/FLARToolKit/trunk/src/examples/PV3DARApp.as

    r3344 r3708  
    3030        import flash.events.Event; 
    3131         
     32        import org.libspark.flartoolkit.core.analyzer.raster.threshold.FLARRasterThresholdAnalyzer_SlidePTile; 
    3233        import org.libspark.flartoolkit.core.transmat.FLARTransMatResult; 
    3334        import org.libspark.flartoolkit.support.pv3d.FLARBaseNode; 
     
    3738        import org.papervision3d.view.Viewport3D; 
    3839         
    39         import examples.ARAppBase; 
    40          
    4140        public class PV3DARApp extends ARAppBase { 
     41                /** 
     42                 * @see flash.display.Sprite 
     43                 */ 
     44                protected var _base:Sprite; 
    4245                 
    43                 protected var _base:Sprite; 
     46                /** 
     47                 * @see org.papervision3d.view.Viewport3D 
     48                 */ 
    4449                protected var _viewport:Viewport3D; 
     50                 
     51                /** 
     52                 * @see org.libspark.flartoolkit.support.pv3d.FLARCamera3D 
     53                 */ 
    4554                protected var _camera3d:FLARCamera3D; 
     55                 
     56                /** 
     57                 * @see org.papervision3d.scenes.Scene3D 
     58                 */ 
    4659                protected var _scene:Scene3D; 
     60                 
     61                /** 
     62                 * @see org.papervision3d.render.LazyRenderEngine 
     63                 */ 
    4764                protected var _renderer:LazyRenderEngine; 
     65                 
     66                /** 
     67                 * @see org.libspark.flartoolkit.support.pv3d.FLARBaseNode 
     68                 */ 
    4869                protected var _markerNode:FLARBaseNode; 
    4970                 
     71                /** 
     72                 * @see org.libspark.flartoolkit.core.transmat.FLARTransMatResult 
     73                 */ 
    5074                protected var _resultMat:FLARTransMatResult = new FLARTransMatResult(); 
    5175                 
     76                /** 
     77                 * 画像二値化の際のしきい値 
     78                 * 固定値で使用する場合は、使用場所を想定して値を設定してください。 
     79                 * 認識に差が生じます。 
     80                 */ 
     81                private var _threshold:int = 110; 
     82                 
     83                /** 
     84                 *  しきい値の自動調整用のクラス 
     85                 * @see org.libspark.flartoolkit.core.analyzer.raster.threshold.FLARRasterThresholdAnalyzer_SlidePTile 
     86                 */ 
     87                private var _threshold_detect:FLARRasterThresholdAnalyzer_SlidePTile; 
     88                 
     89                /** 
     90                 * Constructor 
     91                 */ 
    5292                public function PV3DARApp() { 
    5393                } 
     
    77117                        _renderer = new LazyRenderEngine(_scene, _camera3d, _viewport); 
    78118                         
     119                        this._threshold_detect=new FLARRasterThresholdAnalyzer_SlidePTile(15,4); 
     120                         
    79121                        addEventListener(Event.ENTER_FRAME, _onEnterFrame); 
    80122                } 
     
    85127                        var detected:Boolean = false; 
    86128                        try { 
    87                                 detected = _detector.detectMarkerLite(_raster, 80) && _detector.getConfidence() > 0.5; 
     129                                detected = _detector.detectMarkerLite(_raster, _threshold) && _detector.getConfidence() > 0.5; 
    88130                        } catch (e:Error) {} 
    89131                         
     
    94136                        } else { 
    95137                                _markerNode.visible = false; 
     138                                // マーカがなければ、探索+DualPTailで基準輝度検索 
     139                                // マーカーが見つからない場合、処理が重くなるので状況に応じてコメントアウトすると良い 
     140                                var th:int=this._threshold_detect.analyzeRaster(_raster); 
     141                                this._threshold=(this._threshold+th)/2; 
     142                                // trace("[threshold] : " + this._threshold); 
    96143                        } 
    97                          
    98144                        _renderer.render(); 
    99145                }