加重平均フィルタを作る

寄稿:東條遼平

平均化フィルタに重みづけしたフィルタ

加重平均フィルタは平均化フィルタに重みづけしたものです.注目しているピクセルに近いピクセルの値の影響を大きくしたもので,

img2.png

のようになります.全体の合計の値が変わらなければ重みづけはいくらでも問題ないですが今回は上のフィルタを作ります.

for(i=1; i<img->height-1; i++){
  for(j=1; j<img->width-1; j++){
    sumr = sumg = sumb = 0;
    for(k=-1; k<=1; k++){
      for(l=-1; l<=1; l++){
        weight = 1;
        if(!k)weight *= 2;
        if(!l)weight *= 2;
        sumr += weight * img->data[(i+k)*img->width + j + l].r;
        sumg += weight * img->data[(i+k)*img->width + j + l].g;
        sumb += weight * img->data[(i+k)*img->width + j + l].b;
      }
    }
    temp->data[i*temp->width + j].r = sumr/16;
    temp->data[i*temp->width + j].g = sumg/16;
    temp->data[i*temp->width + j].b = sumb/16;
  }
}

平均化フィルタのものと殆ど同じですが重みづけをするためにweightという変数を宣言しています.これを適宜変更してやりながらピクセルの値を足し合わしています.

Valid XHTML 1.1! home > コンピュータ > プログラミング >
リロード   新規 編集 凍結 差分 添付 複製 改名   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS
Modified by 物理のかぎプロジェクト PukiWiki 1.4.5_1 Copyright © 2001-2005 PukiWiki Developers Team. License is GPL.
Based on "PukiWiki" 1.3 by yu-jiPowered by PHP 5.3.29HTML convert time to 0.008 sec.