>> пытался с помощью BitmapData.threshold дважды "пройтись" по изображению ..
есть такой финт с отрисовкой разницы (BlendMode.DIFFERENCE), усреднением каналов и тогда уже threshold'ом..
насколько это точно по всяким цветовым понятиям не берусь судить, но на глаз похоже

Код AS3:
public class Main extends Sprite
{
[Embed(source="img.jpg")]
private var imgClass:Class;
public function Main():void
{
stage.scaleMode = StageScaleMode.NO_SCALE;
var src:Bitmap = new imgClass() as Bitmap;
var clr:uint = 0xFF0000;
var tol:int = 80;
//разница между оригиналом и цветом
var clrBmd:BitmapData = new BitmapData(src.width, src.height, false, clr);
clrBmd.draw(src, null, null, BlendMode.DIFFERENCE);
//загоняем все каналы в синий
var k:Number = 1 / 3;
var mtrx:Array = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, k, k, k, 0, 0, 0, 0, 0, 0, 0];
var filter:ColorMatrixFilter = new ColorMatrixFilter(mtrx);
clrBmd.applyFilter(clrBmd, clrBmd.rect, new Point(), filter);
// отсекаем, что не попадает в точность
var resBmd:BitmapData = src.bitmapData.clone();
resBmd.threshold(clrBmd, clrBmd.rect, new Point, ">", tol, 0x0, 0xFF);
var res:Bitmap = new Bitmap(resBmd);
res.y = src.height;
addChild(src);
addChild(res);
}
}