ノイズ除去 メディアン法


ノイズ除去にメディアン法を実装
こちらからどうぞ
ソースは右クリックで


考え方は簡単で、
周囲の画素のメディアンをとって新たな画素としています。
点状に存在するノイズに有効です。


以下ソース

//メディアン法
private function noise_median():void{
    if(target_bmpData == null) return;
    
    bmpData2 = new BitmapData(target_bmpData.width, target_bmpData.height);
    
    var h:int = bmpData2.height;
    var w:int = bmpData2.width;
    var col:Color = new Color();
    var sortr:Array = [], sortg:Array = [], sortb:Array = [];
    var rr:int, gg:int, bb:int;
    var rd:int;
    
    for(var y:int = 0; y < h; y++){
        for(var x:int = 0; x < w; x++){
            rr = gg = bb = 0;
            rd = 0;
            for(var yy:int = -1; yy <= 1; yy++){
                for(var xx:int = -1; xx <= 1; xx++){
                    col.color = target_bmpData.getPixel(x+xx, y+yy);
                    sortr[rd] = col.r;
                    sortg[rd] = col.g;
                    sortb[rd] = col.b;
                    rd++;
                }
            }
            col.r = sortr.sort()[4];
            col.g = sortg.sort()[4];
            col.b = sortb.sort()[4];
            bmpData2.setPixel(x,y,col.color);
        }
    }
    
    view.bitmapData = target_bmpData = bmpData2;
    myImage.width = view.width = myImage.width;
    myImage.height = view.height = myImage.height;
}