- 追加された行はこの色です。
- 削除された行はこの色です。
# 2次の微分フィルタ
RIGHT:寄稿:東條遼平
* 2次の微分フィルタ [#h7fda414]
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);