2012-03-21 3 views
0

저는 Rake라는 방법을 사용하여 LabView에서 분석하는 데 사용 된 이미지를 가지고 있습니다. 기본적으로,이 방법은 이미지의 평행선을 따라 모든 중요한 가장자리를 찾습니다. http://zone.ni.com/reference/en-XX/help/370281P-01/imaqvision/imaq_rake_3/ (링크 하단의 마지막 이미지에서 볼 수 있습니다.) 이 기능의 장점은 특정 가장자리 강도보다 큰 모든 가장자리 점을 제공하고 각 가장자리는 하나의 가장자리 지점 만 생성한다는 것입니다 (가장자리 선 두께는 1 픽셀 임)OpenCV는 라인을 따라 모든 중요 에지를 찾습니다.

비슷한 것을하기 위해 OpenCV를 사용하십시오. 이 방법으로 상상할 수있는 방법은 입니다. 선택한 필터로 Canny 연산자를 해체합니다. - 두 개의 임계 값이있는 가장자리 값을 히스테리 시스로 좁히기 - 비선호 억제가 뒤 따르기 - 해당 라인의 픽셀을 읽고 모두 표시 픽셀이 내 임계 값보다 크다.

문제는 canny가 번들로 제공되며 자체적으로 nonmaxima 억제 기능을 찾을 수 없다는 것입니다. 내가 설명한 작업과 비슷한 작업을 수행하는 방법을 알고있는 사람이 있습니까?

감사

답변

0

아니 나는 완전히이 질문을 이해한다면 모르겠지만, 번들로 제공되지 않는 비 최대 억제 부분에 대한 : 이미지를 팽창 : 2D 비 최대 억제를위한

한 가지 간단한 방법은 이것이다. OpenCV의 Dilation은 각 픽셀의 값을 지역 근처의 max()로 설정합니다. 몇 번 반복하거나 더 큰 커널을 사용하여 원하는 반경을 얻으십시오.

그런 다음 확장 된 이미지를 원본과 비교하고 다른 값을 갖는 모든 픽셀을 0으로 설정하십시오.

나머지 픽셀은 로컬 최대 값입니다.

# some code I once used in OpenCV/Python 
# given an image, sets all pixels to zero, unless they are local maxima 
def supressNonMaxima(img): 
    localMax = cvCreateImage (cvGetSize(img), IPL_DEPTH_16U, 1) 
    cvDilate(img, localMax, null, 3) # max() with radius of 3 

    mask = cvCreateImage(cvGetSize(img), 8, 1) 
    cvCmp(img, localMax, mask, CV_CMP_LT) 

    cvSet(img,0,mask) 
관련 문제