画像に1次微分フィルタをかける
グレー画像に1次微分フィルタをかけてみます。
1次微分フィルタをかけると画像のエッジを抽出することができるんです。
今回はこの画像に1次微分フィルタをかけてみます。
画像はグローバルな二次元配列imageにあらかじめ読み込まれていて、同じくグローバルな二次元配列image2にフィルタリングの結果を出力することにします。
void FirstOrderDifferentialFilter(void) { int sum=0; for(int i=1;i<y_size-1;i++){ //y_sizeは画像の縦幅 for(int j=1;j<x_size-1;j++){ //x_sizeは画像の横幅 sum = abs( image[i][j+1]-image[i][j] ) + abs( image[i+1][j]-image[i][j] ); image2[i][j]=sum; } } }
このような結果になります。輪郭が抽出されていますね。
今回は使用したオペレータはy方向は
0 0 0 0 -1 0 0 1 0
x方向は
0 0 0 0 -1 1 0 0 0
です。このオペレータを変更させることで1次微分の方向性を変えたりすることができます。