2013-04-18 2 views
3

눈 이미지와 관련된 작업을하고 있습니다. 가장자리 감지를 수행했습니다. 가장자리는 곡선과 같으며 연속적이지 않습니다. 나는 그것이 연속적이며 그 곡선에 대한 법선을 찾는다 고 가정해야합니다. MATLAB을 사용하여 법선을 어떻게 찾을 수 있습니까?이미지 가장자리의 법선을 찾는 방법

아래 이미지를 볼 수 있습니다.

Edge image

나는 상단 곡선의 법선을 찾고 싶어요. 내가 충분히 명확했으면 좋겠다.

답변

1

데이터에 곡선 맞춤 (MSE 기반 또는 일부 다른 기준)을 고려할 수 있습니다. 나는 두 번째 순서가 위의 곡선에 대해 좋을 것이라고 생각합니다. 일단 모델을 얻으면 각 점에서 접선과 법선을 계산할 수 있습니다.

+0

자세히 설명해 주실 수 있습니까? 상단 곡선 만 선택하려면 어떻게해야합니까? 나는 특정 행에 대해 두 곡선이 모두 존재하기 때문에 행의 범위를 지정하는 것을 기반으로 선택하는 것이 좋지 않다고 생각합니다. – srinath

+0

몇 가지 방법을 시도해 볼 수 있습니다. 이미지를 하위 이미지와 임계 값으로 나눌 수 있습니다. 그들 사이에 어떤 종류의 "중심"선을 발견하고이 선 위에있는 숫자를 선택할 수있는 2 차 모델을 시도해 볼 수 있습니다. – BioSP

+0

당신은 내가 그것에 원호를 맞출 수있는 방법을 말해 줄 수 있습니까? 나는 아래 곡선에 맞는 커브를 만들고 싶다. 나는 네가 말한 것처럼 그것을 고립시켰다. 커브 피팅 (원형)을하고 싶습니다 – srinath

2

비록 직관적이지는 않지만, 모든 픽셀에서의 엣지 방향은 법선의 꽤 좋은 추정치입니다. 이것은 커브 피팅을 포함하지 않기 때문에 가장 간단한 해결책이 될 것입니다.

MATLAB에서, 당신은 소벨 필터를 사용하여 픽셀 현명한 에지 방향을 찾을 수 있습니다

[BW,thresh,gv,gh] = edge(I,'sobel'); 
edgeDir = atan2(gv, gh); 

이 당신에게 라디안에서 각도로 에지 방향을 제공합니다.

+0

답변 해 주셔서 감사합니다. 위의 과정을 통해 모든 픽셀에서 edgeDir을 얻고 있습니다. 상단 곡선 (또는 하단 곡선)에서만 어떻게 할 수 있습니까? 어떻게 커브의 법선 방정식을 만들 수 있습니까? – srinath

+0

가장자리를 기준으로 선을 맞추려면 엣지 방향 theta를 계산하고 기울기를 m = tan (theta)로 계산하십시오. 가장자리 픽셀 좌표 (x, y)를 취하고 등식 y = mx + c를 풀어 상수 c를 계산합니다. 그런 다음 법선에 대한 방정식을가집니다. 위쪽 및 아래쪽 커브를 구분하려면 커브 피팅을 수행하고 커브의 초점의 y 좌표를 비교해야 할 수 있습니다. – Zaphod

+0

고마워요 !! 나는 그 생각을 가지고있다. 커브 피팅으로 나를 도울 수 있습니까? 이미지와 관련된 것을 찾지 못했습니다. 몇 가지 점에 대해서만 주어졌습니다. 링크가 있으면 게시하십시오. – srinath

0

Zaphod 권장대로 법선은 가장자리에 수직입니다. 커브 피팅을 할 필요가 없으며 역 투영을 사용하여 커브의 초점을 식별 할 수 있습니다.

커브를 따라 각 에지 점에서 시작하고 커브에서 법선 방향으로 선을 그립니다. 선이 통과하는 각 픽셀의 값을 증가시켜 선을 그립니다. 모든 가장자리에 대해 이렇게하면 더 높은 값을 가진 두 개의 픽셀을 찾은 다음 나머지를 찾고자 할 것입니다. 나머지는 각 곡선에 하나씩입니다. 그런 다음 각 곡선의 중심점을 알고 있어야합니다.

+0

커브 (위 또는 아래)를 따라 트래버스 할 수 있습니까? 코딩 관점에서 선을 그릴 수 있도록 곡선을 어떻게 돌릴 수 있습니까? – srinath

관련 문제