본문 바로가기

메모장171

CH10 OpenCV-Python 객체 추적(배경차분) 배경차분(Background Subtraction: BS) == 정적배경(Static Background) 등록된 배경 모델과 현재 입력 프레임과의 차영상을 이용하여 전경 객체를 검출 움직이는 전경 객체 검출을 위한 기본적인 방법 Back Image(정적배경)을 등록하고 새로 들어온 Frame과 차영상을 통해서 새로운 객체 검출 Threshold를 사용해서 이진화 => 흰색 객체를 레이블링 기법(connect..stats)을 사용해서 크기와 위치를 판단 그리고 그 위치에서 boundingRect그려주면 간단한 침입자 감지 프로그램 만들 수 있다. But 이와같은 방법은 좋지 않다 why? 영상에서 새로운 객체를 계속 따라가지만 멈추었을 때도 계속 추적 1. 조명의 변화에 민감 2. 차가 새로 들어오고 멈.. 2021. 12. 25.
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.