Roberts Edge Detector 사용 방법?


10

Roberts Edge 감지를 사용하여 이미지를 처리하려고합니다. 두 마스크를 이미지에 적용하고 정상적으로 컨볼 루션을 수행합니까? 그레이 스케일 이미지를 처리하도록 프로그래밍하려고 할 때 누군가 가이 가장자리 감지 방법을 사용하는 방법에 대한 분석을 제공 할 수 있습니까? 두 커널을 별도로 사용하여 이미지를 복잡하게 만들었지 만 이미지 찌그러짐은 올바르게 보입니다.

감사.

답변:


10

Robert 's Cross는 홀수 크기 (3x3 또는 5x5가 아닌 2x2)가 아니기 때문에 약간 까다 롭습니다. 패딩 된 3x3 컨볼 루션 마스크를 사용하여 numpy + scipy를 사용했습니다.

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 )

Robert 's Cross의 Wikipedia 항목에서. http://en.wikipedia.org/wiki/Roberts_Cross

Wikipedia에서 Robert 's Cross Entry의 이미지

내 스크립트의 출력.

내 스크립트 출력


이미지의 모든 픽셀 값을 제곱합니까?
adamjmarkham

예. "np.sqrt (np.square (horizontal) + np.square (vertical))"는 수평, 수직 방향 사이의 벡터 크기를 나타냅니다.
David Poole

@DavidPoole Robert의 엣지 디텍터 위키는 환상적이고 간단하며 요점도 훌륭합니다. 소음 대 다른 경사도에 어떻게 / 왜 민감합니까? '진정한'그래디언트 측정 값이 하나만 있습니까?
Spacey

파이썬 (Spyder 버전) 에서이 기능을 구현하려고하는데 인수와 피드 방법을 이해하는 데 어려움이 있습니까? infilename과 outfilename은 무엇입니까? 감사합니다 샘

infilename은 회색조 (1 평면) 이미지입니다. outfilename은 스크립트가 쓸 출력 파일입니다. 입 / 출력 이미지는 jpeg, png, tif 등이 될 수 있으며, 이미지 라이브러리 (현재 Pillow)는 파일 확장자에 따라 이미지 형식을 해석합니다. 예 : python3 rcross.py bicycle.jpg out.tif
David Poole
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.