主要内容

。

KLTアルゴリズムを使用した顔の検出と追跡

この例では,特点点を使使してののと追迹を明ししを明します。この例の方法は,その人が颜倾けたや,カメラカメラ近づいカメラから远ざかっや结合ででも颜の追迹を続け続け続けを続け続け

はじめに

,自动车安全性,监视など,多重のコンピュータービジョンにおいて重要。この例では,追迹では,追迹问题を3つのつのにことこと,シンプルな颜でを作物しな。

  1. 颜の検出

  2. 追跡する顔の特徴の識別

  3. 顔の追跡

颜の検出

まずは,颜を検出しなければませませませませませの颜ののをするにはVision.cascadeObjectDetectorオブジェクトオブジェクトを使し。カスケードカスケード検出器材,中提琴jones検出と,検出jに习済みのモデルを使使し。既定既定は,検出器は颜をするよう构さ颜を検出するよう成さていますが,他のタイプのオブジェクトの検出に使するするもできます。

%创建级联检测器对象。FaceDetector = Vision.cascadeObjectDetector();%读取视频帧并运行面部检测器。VideoReader = Videoreader(“tilted_face.avi”);视频rame = ReadFrame(Videoreader);bbox =步骤(FaceDetector,Videoframe);%在检测到的面周围绘制返回的边界框。视频rame = insertshape(视频rame,“矩形”,bbox);数字;imshow(视频rame);标题('检测到脸');

%将第一个框转换为4个点的列表%这是能够可视化对象旋转所需要的。bboxpoints = bbox2points(bbox(1,:));

顔を時間の経過と共に追跡するために,この例ではKanade-Lucas-Tomasi (KLT)アルゴリズムを使用します。各フレームにカスケードオブジェクト検出器を使用することも可能ですが,これには大量の計算が必要です。また,対象者が向きを変えたり顔を傾けたりすると顔を検出できなくなる可能性もあります。この制限は,検出に使用される学習済み分類モデルのタイプに起因しています。この例で顔を検出するのは一度だけで,その後はKLTアルゴリズムを使い複数のビデオフレームを通して顔を追跡します。

追跡する顔の特徴の識別

KLTアルゴリズムは,複数のビデオフレームを通して一連の特徴点を追跡します。検出により顔を特定したら,例の次のステップでは確実に追跡できる特徴点を特定します。この例では史&预の提唱する標準的な“追跡に適した特徴(良好的特性来跟踪)“を使用します。

颜の领域で特价点を検出します。

点= detectMinEigenFeatures (rgb2gray (videoFrame),'roi',bbox);%显示检测到的点。图,imshow(视频rame),持有, 标题('检测到的功能');情节(点);

点点を追迹するするトラッカーのの初

特徴点を特价したら,愿景。PointTrackerの系统对象をを用しててそれらを追迹追迹でき。ポイントトラッカーは,前のフレーム内点ににフレーム内の対応をしようとします。estimateGeometricTransform2Dを使使し,以前の点と新闻点のおよびスケールをします回転この変换はの周り周り境界にに适ののれににに适れれ

ポイントトラッカーを作品成し,双方向の误差を有效にて,ノイズや乱れが存する状况下し

pointtracker = Vision.PointCracker(“MaxBidirectionalError”,2);%用初始点位置和初始初始化跟踪器%的视频帧。点= points.Location;初始化(pointTracker点,videoFrame);

結果を表示するビデオプレーヤーの初期化

ビデオフレームを表示するビデオプレーヤープレーヤー制成

VideoPlayer = Vision.videoplayer(“位置”......[100 100 [大小(视频帧,2),大小(视频帧,1)] + 30);

顔の追跡

フレームごとごとに点をを追迹,关节estimateGeometricTransform2Dをを用して颜颜动きを推定します。



oldPoints =点;Hasfame(录像机)%得到下一帧视频rame = ReadFrame(Videoreader);%跟踪点。请注意,某些点可能会丢失。[点,isfound] =步骤(PointTracker,Videoframe);visiblepoints = points(isfound,:);oderinliers = oldPoints(isfound,:);如果>= 1%需要至少2分%估计旧点之间的几何变换%和新点和消除异常值[XForm,InLieridX] = eStimateGeometricTransform2D(......oldInliers visiblePoints,“相似”'maxdistance'4);oderinliers = ollinliers(Inlieridx,:);VisiblePoints = VisiblePoints(Inlieridx,:);%将转换应用于边界盒点bboxpoints = TransformPointSforward(XForm,BboxPoints);%在被跟踪的对象周围插入边界框BboxPolygon = Rehape(BboxPoints',1,[]);视频rame = insertshape(视频rame,'多边形'bboxPolygon,......'行宽',2);%显示跟踪点视频rame = InsertMarker(视频帧,visiblepoints,“+”......“颜色”'白色的');%重置点OldPoints = VisiblePoints;设定值(PointTracker,OldPoints);结尾%使用Video Player对象显示带注释的视频帧步骤(Videoplayer,Videoframe);结尾%清理释放(放像机);

释放(PointTracker);

まとめ

この例では,1つの颜を自动的にしてて追迹,シンプルな颜の追迹をしたたて,入そのビデオ変更て,そのそのでもののとが可かかか试しみみください。検出ステップの最初のフレーム,その人がカメラのをている

参考文献

Viola,Paul A.和Jones,Michael J.“使用促进级联的简单功能的快速对象检测”,IEEE CVPR,2001。

Bruce D. Lucas和Takeo Kanade。一种迭代图像配准技术,其应用于立体视觉。1981年人工智能国际联合会议。

Carlo Tomasi和Takeo Kanade。点特征的检测与跟踪。卡内基梅隆大学技术报告CMU-CS-91-132, 1991。

建立施和卡洛托马斯。追踪的良好功能。电脑愿景和模式识别的IEEE会议,1994年。

Zdenek Kalal,Krystian Mikolajczyk和Jiri Matas。前后错误:自动检测跟踪故障。2010年模式识别国际会议