[Python]OpenCVによるエッジ検出 ラプラシアンフィルタ

画像処理の必須技術エッジ検出をOpenCVで実装 ラプラシアンフィルタを紹介

画像処理の人気は右肩あがりで,これからエンジニアを目指す方がいたら非常にオススメな分野です。

もし画像処理を勉強していきたいと考えた場合,エッジ検出は必須技術になると思います(業職種にもよりますが)。

とりあえず製造業の場合は生産品のNG検出などを使用するため,エッジ検出は頻繁に使用します。

製造業 画像処理 に対する画像結果

エッジ検出には主に以下3通りのエッジ検出方法があります。

  1. ラプラシアンフィルタ (本記事)
  2. Sobelフィルタ
  3. Cannyフィルタ

最近人気なのはCannyフィルタですが今回は昔からあるラプラシアンフィルタによるエッジ検出を紹介します。

ラプラシアンフィルタによるエッジ検出 OpenCVで実装

OpenCVは非常に人気のある画像処理ライブラリで,主要な画像処理は簡単なプログラミングで実装できます。

画像処理の基本についてはこちらの記事で,OpenCVによる画像の読込などはこちらの記事で紹介していますので是非見ていってください。

今回はPythonを使って実装していきます。なお,画像処理を行う上でサンプル画像にするのは2020年11月時点で大人気を誇るVTuberの一人,百鬼あやめ様の画像を使わせていただきます。無邪気な感じが最高にかわいいですし,周りの浮遊霊?でエッジ検出が綺麗に確認できそうです。

こちらの画像をC:\Temp\ayame.jpgという名前で保存して以下のプログラムを実行するだけでラプラシアンフィルタによるエッジ検出ができます。

import cv2

img = cv2.imread('C:/Temp/ayame.jpg')      #これでimgにグレースケール画像が入

dst = cv2.Laplacian(img,-1)                #ラプラシアンフィルタでエッジ検出
cv2.imwrite('C:/Temp/laplacian.jpg',dst)   #画像を保存

この短いソースコードだけで簡単にエッジ検出が実装できてしまいます。簡単ですね。

このプログラムによって出力される画像が以下の通りです。

めっちゃかわいいですね! ではなく,くっきりと体の構成部分とそれ以外でフィルタリングし,曲線美が見えています。浮遊霊もくっきりですね。

この処理をする事で線が白線と黒背景のみになるので,画像処理によってキズの有り無しや在荷,線の曲がりを見る事ができます。

この白黒の状態にするのを2値化と呼び,多くの画像処理アプリケーションで使われています。

是非みなさんも活用してください。

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です