반응형

OpenCV 90

[Open CV] 머신러닝 SVM 알고리즘

이번 시간에는 가장 유명하고 많이 사용되고있는 SVM 알고리즘에 대해 알아본다. 서포트 벡터 머신 ( SVM : Support Vector Machine ) 알고리즘이란? - 기본적으로 두 개의 그룹 ( 데이터 ) 을 분리하는 방법으로 데이터들과 거리가 가장 먼 초평면 ( hyperplane ) 을 선택하여 분리하는 방법 ( maximum argin classifier ) 위 2개의 그룹을 분리하기 위한 직선, 즉 선형적인 직선의 형태를 만든다. 1번과 2번의 직선을 보면 2개 직선 모두 두개의 그룹을 확실하게 나눴다고 하기에는 애매한 부분이 눈에 보인다. 그럼 사각형 그룹이나 삼각형 그룹에서 노이즈가 발생하게 됐을때 1번과 2번의 직선을 사용해서 구분하기는 어렵다. 그랬을때 두 그룹을 구분하기 위해서는..

[Open CV] 머신러닝 k 최근접 이웃 알고리즘

이번 시간에는 전일 배웠던 K최근접 알고리즘을 사용해서 필기체 숫자 인식하는 프로그램에 대해 알아본다. 만약 정해진 폰트로 인쇄된 숫자라면? ( 인쇄체 숫자 ) - 템플릿 매칭으로도 가능 하지만 필기체숫자는 사람마다 다르기 때문에 템플릿매칭으로는 구분하기가 쉽지 않다. 따라서 필기체 숫자의 분류를 위해서는 다수의 필기체 숫자데이터를 이용해서 머신러닝의 도움을 받아 특징점을 추출해 알아서 분류하게끔 하는 것이 일반적인 방법이다. 필기체 숫자 데이터는 OpenCV에서 제공하는 필기체숫자 파일이 있는데 이를 머신러닝으로 학습시켜 필기체 숫자를 구분한다. https://github.com/opencv/opencv/blob/master/samples/data/digits.png GitHub - opencv/ope..

[Open CV] 머신러닝 k 최근접 이웃 알고리즘

금일은 이전 강의에서 배웠던 KNearest 알고리즘 클래스에 대해서 알아본다. k 최근접 이웃 ( kNN, k-Nearest Neightbor ) 알고리즘이란? - 특징 공간에서 테스트 데이터와 가장 가까이 있는 k개의 학습 데이터를 찾아 분류 또는 회귀를 수행하는 지도 학습 알고리즘의 하나 위 그림을 보면 파란색 사각형 오른쪽 삼각형으로 ㅇ루어져있는데 새로운 점이 들어왔을대 사각형인지 삼각형인지를 구분하고 싶다. 왼쪽 상단에 새로운 점이 들어왔을때 구분하는 가장 간단한 방법은 해당 점과 가장 가까이 있는 기존 샘플을 찾아서 해당 샘플의 클래스를 그대로 부여하는 할당하는 방법이다. 그런데 중간에 초록색 원이 들어왔을때는 어떻게 구분하면 될까? 일단 방법을 알아보기 전에 위 이미지처럼 튀어나와있는 삼각형..

[Open CV] 머신러닝 클래스

금일은 OpenCV에서 제공하는 머신러닝 클래스들에 대해서 알아본다. OpenCV가 기본적으로 컴퓨터비전 라이브러리이지만 머신러닝과 관련된 라이브러리도 제공하고있다. 위 이미지를 보게되면 cv2.ml_StatModel 이라고하는 상위 클래스가 있고 ( Stat : 통계 ) 각각 상속받는 알고리즘 클래스들이 정의가 되어있다. 위 클래스들의 객체를 생성해서 각각의 알고리즘에 맞게끔 내가 가진 데이터들을 학습을 시킬 수 있다. 이때 사용하는 함수가 train() , predict() 함수이다. train()은 학습을 하는 함수이고 predict()는 예측을 하는 역할의 함수이다. 그래서 예를들어 cv2.ml_KNearest 라고 하는 알고리즘의 클래스를 사용해서 머신러닝을 사용하고 싶다면 위 클래스의 trai..

[Open CV] 객체추척과 모션벡터 _ OpenCV 트래커

금일은 OpenCV에서 제공하는 Tracker Class 에 대해 알아본다. OpenCV 트래커 ( Tracker ) - OpenCV 3.0 버전부터 트래커 클래스 제공 - 트래커 클래스는 OpenCV extra modules 에서 지원하므로 opencv-contrib-python 패키지를 설치해야 함 - OpenCV 4.1 기준으로 8가지 트래킹 알고리즘 지원 이 전 강의에서는 이전 프레임의 객체가 다음 프레임에 어떻게 어디로 이동했는지를 보겠다 또는 어떤 점이 어디로 이동했다라는 정보를 추출할 수 있었는데 이런 알고리즘은 추적을 위한 기본적인 알고리즘으로 이용될 것이다. 그 외로 조금 더 고차원적인 추적 알고리즘을 클래스형태로 구현해서 제공하는 것이 있다. 이번 시간에 사용할 트래커 클래스를 이용하기..

Program/OPEN_CV 2022.07.04

[Open CV] 객체추척과 모션벡터 _ 밀집 옵티컬플로우

이전 강의에서 나온 파네백 알고리즘에 대해 알아본다. - 파네백 알고리즘 ( Farneback's algorithm ) cv2.calcOpticalFlowFarnebak(...) Dense(밀집) points에 대한 이동 벡터 계산 => 모든 픽셀에서 옵티컬플로우 벡터 계산 밀집 옵티컬플로우란? 입력영상 전체에서 움직임벡터를 계산하는 방법 밀집 옵티컬플로우 계산 함수 flow = cv2.calcOpticalFlowFarneback (prev, next, flow, prev_scale, levels, winsize, iterations, poly_n, poly_sigma, flags) prevImg: 이전 프레임 영상 ( 그레이스케일 영상 ) nextImg: 현재 프레임 영상 ( 그레이스케일 영상 ) fl..

Program/OPEN_CV 2022.07.03

[Open CV] 객체추척과 모션벡터 _ 카나데옵티컬플로우

2022.07.02 금일은 벡터 카나데옵티컬플로우에 관한 강의였다. 동영상에서 움직임 정보를 계산하는 정보를 알아내는 방법에 대해 알아본다. 옵티컬플로우 ( Optical Flow) 란? - 연속하는 두 프레임 ( 영상 ) 에서 카메라 또는 객체의 움직임에 의해 나타나는 객체의 이동 정보 패턴 옵티컬 플로우 활용 분야 - Structrue from Motion (물체의 주위를 여러 위치에서 촬영할 때 발생하는 카메라의 움직임을 유추하고, 이를 바탕으로 3차 원 형상을 복원하는 것) - Video Compression ( 영상 압축 ) - Video Stabilization ( 영상 안정화 , 손떨림보정 ) - etc. OpenCV 옵티컬 플로우 계산 함수 - 루카스 - 카나데 알고리즘 ( Lucas-Ka..

Program/OPEN_CV 2022.07.02

[Open CV] 객체추척과 모션벡터 _ 캠시프트 알고리즘

2022.07.01 금일은 캠시프트 알고리즘에 관한 강의였다. 지난시간에 배운 Mean Shift 알고리즘의 단점을 보완해줄 수 있는 캠시프트 알고리즘에 대해 배워본다. 캠시프트 ( CamShift ) 란? - Continuously Adaptive Mean Shift - Mean Shift 알고리즘을 계속 적응형으로 동작시키는 알고리즘 - 추적하는 객체의 크기가 변하더라도 검색 윈도우의 크기가 고정되어 있는 평균 이동 알고리즘의 단점을 보완 캠시프트 동작 방법 - 우선 평균 이동 알고리즘으로 이동 위치 계산 - 윈도우 크기를 조정 - 특징 공간을 가장 잘 표현하는 타원 검출 - 새로운 크기의 윈도우를 이용하여 다시 평균 이동 수행 캠시프트 알고리즘 - 캠시프트 알고리즘을 이용한 관심 영역 추적 이전 프..

Program/OPEN_CV 2022.06.30

[Open CV] 객체추척과 모션벡터 _ 평균이동 알고리즘

2022.06.30 금일은 평균이동 알고리즘에 관한 강의였다. 금일은 평균 이동 알고리즘을 통해 객체를 추적하는 방법에대해서 알아본다. Detection vs. Recognition vs. Tracking - Detection ( 검출 ) : 영상에서 찾고자 하는 대상의 위치와 크기를 알아내는 작업 Recognition ( 인식 ) : 주어진 영상이 무엇인지 판별하는 작업 ( classification , identification ) Tracking ( 추적 ) : 동영상에서 특정 대상의 위치 변화를 알아내는 작업 이 전 프레임의 객체가 현재 프레임의 어디에 위치해있는지 ( Mean Shift , CamShift , Optical Flow , Trackers in OpenCV 3.x ) Ex) 스마트폰..

Program/OPEN_CV 2022.06.29

[Open CV] 객체추척과 모션벡터 _ 배경차분 _ MOG 배경모델

2022.06.29 금일은 배경차분 MOG 배경모델에 관한 강의였다. MOG란? - Mixture of Gaussian , GMM ( Gaussian Mixture Model ) - 각 픽셀에 대해 MOG 확률 모델을 설정하여 배경과 전경을 구분 - 예를들어 ' 배경영상에서 A라는 부분은 원래 픽셀값이 100이었어 ' 라고 정해놓고 전경과 비교하는 것이 아닌 ' 배경 영상에서 A라는 부분은 100근방의 가우시안 모델을 따르고있어 ' 라고 정의하는 모델 - Mixutre ( 혼합 ) 를 보면 알 수 있듯 하나의 가우시안 모델을 사용하는 것이 아닌 2개 이상의 가우시안 모델을 사용 - 데이터 사이언스쪽 전반적으로 사용되는 데이터 분석기법이다. 다양한 배경 모델 구성 방법 - Static scene : 배경영..

Program/OPEN_CV 2022.06.28
반응형