微分画像・エッジ画像を求める(Laplacian)

『エッジ画像を求める』メソッドには、Sobel,Laplacian,Cannyの3種類があります。今回は、二次微分(差分)を用いてエッジ検出を行うLaplacianです。
static voidLaplacian(Mat src, Mat dst, int ddepth)
static void Laplacian(Mat src, Mat dst, int ddepth, int ksize)
static void Laplacian(Mat src, Mat dst, int ddepth, int ksize, double scale)
static void Laplacian(Mat src, Mat dst, int ddepth, int ksize, double scale, double delta)
static void Laplacian(Mat src, Mat dst, int ddepth, int ksize, double scale, double delta, int borderType)
Mat src : 処理したい元の画像
Mat dst : 変換後のエッジ画像
int ddepth : 変換後画像のビット深度。通常は src.depth()を指定すれば良いようです。
int ksize : 2次微分フィルタを求めるために利用される領域のサイズ。
これは正の奇数でなければいけません。

double scale : 求められたラプラシアンに対するスケールファクタ。
double delta : dst に格納する前に,結果に足されるオプション値。
int borderType : ピクセル外挿手法。『画像を回転する』と同じ

 実行結果 

ksizeを変えてみます。
上段:元画像 本を撮影した画像を透視変換したもの sobelと同じ
中段:Imgproc.Laplacian(mat1, mat2, mat.depth(), 3);
下段:Imgproc.Laplacian(mat1, mat3, mat.depth(), 7);
ksizeを大きくすると ざわざわ感がまします。
この元データではksize=3の場合 黒⇒白、白⇒黒 両方向とも エッジをきれいに拾っています。 

scaleを変えてみます。
上段:元画像
中段:Imgproc.Laplacian(mat1, mat2, mat.depth(), 3, 1);
下段:Imgproc.Laplacian(mat1, mat3, mat.depth(), 3, 5);
scaleを大きくするとザワメキ感が増します。

 deltaを変えてみます。
上段:元画像

中段:Imgproc.Laplacian(mat1, mat2, mat.depth(), 3, 1, 10);
下段: Imgproc.Laplacian(mat1, mat3, mat.depth(), 3, 1, 80);
deltaを大きくすると全体的に白っぽくなります。

 by Android2.2 with OpenCv 2.3.1 for Android 
スポンサーリンク
Rectangle大広告
Rectangle大広告

シェアする

  • このエントリーをはてなブックマークに追加

フォローする