'''디스크립터
-ORB
oriented BRIEF
- FAST + BRIEF + Harris corner detector
- SIFT, SURF를 대체하기 위해 개발되었고 속도 빠름
- 회전 불변성
특징점 검출
- 피라미드 FAST 혹은, Harris 응답 사용하여 특징 선택
- 1차 모멘트 이용 방향 검색
디스크립터 계산
-BRIEF 사용
-->특징점에 대한 디스크립터로 특징점 검출 방법은 제공하지 않음
-->FAST처럼 어두운 픽셀 , 밝은 픽셀, 유사한 픽셀로 분류
'''
<ORB>
src = cv2.imread(path +'chessBoard.jpg')
gray = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)
gray = cv2.GaussianBlur(gray,(5,5),0.0)
orbF = cv2.ORB_create()
orbF1 = cv2.ORB_create(scoreType=1)
kp = orbF.detect(gray)
kp1 = orbF1.detect(gray)
dst = cv2.drawKeypoints(gray,kp,None,color=(0,0,255))
dst1 = cv2.drawKeypoints(gray, kp1, None, color=(0,0,255))
print('len(kp)=',len(kp))
print('len(kp1)=',len(kp1))
cv2.imshow('gftt', dst)
cv2.imshow('gftt1',dst1)
cv2.waitKey()
'''brisk'''
src = cv2.imread(path +'chessBoard.jpg')
gray = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)
gray1 = cv2.GaussianBlur(gray,(5,5),0.0)
briskF = cv2.ORB_create()
kp = briskF.detect(gray)
kp1 = briskF.detect(gray1)
dst = cv2.drawKeypoints(gray,kp,None,color=(0,0,255))
dst1 = cv2.drawKeypoints(gray, kp1, None, color=(0,0,255))
print('len(kp)=',len(kp))
print('len(kp1)=',len(kp1))
cv2.imshow('brisk', dst)
cv2.imshow('brisk1',dst1)
cv2.waitKey()
'''디스크립터
-KAZE, AKAZE
-> 기존의 스케일 공간 특징점 검출 방법의 한계
-->가우시안 피라미드로 인한 특징점 약화
-->비선형 확산 필터링 사용
-물체 경계 유지
-특징점 검출 정확도 높임
-속도는 SIFT와 비슷하고 SURF보다 느림
-AKAZE는 FED로 비선형 공간에서 피라미드 구축 시 속도 개선
-디스크립터 : 64비트 정규화 벡터
--SIFT
harris corner detection의 한계
-코너는 회전 불변의 특징점
-스케일 변환에 대응을 못함
--> 크기가 다른 두 객체 영상에서 코너 점을 이용하여 서로 같은 위치를 찾는 것은 한계가 있음
크기 불변 특징 변환 등장
DOG
- 인접한 가우시안 블러링의 차영상 이용
- SIFT는 DoG영상을 고려한 지역 극값 위치 특징점 사용
- 엣지 성분이 강하거나 명암비가 낮은 지점은 특징점에서 제외
'''
src = cv2.imread(path +'chessBoard.jpg')
gray = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)
gray1 = cv2.GaussianBlur(gray,(5,5),0.0)
siftF = cv2.ORB_create()
kp = briskF.detect(gray)
#kp1 = briskF.detect(gray1)
dst = cv2.drawKeypoints(gray,kp,None,color=(0,0,255))
#dst1 = cv2.drawKeypoints(gray, kp1, None, color=(0,0,255))
print('len(kp)=',len(kp))
#print('len(kp1)=',len(kp1))
cv2.imshow('sift', dst)
#cv2.imshow('brisk1',dst1)
cv2.waitKey()
'OpenCV' 카테고리의 다른 글
OpenCV- 얼굴 라이브 인식 (0) | 2022.11.22 |
---|---|
OpenCV - OBJECT DETECTION (0) | 2022.11.21 |
OpenCV - CircleGrid (0) | 2022.11.15 |
OpenCV - 체스보드 패턴 코너점 검출 (0) | 2022.11.15 |
OpenCV - 해리스 코너 ,패스트 코너 검출 (0) | 2022.11.15 |