728x90
특징점 검출 알고리즘은 컴퓨터 비전 및 이미지 처리에서 주요한 역할을 합니다.
SIFT (Scale-Invariant Feature Transform):
1. 크기 및 회전에 불변한 특징점 검출 및 설명 알고리즘입니다.
2. 다양한 크기와 회전에서 특징점을 검출하고,특징점 주변의 지역 특징을 기술합니다.
3. 특징점 간의 일치를 찾기 위해 특징점 기술자를 사용합니다.
4. SIFT는 매우 강력한 특징점 검출 및 일치 알고리즘으로 알려져 있습니다.

import cv2
# 동영상 파읽 열기
cap = cv2.VideoCapture("MS/CV/0612 객체탐지,추적/data/slow_traffic_small.mp4")
# sift 객체 생성
sift = cv2.SIFT_create()
while True:
# 프레임 읽기
ret, frame = cap.read()
if not ret:
break
# 그레이스케일로 변환
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# 특징점 검출
keypoints, descriptors = sift.detectAndCompute(gray, None)
# 특징점 그리기
frame = cv2.drawKeypoints(frame, keypoints, None,
flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
# 화면에 출력
cv2.imshow("frame", frame)
# 'q'를 누르면 종료
if cv2.waitKey(60) == ord('q'):
break
# 해제
cap.release()
cv2.destroyAllWindows()
개수제한 >>>
1. 이미지 대비 밝기 일정이상의 차이가 있을때만 보이게 하면서
2. 포인터를 수를 일정 수로 제한해서 포인터의 개수를 특정 객체에만 나타나게 설정

import cv2
cap = cv2.VideoCapture("MS/CV/0612 객체탐지,추적/data/slow_traffic_small.mp4")
# SIFT 객체 생성
sift = cv2.SIFT_create(contrastThreshold=0.02) # 이미지 대비의 밝기 차이
# 특지점 개수 제한 설정
max_keypoints = 100 # 100개의 특징점만 검출
while True:
# 프레임 읽기
ret, frame = cap.read()
if not ret:
break
# 그레이스케일로 변환
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# 특징점 검출
keypoints, descriptors = sift.detectAndCompute(gray, None)
# 특징점 제한
if len(keypoints) > max_keypoints:
keypoints = sorted(keypoints, key=lambda x: -
x.response)[:max_keypoints]
"""
keypoints = sorted(keypoints, key=lambda x: -x.response):
keypoints 리스트를 x.response를 기준으로 내림차순으로 정렬
이는 키포인트의 response 값을 기준으로 정렬하겠다는 의미
response 값이 큰 키포인트일수록 우선순위를 가지게 됩니다
[:max_keypoints]: 정렬된 keypoints 리스트에서 처음부터 max_keypoints까지의 키포인트만 선택
이를 통해 최대 키포인트 수를 제한합니다.
"""
# 특징점 그리기
frame = cv2.drawKeypoints(frame, keypoints, None,
flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
# 프레임 출력
cv2.imshow("frame", frame)
# 'q'를 누르면 종료
if cv2.waitKey(60) == ord('q'):
break
# 해제
cap.release()
cv2.destroyAllWindows()
728x90
'ComputerVision > [CV]' 카테고리의 다른 글
컴퓨터비전(CV) 공부 사이트 모음 (0) | 2024.03.18 |
---|---|
[CV] 영상 기본 세팅 6 (특징점기반 추적 feat, ORB + 불필요 특징점 제거2) (0) | 2023.06.12 |
[CV] 영상 기본 세팅 4 (특징점기반 추적 feat, kalman) (1) | 2023.06.12 |
[CV] 영상 기본 세팅 3 (filter이해하기 feat, kalman) (1) | 2023.06.12 |
[CV] 영상 기본 세팅 2 (객체추적) (0) | 2023.06.12 |