CV ‐ 4. Line patterns - waegari/waegari.github.io GitHub Wiki
컴퓨터 비전: 라인 패턴 및 타원 검출
1. 라인 검출 (Line Detection)
line fitting의 어려움
- 클러터(Clutter) 문제: 불필요한 에지 포인트들이 존재
- 다중 모델(Multiple models): 여러 선이 존재할 때 어느 점이 어느 선에 속하는지 결정 어려움
- 불완전한 데이터: 선의 일부만 감지되고 일부는 누락됨
- 노이즈: 측정된 에지 포인트와 방향에 노이즈 존재
Voting 기법
- 특징점들이 호환 가능한 모든 모델에 투표하는 일반적 기법
- 특징점들을 순환하며 호환 가능한 모든 모델 파라미터에 투표
- 많은 투표를 받은 모델 파라미터를 찾음
- 노이즈가 있는 특징점도 투표하지만, "좋은" 특징점들의 다수 투표와 일치하지 않음
- 일부 특징점이 관찰되지 않아도 모델이 여러 조각을 포괄할 수 있음
RANSAC (RANdom SAmple Consensus)
-
핵심 원리: 이상치(outlier)의 영향을 피하기 위해 "내부점(inlier)"만 찾아 사용
-
알고리즘 단계:
- 무작위로 seed 포인트 그룹 선택
- 선택된 그룹으로 변환(모델) 계산
- 이 변환에 대한 내부점(inlier) 찾기
- 내부점 수가 충분히 많으면, 모든 내부점으로 최소제곱 변환 재계산
- 가장 많은 내부점을 갖는 변환 유지
-
필요한 샘플 수 결정:
- w = 내부점 비율 (선에 속한 점의 비율)
- n = 가설 정의에 필요한 점 수 (선의 경우 2)
- k = 선택한 샘플 수
- 단일 샘플링에서 모든 n개 점이 올바를 확률: w^n
- 모든 k 샘플링이 실패할 확률: (1-w^n)^k
-
RANSAC 이후:
- 최소 내부점 집합에서 계산된 추정치 개선
- 모든 내부점으로 추정치 개선 (표준 최소제곱 최소화 사용)
- 내부점이 변경될 수 있으므로 피팅과 내부점/이상치 재분류를 번갈아 수행
-
장점: 다양한 모델 피팅 문제에 적합, 구현 쉬움, 실패율 계산 용이
-
단점: 이상치 비율이 높으면 비용 증가, 고율의 이상치를 처리하기 어려움
Hough Transform
-
목적: 높은 비율의 이상치를 처리할 수 있는 투표 전략
-
직선 검출 방법:
- 직선 방정식: y = mx + b (매개변수 공간 [m,b]는 무한)
- 극좌표 표현 사용: x·cos θ + y·sin θ = ρ
- 특징(에지 포인트)이 파라미터 공간에 투표
- 많은 투표를 받은 파라미터 값 찾기
-
구현 방법:
- 파라미터 공간: 이산화(discrete)
- 에지 검출 및 임계값 처리
- Accumulator array/cell 사용
- 제한된 파라미터 공간
-
원 및 타원 검출에도 적용 가능
2. 타원 검출 (Ellipse Detection)
타원 검출 알고리즘 개요
- 모든 타원 검출 알고리즘은 이미지의 에지 포인트를 사용하여 타원의 중심 찾기
- 타원 속성: 평행한 현(chord)의 중점들과 타원의 중심은 일직선상에 있음
- 평행한 현 집합은 주로 Hough Transform으로 찾음
타원 검출 파이프라인
1. 에지 검출 (Edge Detection)
- Canny나 Sobel 같은 에지 검출 방법 사용
- 에지 검출 임계값이 결과 효율성에 중요한 역할
- 높은 임계값: 노이즈 적지만 inlier 에지도 적어짐 → 낮은 타원 검출률
- 낮은 임계값: 많은 노이즈와 많은 inlier/outlier 에지 → 낮은 정밀도
2. 아크 검출 (Arc Detection)
- 아크 라벨링: 각 아크에 고유 ID 할당 → 동일한 아크에 속하는 픽셀에 동일 ID 부여
- 노이즈 에지 제거:
- 직선 에지 제거: Δy=0, Δx=0, Δy/Δx = 상수인 아크 제거
- 작은 에지 제거: 같은 ID를 가진 픽셀 수 적으면 제거
- 급격한 회전이 있는 에지 제거
3. 아크 사분면 분류 (Arc Quadrant Classification)
-
아크 그라디언트 찾기: D(arc^m) = sign(Δy)·sign(Δx)
-
아크 볼록성 찾기:
- 아크를 사각형으로 둘러싸기
- 아크 아래 영역(U)과 위 영역(O) 넓이 찾기
- C(arc^m) = { Upper Convex(+) if Area(U) > Area(O), Lower Convex(-) if Area(O) > Area(U) }
- Area(U) = Area(O)면 직선이므로 해당 아크 폐기
-
사분면 라벨 지정:
Q(arc^m) = { I if D(arc^m) = (+) and C(arc^m) = (+) II if D(arc^m) = (-) and C(arc^m) = (+) III if D(arc^m) = (+) and C(arc^m) = (-) IV if D(arc^m) = (-) and C(arc^m) = (-) }
4. 아크 선택 (Arc Selection)
- 타원을 형성할 가능성 있는 아크 선택 규칙 정의:
- 규칙 I: 아크 선택 수 결정 (최소 2개 아크 필요)
- 규칙 II: 다른 사분면 레벨을 가진 아크 선택
- 규칙 III: 사전 정보 활용 (예: 알려진 타원 크기)
- 규칙 IV: 두 방법으로 계산된 중심이 일치하거나 임계값 거리 내에 있는 아크 선택
5. 파라미터 추정 (Parameter Estimation)
-
타원 속성을 이용한 중심 추정:
- 평행 코드의 중점과 타원 중심은 동일선상에 있음
- 평행선 쌍 생성, 중점 찾기, 기울기 계산 후 중심 계산
-
아크에 타원 피팅으로 중심 추정:
- 타원 방정식 풀이: ax² + bxy + cy² + dx + ey + f = 0
- 중심 계산: x₀ = (cd-be)/(2(ae-b²/4)), y₀ = (ae-bd)/(2(ae-b²/4))
- 반축 길이와 회전 각도도 계산 가능
6. 검증 (Validation)
- 결과 타원이 선택된 아크들에 잘 맞는지 확인
- 피팅 오차 계산
- 피팅 오차가 임계값보다 크면 타원 폐기
7. 클러스터링 (Clustering)
- 다중 유효 검출 처리
- 중심 간 거리, 축, 회전 비교하여 유사 타원 클러스터링
- 최종 타원 결정 방법:
- 클러스터 내 모든 타원 평균화 또는
- 최대 피팅 점수를 가진 클러스터 내 타원 선택
타원 검출의 어려움
- 불완전한 에지
- 불완전한 에지
- 가림 현상(Occlusion)
- 부분 뷰(Partial view)
- 디지털화(Digitization)
- 속도
- 이상치 에지(Outlier edges)
핵심 암기 사항
-
RANSAC 알고리즘 단계 및 샘플 수 계산 방법
- 특히 내부점/이상치 계산법과 확률 공식 (w^n, (1-w^n)^k)
-
Hough Transform의 원리와 극좌표 표현
- x·cos θ + y·sin θ = ρ 방정식과 투표 매커니즘
-
타원 검출 파이프라인의 7단계
- 각 단계별 핵심 계산식과 방법
-
아크 사분면 분류 방법
- 그라디언트와 볼록성 계산 방식
- 사분면 라벨 지정 규칙
-
타원 중심 추정 두 가지 방법
- 타원 속성 이용 방법과 타원 피팅 방정식
-
타원 파라미터 계산 공식
- 중심 좌표, 반축 길이, 회전 각도 계산식
-
타원 검출 성능 평가 지표
- Precision, Recall, F-measure 계산법
- XOR과 OR 연산 기반 유사도 측정법