読者です 読者をやめる 読者になる 読者になる

旅行好きなソフトエンジニアの備忘録

プログラミングや技術関連のメモを始めました

【OpenCV】 画像にエッジ検出フィルタを適用する(Laplacianフィルタ)

C++ OpenCV 画像処理

OpenCVの復習が必要になったのでメモしておきます。

// グレースケールで画像を読み込む
UMat source;
imread("lenna.jpg", CV_LOAD_IMAGE_GRAYSCALE).copyTo(source);
if (source.empty())
{
    throw runtime_error("Failed to open image");
}

// エッジを検出する
int ksize = 3;
UMat destination;
Laplacian(source, destination, source.depth(), ksize);

imshow("source", source);
imshow("destination", destination);

Laplacianのksizeというパラメータについてですが、k=1の時

$$ \left( \begin{array}{ccc} 0 & 1 & 0 \\ 1 & -4 & 1 \\ 0 & 1 & 0 \\ \end{array} \right) $$

k=3の時

$$ \left( \begin{array}{ccc} 1 & 1 & 1 \\ 1 & -8 & 1 \\ 1 & 1 & 1 \\ \end{array} \right) $$

というフィルタを適用します。

f:id:ni4muraano:20170115145041j:plain f:id:ni4muraano:20170116101858j:plain

さらに進化した画像処理ライブラリの定番 OpenCV 3基本プログラミング

さらに進化した画像処理ライブラリの定番 OpenCV 3基本プログラミング


関連記事
【OpenCV】 画像にエッジ検出フィルタを適用する(Cannyフィルタ) - 旅行好きなソフトエンジニアの備忘録
【OpenCV】 画像にエッジ検出フィルタを適用する(Sobelフィルタ) - 旅行好きなソフトエンジニアの備忘録