Sobelフィルターについて
- エッジの強調が強い
- そのためノイズが強調されやすい
- カーネル(3x3)のイメージ ↓
OpenCVでの使用方法
-
src
:入力画像
-
dst
:出力画像(サイズ,チャンネル数が同じ)
-
ddepth
:出力画像の深さ (下の表の組み合わせのように選択可)
-
dx
:1にするとx方向に微分する(0 or 1)
-
dy
:1にするとy方向に微分する(0 or 1)
-
ksize
:カーネルのサイズ
-
scale
:カーネル要素にかかる倍率
-
delta
:わからない
C++サンプル
フィルタを実行するサンプルは以下のようになります。結果のエッジを強調するためにkernelサイズ
はそのままの3
に,scale
は10
としています。
cv::Mat img = imread( "images/template.jpg" );
cv::Mat gx, gy;
cv::Sobel(img, gx, CV_16S, 1, 0, 3, 10); // x方向微分
cv::Sobel(img, gy, CV_16S, 0, 1, 3, 10); // y方向微分
cv::imshow()
でそれぞれのMat
を見ると以下のようになりました。