Roberts Edge Detectorの使用方法は?


10

Robertsエッジ検出を使用して画像を処理しようとしています。両方のマスクを画像に適用し、通常どおり畳み込みを実行しますか?グレースケール画像を処理するようにプログラムしようとしているので、誰かがこのエッジ検出方法の使用方法の内訳を教えてくれませんか。両方のカーネルを個別に使用して画像を畳み込みましたが、画像のへこみは正しく見えます。

ありがとう。

回答:


10

Robert's Crossは奇妙なサイズではないため、少しトリッキーです(3x3または5x5ではなく2x2)。私はnumpy + scipyを使用して、パディングされた3x3たたみ込みマスクを使用してそれを実行しました。

import sys
import numpy as np
from scipy import ndimage
import Image

roberts_cross_v = np.array( [[ 0, 0, 0 ],
                             [ 0, 1, 0 ],
                             [ 0, 0,-1 ]] )

roberts_cross_h = np.array( [[ 0, 0, 0 ],
                             [ 0, 0, 1 ],
                             [ 0,-1, 0 ]] )
def load_image( infilename ) :
    img = Image.open( infilename )
    img.load() 
    # note signed integer
    return np.asarray( img, dtype="int32" )

def save_image( data, outfilename ) :
    img = Image.fromarray( np.asarray( np.clip(data,0,255), dtype="uint8"), "L" )
    img.save( outfilename )

def roberts_cross( infilename, outfilename ) :
    image = load_image( infilename )

    vertical = ndimage.convolve( image, roberts_cross_v )
    horizontal = ndimage.convolve( image, roberts_cross_h )

    output_image = np.sqrt( np.square(horizontal) + np.square(vertical))

    save_image( output_image, outfilename )

infilename = sys.argv[1]
outfilename = sys.argv[2]
roberts_cross( infilename, outfilename )

ロバートの十字架のウィキペディアのエントリから。http://en.wikipedia.org/wiki/Roberts_Cross

ウィキペディアのロバートのクロスエントリーからの画像

私のスクリプトの出力。

私のスクリプト出力


画像のすべてのピクセル値を二乗しますか?
adamjmarkham 2011

はい。「np.sqrt(np.square(horizo​​ntal)+ np.square(vertical))」は、水平方向と垂直方向の間のベクトルの大きさを示します。
デビッドプール

@DavidPoole Robertのエッジ検出wikiは素晴らしいです-単純で、要点があり、実例です。どのように/なぜそれはノイズ対他の勾配測定に敏感ですか?「真の」勾配測定値は1つだけではありませんか?
Spacey

この関数をpython(Spyderバージョン)で実装しようとしていますが、必要な引数とそれらをフィードする方法を理解できません。infilenameおよびoutfilenameとは何ですか?おかげでサム

infilenameはグレースケール(1平面)画像です。outfilenameは、スクリプトが書き込む出力ファイルです。入力/出力画像はjpeg、png、tifなどにすることができます。画像ライブラリ(現在は枕)は、ファイル拡張子に基づいて画像形式を解釈します。例:python3 rcross.py bike.jpg out.tif
デビッドプール
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.