본문 바로가기
728x90

OpenCV/OpenCV-Chapter31

CH09 OpenCV-Python SIFT, KAZE, AKAZE, ORB.. Harris, GFTT, FAST 코너의 문제점 • 이동, 회전 변환에 강인 • 크기 변환에 취약 작은 사각형 가지고 Corner를 찾을려하니 그림2처럼 Edge처럼 보임 그래서 사각형을 키우거나 Image를 resize하는 다양항 크기의 형태도 고려해야함 • 특징점(feature point) ≈ 키포인트(keypoint) ≈ 관심점(interest point) = 다양한 크기의 형태를 고려한 점들 • 기술자(descriptor) ≈ 특징 벡터(feature vector) = 특징점 주변에 부분영상을 잘라서 그 특징점에 대한 특징을 기술하는 방법 크기 불변 특징점 검출 방법 SIFT, KAZE, AKAZE, ORB 등 다양한 특징점 검출 방법에서 스케일 스페이스(scale-space), 이미지 피라미드(.. 2021. 12. 25.
CH09 OpenCV-Python 특징점 검출(Corner) 코너(Corner)의 특징 • 평탄한 영역(flat) & 에지(edge) 영역은 고유한 위치를 찾기 어려움 • 코너(corner)는 변별력이 높은 편이며, 영상의 이동, 회전 변환에 강인함 == Template Matching 보완 다양한 코너 검출 방법 해리스 (Harris) • 영상 내부 작은 영역이 모든 방향에 대해 변화가 큰 경우 코너로 규정 • 코너 응답 함수 R을 반환 => R(x,y)가 충분히 크면 코너로 구분 • cv2.cornerHarris() 함수 사용 = 실수형태의 행렬을 반환 • corner가 중첩 or 금방에 존재할 때 어려움==> goodFeaturesToTrack() 추적하기 좋은 특징 (Good Features to Track) • 해리스 코너 검출 방법을 기반으로 향상된 방.. 2021. 12. 25.
CH08 OpenCV-Python HOG 보행자 검출 HOG(Histogram of Oriented Gradients)란? • 영상의 지역적 그래디언트 방향 정보를 특징 벡터로 사용 • 2005년 CVPR 학회에서 보행자 검출 방법으로 소개되어 널리 사용되기 시작함 • 이후 다양한 객체 인식에서 활용됨 HOG는 edge 정보를 이용하고, Haar, LBP는 영역과 영역의 밝기차를 이용 HOG 알고리즘 1. 부분영상 추출 2. 크기 정규화 3. Gradient 계산(방향과 크기를 알 수 있다) 4. 8*8 크기의 셀(cell)분할(한 cell당) 5. 방향 히스토그램의 bin 개수 = 9 ==> 360도를 9개 구간으로 나눴다 [블록 히스토그램 구하기] • 8x8 셀 4개를 하나의 블록을 지정 → 즉, 블록 하나의 크기는16x16 → 8픽셀 단위로 이동: s.. 2021. 12. 24.
CH08 OpenCV-Python 캐스케이드(Cascade) Viola - Jones 얼굴 검출기 Positive 영상(얼굴 영상)과 negative 영상(얼굴 아닌 영상)을 훈련하여 빠르고 정확하게 얼굴 영역을 검출 • 기존 방법과의 차별점 ▪ 유사 하르(Haar-like) 특징을 사용 ▪ AdaBoost에 기반한 강한 분류 성능 == 간단한 형태의 분류기를 여러개 만들어서 강력한 분류기를 만드는 것 ▪ 캐스케이드(cascade) 방식을 통한 빠른 동작 속도 • 기존 얼굴 검출 방법보다 약 15배 빠르게 동작 유사 하르 특징(Haar-like features) • 사각형 형태의 필터 집합을 사용 • 흰색 사각형 영역 픽셀 값의 합에서 검정색 사각형 영역 픽셀 값을 뺀 결과 값을 추출 • 24x24 부분 영상에서 얼굴 판별에 유용한 유사 하르 특징을 선별 캐스케이.. 2021. 12. 24.
CH08 OpenCV-Python 템플릿 매칭(Template matching) 템플릿 매칭(Template matching)이란? - Classification • 입력 영상에서 (작은 크기의) 템플릿 영상과 일치하는 부분을 찾는 기법 • 템플릿: 찾을 대상이 되는 작은 영상. 패치(patch) 기본적으로 같은 위치의 픽셀끼리 곱하고 다 더해서 유사도를 판단 ==> 회전, 크기변환이 클 때는 찾기 어려움 ==> Key point활용(= Local feature matching) 유사도 => 최댓값(비슷한 부분이 밝게) 비유사도 => 최솟값(비슷한 부분이 어둡게) ==> 거리를 나타낸다 OpenCV filter VS Template filter OpenCV filtering은 영상 이미지의 가상의 픽셀(padding)이 있다는 가정하에 filter를 돌린다 == 동일한 크기를 얻을 .. 2021. 12. 24.
CH08 OpenCV-Python Moment 기반 객체 검출 모멘트(Moments)란? • 영상의 형태를 표현하는 일련의 실수값 • 특정 함수 집합과의 상관 관계(correlation) 형태로 계산 객체 위치가 바뀌어도 동일한 값의 특징 벡터를 추출 - Geometric moments 성능이 안 좋아 ==> Legendre moments, Zernike moments, ART(Angular Radial Transform)이 성능이 좋다 Hu의 7개 불변 모멘트(Hu's seven invariant moments) • 3차 이하의 정규화된 중심 모멘트를 조합하여 만든 7개의 모멘트 값 • 영상의 크기, 회전, 이동, 대칭 변환(Affine Transform)에 불변 객체와 객체 비교할 때(모양) 원하는 객체 검출 가능 # obj = spade만 골라내는 것이 목적 .. 2021. 12. 24.
CH08 OpenCV-Python 영상 분할 그랩컷(GrabCut) 그랩컷(GrabCut)이란? • 그래프 컷(graph cut) 기반 영역 분할 알고리즘 • 영상의 픽셀을 그래프 정점으로 간주하고, 픽셀들을 두 개의 그룹으로 나누는 최적의 컷(Max Flow Minimum Cut)을 찾는 방식 그랩컷 영상 분할 동작 방식 • 사각형 지정 자동 분할 • 사용자가 지정한 전경/배경 정보를 활용하여 영상 분할 영상자체를 두 개의 그룹으로 나누고 픽셀과 픽셀 사이의 관계를 어떻게 정의를 해서 최적의 컷을 만들어 낼 것이냐 전경은 시야에서 중요한 대상 배경은 그 나머지 부분으로 중요성이 덜한 대상 # 입력 영상 불러오기 src = cv2.imread('ch08\\images\\nemo.jpg') if src is None: print('Image load failed!') sy.. 2021. 12. 24.
CH07 OpenCV-Python 객체 단위 분석(Labeling) ▪ 객체 단위 분석 • (흰색) 객체를 분할하여 특징을 분석 • 객체 위치 및 크기 정보, ROI 추출, 모양 분석 등 ▪ 레이블링(Connected Component Labeling) • 서로 연결되어 있는 객체 픽셀에 고유한 번호를 지정 (레이블맵) • 영역 기반 모양 분석 • 레이블맵, 바운딩 박스, 픽셀 개수, 무게 중심 좌표를 반환 ▪ 외곽선 검출(Contour Tracing) • 각 객체의 외곽선 좌표를 모두 검출 • 외곽선 기반 모양 분석 • 다양한 외곽선 처리 함수에서 활용 가능 (근사화, 컨벡스헐 등) ▪ 레이블링(Connected Component Labeling) cv2.connectedComponents(image, labels=None, connectivity=None, ltype.. 2021. 12. 24.
728x90