데이터분석/Vision Recognition 36

OpenCV 3 + 비주얼 스튜디오 + 윈도우즈10 설치

OpenCV는 굉장히 설치하기가 까다롭다. 기존 C++로 개발을 해보지 않았다면 머리가 아프다. JVM이나 각종 스크립트 언어는 인터프리터가 알아서 해주겠지만, C/C++은 플랫폼에 종속되기 때문에 빌드자체가 잘 안되기 마련이다. 설치를 하려고 그대로 블로그를 따라하려고 했다가는 각종 에러에 부딪히기 때문에, 구조를 알고 가자. OpenCV를 홈페이지에서 설치하면 다음과 같은 구조를 띄고있다. 출처 : 고락가락닷컴 source는 굳이 소스를 건드리지 않으면 일단은 제쳐둬도 된다. MakeFile을 통한 빌드가 필요하지 않다. 일단은 build되어있는 완성품을 이용해 본다. 여기서 약간 헷갈리는게, x64도 있고, x86이 있다. 자신의 기종에 맞게 선택해서 진행하면 되기는 하는데 나중에 비주얼스튜디오에서..

openCV 주요 모듈

opencv_core 기본자료구조 및 연산함수 opencv_imgproc 주요 영상처리 함수 opencv_highgui 일부 사용자 인터페이스 opencv_features2d 특징점 검출기, 기술자, 특징점 매칭 프레임워크 opencv_calib3d 카메라 보정, 이중시각 기하학 추정, 스테레오 함수 opencv_video 움직임추정, 특징추적, 전경추출 opencv_objdetect 얼굴과 사람 검출기 등의 객체 검출기 openvb_ml 기계학습 openvb_flann 계산 기하학 알고리즘 opencv_contrib 기증 코드 opencv_gpu gpu가속 코드 opencv_photo 계산사진학 opencv_stitching 영상잇기

기계학습, HAAR 훈련을 통한 캐릭터 파인더

사람얼굴 검출기는 시중에 너무 좋은것들이 많이 풀려있다. 그건 페이스북에 문의하도록 한다. 여기서는 사람이 아닌 다른것에 대해서도 검출하고 싶다는 것이다. http://coding-robin.de/2013/07/22/train-your-own-opencv-haar-classifier.html 위의 글에서는 바나나를 학습시키는데, 그냥 웃기려고 바나나를 선택한것은 아닐듯 싶다.바나나는 형태가 특이하며 다른 과일들과 구분하기 쉽기 때문에 학습시키기 참 좋으며 크고 굵고 노란 바나나는 포스팅에 올리기에도 참 맛있게 생겼다. 그렇다면 캐릭터를 한번 훈련시켜보면 어떨까? 적당한 캐릭터를 찾고 싶었는데, 마침 볼펜 꼭다리에 캐릭터가 달려있다. 이걸 한번 찾아보고 싶다. 물론 학습시키는 데이터는 적어도 캐릭터가 포함..

OpenCV 명령어 관련 정리

참고 (아래의 요약에 대한 설명자료) http://darkpgmr.tistory.com/70 single expand - 하나의 positive 샘플을 변형(하나만 있으므로 어쨌든 변형필요) multi preserve - 입력된 여러개의 positive샘플을 그대로 저장 multi expand - 입력된 여러개의 positive샘플을 변형 샘플제작시 -w : 가로 -h : 세로 -img : 입력받은 이미지 -vec : 변형된 파일들 명 -bg : 백그라운드컬러, 알아서 백그라운드컬러를 합성함 -bgthreshd : 백그라운드컬러 생성시 다양함을 주기위한 범위값 -maxidev : 밝기값 변형 -maxxangle (y/z) : 회전 변형 (물체가 항상 땅에있는상태라면 적게) -num : 만들 샘플 데이터 ..

각 영상인식 방법들의 간략 비교

글을 하나 포스팅하려 했건만, 이사람은 항상 다 정리해놓았다. 대단하다 정말.. http://darkpgmr.tistory.com/116 그래도 짧게 간추린 글을 보고싶으므로, 그것만 해보자면 SIFT(Scale Invariant Feature Transform) - 특징점 주변의 gradient 분포특성 이용, 기하학적 정보 무시, 형태변화 크기변화에 강하다. 큰변화 감지가능 HOG(Histogram of Oriented Gradient) - 블록단위 기하학적 정보 유지, 블록내부에서는 히스토그램을 사용해 조그마한 변화 감지 가능 큰변화 감지불가, 작은변화 감지가능 Haar Feature - 기본 특징 (영역과 영역의 밝기차 이용) 들을 수천가지 조합하여 특징추출 contrast 및 광원에 대한 검출 ..

OpenCV 빠르게 이용해서 얼굴 판별

출처 : Face Recognition With Python, in Under 25 Lines of Code https://realpython.com/blog/python/face-recognition-with-python/ 참고 : 바나나 이미지센싱 (^^;;) http://coding-robin.de/2013/07/22/train-your-own-opencv-haar-classifier.html Localising Organs of the Fetus in MRI Data Using Python http://www.slideshare.net/kevinkeraudren/pydata-london-2015 Setup OpenCV for Python in Windows http://luugiathuy.com/..

Microsoft Azure 를 이용한 신박한 머신러닝

https://azure.microsoft.com/ko-kr/services/machine-learning/ 이 신박한 물건은, 마이크로소프트 클라우드 솔루션인 Azure기반으로 돌아가는 툴이다. 주말에 해보면서 충격을 받았다. 이렇게 쉽게 할수있는것이라니. 아무래도, 우리나라 SI는 아직까지 B2B만을 고집하여야 하는 필수적인 이유가 여기있는것일지도 모른다는 생각이 들었다. 이런 쌈박한 물건을 만들어내지 못하기 때문에.보통 머신러닝을 생각하면 검은 화면에 빽빽한 코딩, 그리고 파이썬인지 R인지 MATLAB인지 뭔가 정신없는 것들을 막 쓰고 결과물도 거지같이 복잡하게 나오는것을 생각할지도 모른다.이 마이크로소프트에서 제공하는 쌈박함은 정말.. 어디서든 쉽게 따라올수 없는 내공이 돋보인다. 위와 같이 필요..

② 파이썬 - 컴퓨터 비전 프로그래밍 (Local Image Descriptor) (2)

SIFT (Scale-Invariant Feature Transform)SIFT는 상당히 인기가 많은 인식방법 중 하나인듯하다.특징점 주변 픽셀들의 gradient 방향, 크기에 대한 히스토그램을 이용해 주변의 분포특성을 표현해 준다. 일단은 기하학적 특징보다는 어쨌든간 방향과 크기에 대한 아래와 같은 변화를 감지하여 인식하는 싱기방기한 인식방법이다. 출처 : https://commons.wikimedia.org/wiki/File:SIFT_gradient_magnitude_and_orientation_computation.svg참조 : https://en.wikipedia.org/wiki/Scale-invariant_feature_transform https://gilscvblog.wordpress.co..

② 파이썬 - 컴퓨터 비전 프로그래밍 (Local Image Descriptor) (1)

본 글은 Programming Computer Vision with Python (Jan Erik Solem) 을 그대로 따라간거임. 코너검출코너검출은 이미지의 특징점을 잡아내는데 있어 대표적인 방법이다. 물론 사진의 코너만 검출하고 거기서 끝이나면 그만큼 허무한것도 없겠지만, 코너를 잡아내어 이미지를 비교하거나 얼굴등의 윤곽선을 잡아낼수 있다. 뭐 이런느낌 아닐까? 출처 : http://www.learncomputervision.com/articles/programming/opencv-corner-detection-with-c/ 원리는 간단하다. 어떤 한 지점에서 동서남북으로 픽셀을 검사해봤을때 1) 변화가 있으면 코너이고, 2) 변화가 있기는 한데 같은 방향에서의 변화가 없으면 코너는 아니고 그냥 경..

① 파이썬 - 컴퓨터 비전 프로그래밍 (Basic Image Handling and Processing) (2)

중딩때 포샵질좀 해봤을만한 필터를 한번 적용시켜보자 필터에 대한 적용은 scipy.ndimage 에 있고, 참조 라이브러리는 다음과 같다. http://docs.scipy.org/doc/scipy/reference/ndimage.html - 가우시안 필터 시그마 값의 크기에 따라 흐려지는 필터가 적용되는게 다르다. gaussian_filter.pyfrom PIL import Image from numpy import * from scipy.ndimage import filters original = array(Image.open('image.PNG').convert('L')) filtered = filters.gaussian_filter(original,5) Image.fromarray(filtered)..