2012-02-04 3 views
8

엣지 감지 문제는 (Java : Count the number of objects in an Image, 언어와 독립적 인 : Image edge detection) 게시되었지만 파이썬으로 구현하는 방법을 알고 싶습니다.파이썬 엣지 감지 및 곡률 계산

일부 단순한 모양 (약간의 노이즈가있는 이진 모양)에서 가장자리 주변의 가장자리 감지 및 곡률 계산을 수행하고 있습니다. OpenCV에 대한 래퍼가 있지만 어느 것이 더 낫다는 것을 알고 있습니다 : pyopencv, pycv, pycvf?

기본적으로이 두 가지 작업 만하고 있기 때문에 라이브러리를 사용하는 것보다 직접 구현하는 것이 더 빠른지 확실하지 않습니다.

+1

[웹 사이트] (http://opencv.willowgarage.com/wiki/)에서 OpenCV를 다운로드 할 것을 권장합니다. 지침을 사용하여 컴파일하면 자동으로 파이썬 래퍼 ('import cv2')를 얻습니다. –

+2

또한 'scipy.ndimage'를보십시오. http://docs.scipy.org/doc/scipy/reference/ndimage.html –

답변

11

우리는 당신이 유용 할 수있는 적극적으로 개발 scikit-image에 분할 및 에지 검출 알고리즘이 있습니다

Scikit Images Examples

+0

가장자리 감지 기능이 멋집니다. 곡률 계산을 구현 하시겠습니까? – clwen

+0

@clwen 곡률은 어떻게 정의합니까? 당신이 저에게 종이 나 예제를 주면, 우리는 그것을 한방에 줄 수 있습니다. –

+0

저는 영원히 파이썬에서 canny edge detection을 찾고있었습니다! 사랑해... – tylerthemiler

3

scikit 이미지와 파이썬에서 윤곽을 찾을 수있는 아주 간단한 방법이있다. 이 코드는 실제로 다음과 같이 몇 줄의 코드입니다.

from skimage import measure 
    contours = measure.find_contours(gimg, 0.8) 

등고선의 벡터 표현을 반환합니다. 각 행에 대한 별도의 배열입니다. 근사치를 계산하여 라인의 포인트 수를 줄이는 것도 쉽습니다. 다음은 소스 코드에 대한 좀 더 긴 설명입니다. image vectorization with python

3

파이썬으로 scipy로 가장자리를 쉽게 감지 할 수 있습니다.

from scipy import ndimage 
edge_horizont = ndimage.sobel(greyscale, 0) 
edge_vertical = ndimage.sobel(greyscale, 1) 
magnitude = np.hypot(edge_horizont, edge_vertical) 

그리고 다음은 가장자리 이미지를 검출 한 원본 이미지의 예입니다. enter image description here

scikit-image에는 가장자리 감지를 수행하는 방법이 special page with explanations입니다.