Сравнение растровых данных в пикселе AS3 для пикселя - PullRequest
2 голосов
/ 30 марта 2010

Я ищу довольно простой метод сравнения изображений в AS3. Я взял изображение с веб-камеры (без объекта), передал его в растровые данные, затем было получено второе изображение (на этот раз с объектом) для сравнения этих данных, из этих двух изображений я хотел бы создать маску из пикселей, которые соответствуют на обоих растровых изображениях. Я почесал голову некоторое время, и я не делаю никакого прогресса. Может ли кто-нибудь указать мне правильное направление для метода сравнения пикселей, например, getPixel32 ()

Приветствия

Jono

Ответы [ 2 ]

4 голосов
/ 30 марта 2010

используйте сравните , чтобы создать разницу между ними, а затем используйте treshold , чтобы извлечь интересующие вас детали.

edit: на самом деле это довольно просто. хитрость заключается в применении порогового значения несколько раз на канал с использованием параметра маски (в противном случае сравнение имеет мало смысла, поскольку 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));

это создает прозрачную маску. затем пороговое значение применяется ко всем трем каналам, устанавливая альфа-канал на полностью непрозрачный, где значение каналов превышает пороговое значение (вы можете уменьшить его).

Вы можете изолировать объект переднего плана («парень перед веб-камерой»), скопировав альфа-канал из маски в текущее видеоизображение.

0 голосов
/ 06 августа 2010

Одной из проблем здесь является то, что вы хотите выяснить, есть ли у пикселя ЛЮБОЕ изменение в нем, и если это так, преобразовать этот пиксель в другой цвет (для маскировки). К сожалению, качество веб-камеры не очень хорошее, поэтому даже если ваша сцена вообще не изменяется, растровые данные, поступающие с веб-камеры, изменятся незначительно. Поэтому, когда ваш объект входит в кадр ... вы получите пиксельные изменения для объекта ... но также и шум в других областях из-за изменений освещения или качества камеры. Что вам нужно сделать, это написать функцию, которая анализирует результат bitmapdaya.compare () на предмет изменения в области больше, чем _____, чтобы определить, достаточно ли изменений, чтобы гарантировать наличие там реального объекта. Это поможет убрать шум и сделать вашу маску более точной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...