2

AS3 でかなり単純な画像比較方法を探しています。Web カメラから画像を取得し (対象物なし)、それをビットマップ データに渡し、次に 2 番目の画像を取得して (今回は対象物あり)、このデータを比較します。これら 2 つの画像からマスクを作成したいと思います。両方のビットマップで一致するピクセルから。私はしばらく頭を悩ませていましたが、実際には何の進歩もありません。getPixel32() のようなピクセル比較メソッドの正しい方向に私を向けることができますか

乾杯

城野

4

2 に答える 2

4

比較を使用して 2 つの違いを作成し、しきい値を使用して関心のある部分を抽出します。

編集:実際にはかなり簡単です。秘訣は、マスクパラメータを使用してチャネルごとにしきい値を複数回適用することです(そうしないと、比較はほとんど意味がありません。0x010000これは、(ほぼ黒)が(黒以外)より大きいと見なされるため0x0000FFです)。方法は次のとおりです。

var dif:BitmapData;//your original bitmapdata
var mask:BitmapData = new BitmapData(dif.width, dif.height, true, 0);
const threshold:uint = 0x20;
for (var i:int = 0; i < 3; i++) 
    mask.threshold(dif, dif.rect, new Point(), ">", threshold << (i * 8), 0xFF000000, 0xFF << (i * 8));

これにより、透明なマスクが作成されます。次に、しきい値が 3 つのチャネルすべてに適用され、チャネル値がしきい値を超える部分でアルファ チャネルが完全に不透明に設定されます (値を小さくしたい場合があります)。

アルファチャンネルをマスクから現在のビデオ画像にコピーすることで、前景オブジェクト (「ウェブカメラの前の男」) を分離できます。

于 2010-03-30T10:18:42.230 に答える
0

ここでの問題の 1 つは、ピクセルに何らかの変更があるかどうかを確認し、変更がある場合は、そのピクセルを (マスキングのために) 別の色に変換することです。残念ながら、Web カメラの品質は高くないため、シーンがまったく変化しなくても、Web カメラからのビットマップ データはわずかに変化します。そのため、被写体がフレームに足を踏み入れると、被写体のピクセルが変化しますが、照明の変化やカメラの品質により、他の領域のノイズも発生します。あなたがする必要があるのは、実際のオブジェクトがそこにあることを保証するのに十分な変化があるかどうかを判断するために、_____ より大きい領域の変化について bitmapdaya.compare() の結果を分析する関数を書くことです。これにより、ノイズが除去され、マスクがより正確になります。

于 2010-08-05T20:45:56.547 に答える