Laplacianフィルタでエッジ抽出する のバックアップソース(No.1)

# 2次の微分フィルタ

LaplacianフィルタはPrewittやSobelフィルタと同じく微分フィルタですが、これは2次の微分フィルタとなっています。

#ref(img8.png)

Laplacianフィルタは上のようになります。また、これは次の式に相当します。

#ref(img9.png)

1次微分とどちらがいいかという訳ではありませんが、 2次微分の方が細かくエッジを抽出してくれるようです。

 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++){
         if(!k && !l) weight = -4;
         else if(!k || !l) weight = 1;
         else weight = 0;
 
         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 = abs((double)sumr);
     temp->data[i*temp->width + j].g = abs((double)sumg);
     temp->data[i*temp->width + j].b = abs((double)sumb);
   }
 }

係数が違うだけでアルゴリズム自体はPrewittやSobelフィルタと同じです。 

- &ref(main.c);
- &ref(bitmap.c);
- &ref(bitmap.h);

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.002 sec.