728x90
반응형
지역 특징 : 영상의 특징 중에서 에지, 직선 성분, 코너 처럼 영상 전체가 아닌 일부 영역에서 추출할 수 있는 특징
코너 검출 방법
- 해리스 코너 검출 방법
- R이 0보다 충분히 큰 양수 : 코너 점, R이 0 가까운 실수 평탄, R < 0 : 에지
- 하나의 코너 위치에 사용자 지정 임계값보다 큰 픽셀이 여러개 발생할 수 있기 때문 → 비최대 억제 수행
- FAST 코너 검출 방법
- 해리스는 연산 복잡해서 연산 속도가 느림
- 단순한 픽셀 값 비교를 통해 코너 검출
- 영상의 모든 픽셀에서 픽셀 둘러싸고 있는 16개의 주변 픽셀과 밝기 비교
- 16개 중 기준 좌표보다 충분히 밝거나 어두운 픽셀이 9개 이상 연속으로 존재 → 코너
- 코너 점 주변 픽셀도 코너로 검출하는 경우 많음
- 비최대 억제 작업 수행(코너 점수 가장 큰 코너)
크기 불변 특징점 검출과 기술
- 코너는 회전 불변 특징점
- 영상 크기가 변경되면 코너가 검출 되지 않을 수 있음(에지 등으로 검출됨)
- 크기가 다른 영상에서도 지속적으로 검출될 수는 없을까? → SIFT 알고리즘
- SIFT 알고리즘
- 입력 영상에서 스케일 스페이스 구성
- 스케일 스페이스 : 다양한 가우시안 블러링을 적용해 구성한 영상 집합
- 옥타브
- 입력 영상에서 스케일 스페이스 구성
- 이렇게 인접한 가우시안 블러링 영상끼리의 차영상(DoG : Difference of Gaussian)을 사용
- DoG 영상에서 인접한 DoG 영상을 고려한 지역 극값 위치 특징점으로 사용
- 에지 성분이 강하거나 명암비 낮은 지점은 특징점에서 제외
- 특징점 기술자 : 특징점 주변 영상 특성을 표현해줌
- SIFT이후 많이 또 생김
- SURF : SIFT에서 DoG영상을 단순한 이진 패턴으로 근사화 → 속도 향상
- KAZE : 가우시안 대신 비등방성 확산 필터 이용 → 객체 윤곽 잘 보전함
- 위 3개는 스케일 스페이스를 구성하는 등 복잡한 연산 수행함 → ORB
- ORB
- 기본적으로 FAST 코너 검출 방법 이용
- FAST는 영상 크기 변화에 취약하므로 ORB는 점진적으로 축소한 피라미드 영상 구축
- BRIEF 알고리즘으로 이진 기술자(특징점 주변 정보 이진수로 표현) 계산
- 이진 기술자 거리 계산은 주로 해밍 거리 사용
- 순사하게 특징점 기술자만을 생성하는 알고리즘 → 특징점 검출 지원 x
- 특징점 기술에 SIFT 512바이트, SURF 256바이트 크기 필요, but ORB는 32바이트
- OpenCV에서는 Feature2D 클래스를 상속해 구현
- detect() : 영상에서 키포인트 검출
- compute() : 검출된 키포인트 표현하는 기술자 생성
- detectAndCompute()로 동시에 가능
- SIFT, SURF, ORB 구현되어있음
- BriefDescriptorExtractor 클래스로 BRIEF 구현
특징점 매칭
- 두 영상에서 추출한 특징점 기술자를 비교 → 서로 비슷한 특징점 찾음
- DMatch 클래스 사용
- Dmatch에서 distance는 두 기술자의 거리를 나타냄
- 두 특징점이 유사 → distance 값 0에 가까움
- 서로 다름 → distance 값 큼
- match() : 가장 비슷한 기술자 쌍 하나
- knnMatch() : 비슷한 기술자 쌍 k개
- radiusMatch() : 지정한 거리 반경 안에 있는 기술자 쌍을 모두 찾아 반환
- BFMatcher : 전수 조사 매칭 수행, 특징점 늘어나면 연산량 크게 늘어남
- FlannBasedMatcher : Flann 라이브러리(최근방이웃 알고리즘 구현)이용해 빠르게 매칭 수행, 가장 작은 특징점 못찾을 수 있지만 빠름
호모그래피와 영상 매칭
- 연산관점에서 투시변환과 같음 → 4개 대응 점 좌표 정보로 구할 수 있음
- 특징점 매칭 정보로부터 구할땐 대응 점이 4개보다 훨씬 많음 → 투시 변환 시 에러가 최소가 되는 형태의 호모그래피 행렬을 구해야함
- findHomography() 사용
영상 이어 붙이기
- 여러 장의 영상을 서로 이어 붙여 하나의 큰 영상 만듦(파노라마 영상)
- 조건
- 서로 일정 비율 이상으로 겹치는 영역이 존재해야함
- 서로 같은 위치를 분간할 수 있도록 유효한 특징점이 많이 있어아함
- 과정
- 특징점 검출 → 서로 매칭 → 호모그래피 구하기 → 호모그래피 기반으로 영상 변형 → 이어 붙이기 → 블렌딩 처리
- 블렌딩 : 붙인 결과가 자연스럽게 보이도록 처리
- Stitcher() 로 구현 가능
- 특징점 검출 → 서로 매칭 → 호모그래피 구하기 → 호모그래피 기반으로 영상 변형 → 이어 붙이기 → 블렌딩 처리
728x90
반응형
'CS > Computer Vision' 카테고리의 다른 글
[OpenCV] 15장 머신 러닝 (0) | 2022.12.30 |
---|---|
[OpenCV] 13장 객체 검출 (0) | 2022.12.30 |
[OpenCV] 12장 레이블링과 외곽선 검출 (0) | 2022.12.30 |
[OpenCV] 11장 이진화와 모폴로지 (0) | 2022.12.30 |
[OpenCV] 10장 컬러 영상 처리 (0) | 2022.12.30 |