hiyoko-programingの日記

プログラミングを勉強したてのひよっ子。   エンジニア目指して勉強中。

ソーベル

◉ソーベル

画像からエッジを表示する方法の1つ。

ラプラシアンのように全体の形を見つけるエッジではなく、

縦または横方向に特化したエッジを浮き出す。

形や大きさが決まった物体の縦(高さ)や横(幅)の距離などを見つける場合に

利用される。

 

◉ソーベルの方法

cv2.Sobel(画像, 出力画像の色深度, 横方向の指定, 縦方向の指定)

 ⚫︎画像:エッジを表示したい画像

 ⚫︎出力画像の色深度:画像の色数

 ⚫︎横方向のエッジ指定:横向きに濃度を見ることでエッジを抜き出す

 ⚫︎縦方向のエッジ指定:縦向きに濃度を見ることでエッジを抜き出す

 

<画像からソーベルで輪郭を抽出するPythonコード例>

import sys

import cv2

if len(sys.argv)<2:

    print('表示したいファイル名を指定してください。')

    sys.exit()

file = sys.argv[1]

try:

    img = cv2.imread( ' file ' ) 

    if img is None:

         raise ValueError('ファイルが見つかりません')

 edge = cv2.Sobel (img, -1, 0, 1)

    cv2.imshow(file, edge)

    cv2.waitKey(0)

    cv2.destroyAllWindows()

except ValueError as e:

    print(e)

except:

    import traceback

    traceback.print_exc()

 

今回は元画像と一緒にしたため −1

今回は縦向きに濃度を見ているので、0,1

 

 

      Image Gradients

    SobelX : 横  → 横に濃度をとると「縦ライン」を浮き上がらせることができる。

    SobelY : 縦  → 縦に濃度をとると「横ライン」を浮き上がらせることができる。