반응형

Python/파이썬 OpenCV 공부 88

[파이썬 OpenCV] 영상의 객체 추적 - OpenCV 트래커 - cv2.TrackerXXX_create, cv2.Tracker.init

OpenCV 트래커(Tracker) 옵티컬플로우, 배경 차분, 평균 이동 등 전에 공부했었던 방법들은 이전 프레임에 있는 객체가 현재 프레임에 어떻게 이동했는지에 대한 정보를 추출하는 방법이었습니다. OpenCV에서 좀 더 고차원적인 알고리즘 집합체를 클래스 형태로 구현해서 제공하고 있는 것들이 있습니다. extra 모듈에 있으며 추가 모듈이 포함되어 있는 OpenCV를 설치해야 합니다. Tracker 클래스 사용 방법 (1) 클래스 객체 생성 cv2.TrackerXXX_create() -> XXX = Boosting, CSRT, GOTURN, KCF, MedianFlow, MIL, MOSSE, TLD KCF : 빠르게 작동 MOSSE : 빠르게 작동 CSRT : 연산은 느리지만 강인하게 추적 GOTUR..

[파이썬 OpenCV] 영상의 모션 벡터 - 밀집 옵티컬플로우 - cv2.calcOpticalFlowFarneback

밀집 옵티컬플로우 - 밀집 옵티컬 플로우는 모든 픽셀에 대해 옵티컬플로우를 계산하는 방법입니다. 주로 파네백 알고리즘(Farneback's algorithm)을 이용하여 구현하게 됩니다. 옵티컬 플로우에 대한 설명은 여기 포스팅을 참조할 수 있습니다. [파이썬 OpenCV] 영상의 모션 벡터 - 루카스 카나데 옵티컬 플로우 - cv2.calcOpticalFlowPyrLK 옵티컬플로우 - Optical flow 옵티컬플로우는 연속하는 두 프레임(영상)에서 카메라 또는 객체의 움직임에 의해 나타나는 객체의 이동 정보 패턴을 의미합니다. 픽셀이 어떻게 움직였는지를 화 deep-learning-study.tistory.com 밀집 옵티컬 플로우 계산 함수 - cv2.calcOpticalFlowFarneback ..

[파이썬 OpenCV] 영상의 모션 벡터 - 루카스 카나데 옵티컬 플로우 - cv2.calcOpticalFlowPyrLK

옵티컬플로우 - Optical flow 옵티컬플로우는 연속하는 두 프레임(영상)에서 카메라 또는 객체의 움직임에 의해 나타나는 객체의 이동 정보 패턴을 의미합니다. 픽셀이 어떻게 움직였는지를 화살표로 나타내고 있습니다. 옵티컬플로우 활용 분야 손떨림을 보정해서 동영상을 저장하는 용도, 동영상을 압축할 때도 움직임 정보를 잘 활용하면 적은 bit를 활용해서 화질이 좋은 동영상으로 압축하는 데에 이용할 수 있습니다. OpenCV 옵티컬플로우 계산 함수 (1) 루카스-카나데 알고리즘(Locas-Kanade algorithm) 루카스-카나데 알고리즘은 지정한 점들에 대해 옵티컬플로우를 계산하는 방법입니다. (주로) Sparse points에 대한 이동 벡터를 계산합니다. 특정 픽셀에서 옵티컬플로우 벡터를 계산합..

[파이썬 OpenCV] 영상의 객체 추적 - 캠시프트(CamShift) 방법 - cv2.CamShift

캠시프트 - CamShift 캠시프트는 민시프트의 단점을 보완해서 만든 추적 방법입니다. 추적하는 객체의 크기가 변하더라도 검색 윈도우의 크기가 고정되어 있는 평균 이동 알고리즘의 단점을 보완했습니다. 민시프트(Mean Shift)에 대한 내용은 여기에서 확인할 수 있습니다. [파이썬 OpenCV] 영상의 객체 추적 - 평균 이동(Mean Shift) 방법 - cv2.meanShift, cv2.calcBackProject 추적 - Tracking 평균 이동 알고리즘을 공부하기 전에 Detection(검출), Recognition(인식), Tracking(추적)에 대해 알아보겠습니다. Detection(검출) : 영상에서 찾고자 하는 대상의 위치와 크기를 알아내는.. deep-learning-study.t..

[파이썬 OpenCV] 영상의 객체 추적 - 평균 이동(Mean Shift) 방법 - cv2.meanShift, cv2.calcBackProject

추적 - Tracking 평균 이동 알고리즘을 공부하기 전에 Detection(검출), Recognition(인식), Tracking(추적)에 대해 알아보겠습니다. Detection(검출) : 영상에서 찾고자 하는 대상의 위치와 크기를 알아내는 작업 Recognition(인식) : 주어진 영상이 무엇인지 판별하는 작업 - classification, identification Tracking(추적) : 동영상에서 특정 대상의 위치 변화를 알아내는 작법 - Mean Shift, CamShift, Trackers in OpenCV 이번 포스팅에서 공부할 내용은 추적중 한 가지 방법인 Mean Shift(평균 이동) 방법에 대해 공부해보겠습니다. 1. 평균 이동 알고리즘 - Mean Shift 평균 이동 알고..

[파이썬 OpenCV] 영상의 객체 추적 - 배경 차분 - MOG 배경 모델 - cv2.BackgroundSubtractor

영상의 객체 추적 - 배경 차분 - MOG 배경 모델 MOG 배경 모델을 이용해서 배경 차분을 하는 방법을 알아보겠습니다. 1. MOG란? Mixture of Gaussian, GMM(Gaussian Mixture Model)을 의미합니다. 각 픽셀에 대해 MOG 확률 모델을 설정하여 배경과 전경을 구분하는 방법입니다. 영상의 각각의 픽셀 값을 배경 영상으로 정의합니다. 미리 정의해둔 배경 영상의 각각의 픽셀마다 가우시안 모델을 정의합니다. 픽셀 값이 정해진된 것이 아니라 픽셀 값이 가우시안 형태를 따르는 모델로 정의하는 것입니다. 배경 차분뿐만 아니라 데이터 사이언스에서 전반적으로 사용되는 데이터 분석 기법입니다. 2. 다양한 배경 모델 구성 방법 (1) Static scene static scene은..

[파이썬 OpenCV] 영상의 객체 추적 - 배경 차분 - 이동 평균 배경 - cv2.accumulateWeighted

영상의 객체 추적 - 배경 차분 - 이동 평균 배경 이전 포스팅에서 공부하였던 정적 배경 모델 사용시 문제점은 새로 나타난 객체가 고정되었을 때 이것을 지속적으로 객체로 인식한다는 것입니다. [파이썬 OpenCV] 영상의 객체 추적 - 정적 배경 차분 방법 - cv2.absdiff 함수 영상의 객체 추적 - 정적 배경 차분 방법 배경 차분(Background Subtraction : BS)은 등록된 배경 모델과 현재 입력 프레임과의 차영상을 이용하여 전경 객체를 검출하는 방법입니다. 동영상에서 움직 deep-learning-study.tistory.com 고정된 객체가 일정 시간 지나면 배경으로 등록되는 방법에 대해 알아보겠습니다. 1. 이동 평균 배경 - Moving average 이동 평균 배경 방법..

[파이썬 OpenCV] 영상의 객체 추적 - 정적 배경 차분 방법 - cv2.absdiff 함수

영상의 객체 추적 - 정적 배경 차분 방법 배경 차분(Background Subtraction : BS)은 등록된 배경 모델과 현재 입력 프레임과의 차영상을 이용하여 전경 객체를 검출하는 방법입니다. 동영상에서 움직이는 전경 객체 검출을 위한 기본적인 방법입니다. 배경 영상을 model이라는 용어를 써서 배경 영상을 등록시켜두고 배경 영상과 다른 부븐을 찾아서 그 부분이 새로 나타난 객체라고 판단하는 방식으로 작동합니다. 배경과 현재 프레임의 차이가 있는 부분을 검출하게 됩니다. 정적 배경을 이용한 전경 객체 검출 예제 코드 예제 코드 출처 : 황선규 박사님 github홈페이지 sunkyoo.github.io/opencv4cvml/ 배경 영상과 현재 프레임 영상의 차이를 구하기 위해 cv2.absdiff..

[파이썬 OpenCV] 파노라마 영상 만들기 - 이미지 스티칭 - cv2.Stitcher_create, cv2.Stitcher.stitch

이미지 스티칭 - Image Stitching 이미지 스티칭은 동일 장면의 사진을 자연스럽게(seamless) 붙여서 한 장의 사진으로 만드는 기술입니다. 사진 이어 붙이기, 파노라마 영상(Panorama image) 기본적인 방법은 여러장의 영상에서 특징점을 검출하고 특징점이 동일한 것들을 찾아서 두 장의 영상과의 투시변환 관계를 찾아내어 이어 붙입니다. 위 두 영상에서 특징점을 검출 시 하늘에서는 특징점이 검출되지 않습니다. 엣지가 있고 지글지글한 텍스쳐가 있는 부분만 특징점이 검출됩니다. 위 그림에서 양쪽에 검출된 특징점만 남겨둡니다. 매칭되는 정보를 이용해서 투시변환 관계를 추출하고 이어 붙입니다. 단순히 이어 붙이면 밝기가 급격히 바뀌는 부자연스러움이 생깁니다. 밝기를 부드럽게 할 수있는 블렌딩..

[파이썬 OpenCV] 호모그래피와 영상 매칭 - cv2.findHomgraphy

호모그래피와 영상 매칭 호모그래피(Homography)는 두 평면 사이의 투시 변환(Perspective transform)을 의미합니다. 위 그림에서 v1 지점에서 바닥에 있는 사진을 카메라로 찰영한다고 가정하겠습니다. 찰영한 사진은 I1 입니다. 왼쪽 위에서 찰영을 했기 때문에 영상도 좀 기울어지고 비스듬해집니다. 원래 사진과 기울어진 사진과의 관계를 호모그래피 H1이라고 표현합니다. 마찬가지로 v2 지점에서 바닥 사진을 찰영한 사진은 I2입니다. I2와 바닥 사진 관계를 호모그래피 H2로 표현합니다. 또한 I1과 I2도 호모그래피 H12 관계가 생깁니다. 호모그래피는 투시변환과 거의 유사합니다. 투시변환 행렬로 표현할 수 있습니다. 투시변환 행렬에서 h33은 상수이므로 8개의 미지수로 구성됩니다. ..

반응형