3

後で彼の画像を使用できるように、ビデオソースから人間を抽出しようとしています。人体を抽出するだけで、環境を無視する必要があります。良い点は、背景が静的であることです。AForgeを使用して、現在のフレームを静的な背景画像と比較し、異なるピクセルを抽出するCustomFrameDifferenceDetectorフィルターを適用しようとしました(difference> threshold)。うまくいきますが、肌や服の一部が背景と同じ色の場合は問題があります。これらの場合、フィルターはこれらの部分を無視し、結果としてボディにさまざまな穴ができます。しきい値を下げるだけでは問題は解決しません。体の影やその他のノイズが増加するためです(ノイズが抑制されている場合でも)。

この問題の既知の解決策を知っていますか?それとも未解決の問題ですか?

4

2 に答える 2

3

問題を解決するのは難しいです(そして、MicrosoftのKinectが可視光のみを使用しない理由の1つであり、青/緑のスクリーニングが依然として非常に人気がある理由の1つです)。私は穴を取り除こうとします(体がどこにあるべきかを予測できるはずです)。処理能力がある場合は、さまざまなしきい値を使用して結果をマージします。新しい分離された画像をフィルタリングすることもできます(たとえば、現在のフレームを最後のフレームに追加して、結果を正規化します)。このようにして、1つのフレームで失われた形状をより一貫して追跡できます。

別のアプローチ:体の位置のみを検出するために、検出された形状/領域を使用します。つまり、その特定の形状を無視し、推定された体の位置の上/周りに事前に作成されたシャプレを使用します。ブルースクリーンのような動作をしたい場合、これはおそらく機能しませんが、穴を閉じるのに役立つ可能性があります。

于 2011-07-16T10:44:48.230 に答える
1

Alturos.Yoloはあなたが探していることを正確に行います。

Yoloは、注釈付きの画像から、探しているオブジェクトを検出する方法を学びます。最初に、Nuget Package Managerを使用して、トレーニング済みの一連のイメージとともにプロジェクトをインストールする必要があります。あなたの場合、YOLOv2-tinyモデルで十分です。

Install-Package Alturos.Yolo
Install-Package Alturos.YoloV2TinyVocData 

インストールすると、次のように使用して、画像内の人間を検出できます。

using (var yoloWrapper = new YoloWrapper("yolov2-tiny-voc.cfg", "yolov2-tiny-voc.weights", "voc.names"))
{
    var items = yoloWrapper.Detect(@"your_image.jpg");
    //if (items[0].Type == "Person") { ... }
}

items配列には、見つかったすべてのオブジェクトに関する情報が含まれます。Typeプロパティを使用して、見ているのが人間であるかどうかを確認できます。

于 2019-05-14T09:13:04.647 に答える