관리 메뉴

ComputerVision Jack

[컴퓨터 비전 - 객체 검출] 본문

Image Processing/Computer Vision

[컴퓨터 비전 - 객체 검출]

JackYoon 2020. 2. 4. 16:00
반응형

템플릿 매칭

템플릿 : 찾고자 하는 대상이 되는 작은 크기의 영상

입력 영상에서 작은 크기 영상 위치를 찾아내고 싶은 경우 템플릿 매칭을 이용한다.

마스크 처럼 이동하면서 비슷한 위치를 찾아낸다.

 

유사도 : 유사도 접근일 경우 비슷한 부분 영상 위치에서 값이 크게 나타남

비유사도 : 비슷한 부분에서 영상 위치 값이 작게 나타남

템플릿 매칭

void matchTemplate(InputArray image, InputArray templ, OutputArray result, 

                                                                      int method, InputArray mask = noArray());

#템플릿 매칭을 수행하는 함수

찾을 템플릿
템플릿 매칭할 원 영상
유사도 템플릿 매칭 결과

오른쪽 하얀색인 부분 유사도 최대값 그곳에 템플릿 영상이 존재한다.

매칭 결과로 바운딩 박스 처리하면 검출 완료

캐스케이드 분류기와 얼굴 검출

openCV에서 제공하는 얼굴 검출 기능 - 부스팅 기반의 캐스케이드 분류기 알고리즘

유사-하르 필터(Haar-like filter)집합으로 부터 특징 정보를 추출하여 얼굴 여부를 판단한다.

유사하르 필터

캐스케이드 분류기

캐스케이드 분류기

 

void CascadeClassifier::load(const String& filename);

#미리 분류된 분류기 xml파일을 불러오는 함수

 

bool CascadeClassifier::empty() const;

#분류기 파일의 load확인 여부를 판단하는 함수

 

void CascadeClassifier::detectMultiScale(InputArray image, vector<Rect>& objects, double scaleFactor = 1.1,

                                      int minNeighbors = 3, int flags = 0, Size minSize = Size(), Size maxSize = Size());

#xml 파일을 이용하여 객체 검출을 실행하는 함수

얼굴 검출
얼굴 눈 검출

HOG 알고르짐과 보행자 검출

HOG(Histograms of Oriented Gradients)

그래디언트 방향 히스토그램.

계산한 그래디언트 크기와 방향 성분을 이용하여 사람이 서 있는 형태에 대한 특징 벡터를 정의한다.

그 다음 서프트 벡터 머신(SVM : Support Vector Machine) 알고리즘을 이용하여 보행자 위치 검출

HOG 알고리즘

static std::vector<Float> HOGDescriptor::getDefaultPeopleDetector();

#보행자 검출을 위한 훈련된 분류기 개수를 반환하는 함수

 

virtual void HOGDescriptor::setSVMDetector(InputArray svmdetector);

#검출할 객체에 대해 훈련된 svm계수를 함수에 등록한다.

 

virtual void HOGDescriptor::detectMultiScale(InputArray img, std::vector<Rect>& foundLocations,std::vector<double>& foundWeights, double hitTreshold = 0, Size winStride = Size(),

 Size padding = Size(), double scale = 1.05, double finalThreshold = 2.0, bool useMeanShiftGrouping = false) const;

#실제 입력영상에서 객체 영역 검출

HOG 알고리즘

QR 코드 검출

QR 코드

QR 코드

흑백 격자 무늬 모양의 2차원 바코드 일종. 여러 정보를 저장할 수 있고,

최근엔 URL정보를 포함한 서비스를 지원한다.

 

bool QRCodeDetector::detect(InputArray img, OutputArray points) const;

#QR코드 영역 검출. 또는 문자열 해석

 

std::string QRCodeDetector::decode(InputArray img, InputArray points,

                                                                                OutputArray straight_arcode = noArray());

#QR코드에 저장된 문자열 추출

 

std::string QRCodeDetector::detectAndDecode(InputArray img, OutputArray points = noArray(),

                                                                                 OutputArray straight_qrcode = noArray());

#검출과 해석을 한번에 사용하는 함수

 

ex_face_detect.cpp
0.00MB
ex_face_eye_detect.cpp
0.00MB
ex_HOG.cpp
0.00MB
ex_template_matching.cpp
0.00MB
ex_qrcode.cpp
0.00MB

반응형
Comments