(98) OpenCV #3 : Canny法でエッジ抽出

投稿者: | 2018年9月17日

5,109 views

この記事は最終更新から 2209日 が経過しています。

1. やりたいこと

Pythonで OpenCVの第 3回目、今回は OpenCVの Canny関数を使って画像のエッジ抽出をやりたい。

2. やってみる

まずは元画像を読み込み、白黒画像に変換する。

import cv2
from PIL import Image

# 対象画像をロード
img = cv2.imread("img001.jpg")

# カラー画像を白黒画像に変換
imgG = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 画像を表示
pilG = Image.fromarray(imgG)
pilG.show()

次に Canny法(ヒステリシス min:100, max:200)でエッジを抽出してみる。
すなわち、Canny法のパラメーターとして、
・UP方向の場合の閾値は 200
・DOWN方向の場合の閾値は 100
・100~200は ON/OFF混在のモヤモヤ区間
とするのだ。
アルゴリズムの詳細は Canny法によるエッジ検出 を参照のこと。

# Canny法でエッジ抽出
edges = cv2.Canny(imgG,100,200)

# 画像を表示
pilE = Image.fromarray(edges)
pilE.show()

次に Canny法(ヒステリシス min:50, max:100)でエッジを抽出してみる。

次に Canny法(ヒステリシス min:150, max:200)でエッジを抽出してみる。

最後に Canny法(ヒステリシス min:125, max:175)でエッジを抽出してみる。

3. 所感

最適な閾値は対象画像により異なるはず。
どうやって見つけるのかな?

4. 参考

ありがとうございます。 m(_ _)m
http://labs.eecs.tottori-u.ac.jp/sd/Member/oyamada/OpenCV/html/py_tutorials/py_imgproc/py_canny/py_canny.html


コメントを残す

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