본문 바로가기
728x90

OpenCV41

CH09 OpenCV-Python 스티칭 Stitching(PANORAMA) 이미지 스티칭(Image Stitching)이란? • 동일 장면의 사진을 자연스럽게(seamless) 붙여서 한 장의 사진으로 만드는 기술 • 사진 이어 붙이기, 파노라마 영상(Panorama image) - 기본적으로 SULF or ORB를 사용 But 단순히 이어붙이기만하면 밝기가 급격하게 바뀌는 부자연스러운 부분이 생긴다 ==> 밝기를 smooth하게 변화시키는 blending이 내부에서 적용됨 images = ['img1.jpg', 'img2.jpg', 'img3.jpg'] imgs= [] for name in images: img = cv2.imread(f'ch09\\images\\{name}') if img is None: print('Images load failed') sys.exit() .. 2021. 12. 25.
CH09 OpenCV-Python 호모그래피와 영상 매칭 호모그래피(Homography)란? • 두 평면 사이의 투시 변환(Perspective transform) • 8DOF : 최소 4개의 대응점 좌표가 필요 왜 호모그래피? Perspective Transform(투시 변환): 4개의 쌍(8 DOF)만 있으면 되는데 내가 줄수 있는 수식은 8개(DOF) 보다 더 많을 때 ==> 연결관계가 4개 이상 나오고 그 중에서 잘못된 매칭이 있을 수 있다라는 가정 ==> 이런 조건에서 Perspective 계산 어떻게? == 호모그래피 사용 src1 = cv2.imread('ch09\\images\\box.png', cv2.IMREAD_GRAYSCALE) src2 = cv2.imread('ch09\\images\\box_in_scene.png', cv2.IMREAD_.. 2021. 12. 25.
CH09 OpenCV-Python 특징점 매칭(feature point matching) 특징점 매칭 (feature point matching) • 두 영상에서 추출한 특징점 기술자를 비교하여 서로 유사한 기술자를 찾는 작업 특징 벡터 유사도 측정 방법 • 실수 특징 벡터: L2 노름(L2 norm) 사용 • 이진 특징 벡터: 해밍 거리(hamming distance) 사용 OpenCV 특징점 매칭 클래스 • BF: Brute-force (전수 조사) == 각 특징점 하나씩 다 매칭해보면서 가장 distance가 작은 것을 골라낸다 • Flann: Fast Library for Approximate Nearest Neighbor (K-D Tree 사용) == 너무 특징점이 많을 때 사용 ==> 완전히 최소값 매칭이 어려워(속도는 빠름) but 특징점이 몇천개 정도면 별차이 없음 ==> 영상.. 2021. 12. 25.
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.
특징 검출 해당 특징점이 존재하는 위치를 알려주거나 해당 특징점을 부각 픽셀의 색상 강도, 연속성, 변화량, 의존성, 유사성, 임계점 등을 사용하여 특징을 파악 특징 검출을 사용하여 다양한 패턴의 객체를 검출할 수 있다. 가장자리(Edge) 가장자리(Edge) 검출은 이미지 내의 가장자리 검출을 위한 알고리즘 픽셀의 그라디언트의 상위 임계값과 하위 임계값을 사용하여 가장자리를 검출 픽셀의 연속성, 연결성 등이 유효해야합니다. 가장자리의 일부로 간주되지 않는 픽셀은 제거되어 가장자리만 남게됩니다. 윤곽(Contours) 윤곽(Contours) 검출은 이미지 내의 윤곽 검출을 위한 알고리즘 동일한 색상이나 비슷한 강도를 가진 연속한 픽셀을 묶습니다. 윤곽 검출을 통하여 중심점, 면적, 경계선, 블록 껍질(findCon.. 2021. 12. 24.
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.