반응형
OpenCV를 접하면서 제공하는 래퍼런스 명명에는 일정한 규칙이 있다.
이런 래퍼런스 명명 규칙을 알고 OpenCV에 접근하면 유익한 정보가 될 수 있을거 같아 글을 남겨 놓는다.
=================================================================================================
1. 접두사가 cv Cv CV 다 다른 의미를 가지는 접두사이다.
cv : 함수명을 뜻한다
Cv : 데이터 구조에 대한 명칭이다.
CV : 정의된 상수의 명칭
=================================================================================================
2. 함수의 명명 규칙
<cv> <Action> <Target> <Mode> 순서이다.
예를 들면 cvNormalizeHist 라는 함수가 있다.
<cv> 이기 때문에 함수를 뜻하고
<Nomalize> 액션을 뜻하는데 평활화를 뜻한다.
<Hist> 는 액션을 취하는대상이기에 Histogram을 뜻한다.
한마디로 히스토그램을 평활하 하는 함수이다.
=================================================================================================
3. IPL로시작하는 상수 명명 규칙
IPL_DEPTH_<bit_depth> (S | U | F)
bit_depth : 1, 8, 16, 32
S : singed integer
U : unsinged integer
F : float
예를 들면 IPL_DEPTH_1U 라는 상수가 있다.
<1> 이다 이는 1비트의 양을 뜻한다.
<U> 이다 이는 Unsigned integer image 를 나타낸다.
즉 1비트 양의 정수 영상을 나타내는 것이다.
=================================================================================================
4. 기타로 시작하는 상수 명명 규칙
CV_<bit_depth>(S | U | F)<number_of_channels>
bit_depth : 1, 8, 16, 32
S : singed integer
U : unsinged integer
F : float
number_of_channels : 채널의 개수
예를 들어보면 CV_8UC1 가 있다.
이는 8 비트 양의 정수형을 갖는 단일 채널 행렬을 나타낸다.
=================================================================================================
5. 데이터 구조 명명 규칙
Cv<Data Structure>
Data Structure : 데이터 구조 명칭
예를 들어 보면
Cv + Matrix(행렬) = CvMat
Cv + Array(배열) = CvArr
Cv + Point(좌표) = CvPoint
=================================================================================================
6. OpenCV 라이브어리는 크게 6가지로 나눈다. (1.0 기준)
cv : 영상처리 알고리즘 함수, 컴퓨터 비전 알고리즘 함수 (cv100.dll)
cvaux : 전문 컴퓨터 비젼 알고리즘 함수 (cvaux100.dll)
cxcore : 데이터 구조 지원 함수 (cxcore100.dll)
highgui : GUI 지원 함수 (highgui100.dll)
ml : 기계학습 알고리즘 함수 (ml100.dll)
cvcam : DirectX 기반 카메라 제어 함수 (cvcam100.dll)
아래는 OpenCV 2.0 이 나오면서 추가된 내용을 번역한것이다. (OpenCV Korea 펌)
2.0은 직접 해보면서 해봐야 할것 같다
필요하면 읽어 보면 좋을거 같다.
=============== 아래 ==================
- General:
--> 새로운 C++ 인터페이스 적용으로 OpenCV의 수많은 기능들(cxcore, cv, highgui)이 좋아졌다.
똑같은 결과를 얻기위해 코딩에 대한 시간을 줄여주고, 메모리 관리등 수많은 장점이 있다.
opencv/doc/opencv.pdf와 헤더파일(*.hpp)를 참고하라.
이전 버전의 인터페이스는 여전히 사용가능하다.
--> 소스 디렉토리 구조가 변경되었다.; 모든 개발환경에 대해서 외부 헤더 파일 전체가 하나의 디렉토리에 들어있다.
--> 우선적인 컴파일 시스템은 CMake이다. http://www.cmake.org(추천하는 버전은 2.6.x이다.)
+윈도우즈는 Visual Studio의 MSVC와 Borland C++와 MinGW는 지원한다.; CMake를 이용하여 생성하길 바란다.
+MaxOSX 사용자는 Xcode를 위한 프로젝트 파일을 만들수 있다.
+리눅스와 기타 다른 OS는 Eclipse/Code Blocks/커맨드 라인으로 OpenCV를 컴파일 할 수 있다.
- CXCORE, CV, CVAUX:
--> CXCORE는 Lapack(CLapack 3.1.1.1)을 사용하여 다양한 선형함수을 계산할 수 있다.
--> 수많은 특징추출과 물체검출과 분류방법이 추가되었다.
(이것들에 대해서는 문서가 없다.). cv.hpp와 cvaux.hpp파일을 참고
--> FAST - corner detector 속도 향상(Edward Rosten)
--> MSER - 최대한 안정적으로 영역분류-extremal regions- (Liu Liu)
--> LDetector - 원 형태를 기반으로 한 고속 특징 추출(V. Lepetit (a.k.a. YAPE))
--> Fern을 기반으로 한 point 분류법과 평면 물체 검출(M. Ozuysal and V. Lepetit)
--> One-Way 연산자 : PCA를 기반으로 한 강력한 특징 추출 연산자
(S. Hinterstoisser, O. Kutter, N. Navab, P. Fua, and V. Lepetit,
"Real-Time Learning of Accurate Patch Rectification").
Contributed by Victor Eruhimov
--> 3차원 특징 연산 이미지 회전 (based on the A. Johnson PhD thesis; implemented by Anatoly Baksheev)
--> Self-simularity 특징추출(Rainer Leinhart)
--> HOG 사람들과 물체 추출 - Navneet Dalal framework의 재실행
(http://pascal.inrialpes.fr/soft/olt/). Currently, only the detection part is ported,
but it is fully compatible with the original training code.
See cvaux.hpp and opencv/samples/c/peopledetect.cpp.
--> Haar 특징을 기반으로 한 물체 추출의 기능 향상(by Maria Dimashova.)
Haar features와 LBPs (local binary patterns)등 다른 특징을 좀 더 쉽게 추가 가능함
--> 적응적인 피부 검출과 퍼지 Meanshift 추적(contributed by Farhad Dadgostar)
see cvaux.hpp and opencv/samples/c/adaptiveskindetector.cpp 참고
--> HAAR+LBP 물체 추출 추가된 새로운 traincascade 적용
See opencv/apps/traincascade.
--> 가장 가까이 있는 것을 검색하는 FLANN(Marius Muja)을 위한 라이브러리 지원
cxcore.hpp and opencv/samples/c/find_obj.cpp
--> bundle adjustment 엔진 추가(PhaseSpace) --> 멀티뷰 Geometry 알고리즘
see cvaux.hpp
--> dense optical flow 추정 함수("Two-Frame Motion Estimation Based on Polynomial Expansion" by G. Farnerback).
See cv::calcOpticalFlowFarneback and the C++ documentation
--> 영상 warping 연산자 (resize, remap, warpAffine, warpPerspective)
now all support bicubic and Lanczos interpolation.
--> 대부분의 선형/비선형 필터 연산자는(filter2D, sepFilter2D, erode, dilate ...) 임의의 외곽선 모드와 ROI 바깥 Pixel 연산을 지원
(i.e. the ROIs are not "isolated" anymore), see the C++ documentation.
--> XML/YML 파일을 GZip 압축하여 데이터를 저장하고 읽는다.
cvSave("a.xml.gz", my_huge_matrix);
- MLL:
--> 극단적인 무작위 트리를 추가하여 아주 빠르게 트리를 무작위 비교하여 Train시킨다.(by Maria Dimashova).
--> 결정 트리 엔진과 재귀형 결정 트리, Boost, 무작위 트리를 기반으로 된 클래스는 새롭게 수정되었다.
* The decision tree engine and based on it classes
(Decision Tree itself, Boost, Random Trees)
have been reworked and now:
+ 메모리 효율 증가(이전대비 200% 상승)
+ 멀티 Thread방식으로 train한다.(OpenMP 사용시)
+ 특별한 low-overhead branch때문에 숫자 변수에 의한 boosting 분류는 특히 더 빨라짐
* mltest가 추가됨. 완료된때까지, MLL 클래스의 몇가지 테스트를 수정하도록 한다.
- HighGUI:
--> [Linux] 스테레오 카메라 지원(현재 Videre만 지원)하며 n개 카메라 영상을 캡쳐할 수 있는 인터페이스 제공
--> 영상들은 메모리 버퍼에서 압축또는 해제 할 수있다.
see the C++ HighGUI reference manual
- Documentation:
--> 레퍼런스 매뉴얼은 HTML형식을 LaTex형식으로 변환할 수 있음(by James Bowman and Caroline Pantofaru),
+ opencv.pdf 오프라인 매뉴얼
+ 최신 온라인 매뉴얼
(as the result of LaTeX->Sphinx->HTML conversion) available at http://opencv.willowgarage.com/documentation/index.html
- Samples, misc.:
--> 눈 검출 예제 추가(Shiqi Yu)
see opencv/data/haarcascades/*[lefteye|righteye]*.xml
--> 얼굴 앞면 검출하기 위한 LBP Cascade 예제 추가(Maria Dimashova)
see opencv/data/lbpcascades/lbpcascade_frontalface.xml
--> 고화질 몸체 인식과 얼굴 검출 예제 추가(Modesto Castrillon-Santana)
see opencv/data/haarcascades/haarcascade_mcs*.xml
>>> Optimization:
--> 수많은 기초 함수와 영상 처리 연산자(수치연산, 기하학적 변환, 필터링)들이 SSE2 최적화하여 속도가 향상됨
--> IPP 지원의 모델이 변경됨. IPP는 CMake에 의해 설정되며, OpenCV와 연결되어 검출된다.
(Beta에서는 여전히 지원하지 않는다.)
--> 변수를 조정하여 PNG 인코딩이 향상되었다.
>>> Bug fixes: <<<
TBD
(see http://sourceforge.net/tracker/?group_id=22870&atid=376677 of the list
of the closed and still opened bugs).
Many thanks to everybody who submitted bug reports and/or provided the patches!
>>> Known issues:주의점
--> 설정과 autotools 기반한 컴파일은 현재 적용안됨. CMake 사용
--> SF에서 Tracker를 약 150개 생성하면 버그 발생 - 추후 수정 예정(2.0 Gold)
--> 수많은SSE2 코드를 지원하기 때문에 IPP 지원하지 않음.- 추후 수정 예정(2.0 Gold)
--> 문서작업 추가
- cvaux의 새로운 기능 설명 없음
- 서적목록 없음
- 알려진 버그 내용 미비
- 문서에 포함된 링크(하이퍼링크)가 동작하지 않음
* 이전 버전(1.x)에 대해 새로운 기능에 대한 테스트가 일부만 되었음
* 새로운 형식의 Python을 포함하지 않음
--> 새로운 C++ 인터페이스 적용으로 OpenCV의 수많은 기능들(cxcore, cv, highgui)이 좋아졌다.
똑같은 결과를 얻기위해 코딩에 대한 시간을 줄여주고, 메모리 관리등 수많은 장점이 있다.
opencv/doc/opencv.pdf와 헤더파일(*.hpp)를 참고하라.
이전 버전의 인터페이스는 여전히 사용가능하다.
--> 소스 디렉토리 구조가 변경되었다.; 모든 개발환경에 대해서 외부 헤더 파일 전체가 하나의 디렉토리에 들어있다.
--> 우선적인 컴파일 시스템은 CMake이다. http://www.cmake.org(추천하는 버전은 2.6.x이다.)
+윈도우즈는 Visual Studio의 MSVC와 Borland C++와 MinGW는 지원한다.; CMake를 이용하여 생성하길 바란다.
+MaxOSX 사용자는 Xcode를 위한 프로젝트 파일을 만들수 있다.
+리눅스와 기타 다른 OS는 Eclipse/Code Blocks/커맨드 라인으로 OpenCV를 컴파일 할 수 있다.
- CXCORE, CV, CVAUX:
--> CXCORE는 Lapack(CLapack 3.1.1.1)을 사용하여 다양한 선형함수을 계산할 수 있다.
--> 수많은 특징추출과 물체검출과 분류방법이 추가되었다.
(이것들에 대해서는 문서가 없다.). cv.hpp와 cvaux.hpp파일을 참고
--> FAST - corner detector 속도 향상(Edward Rosten)
--> MSER - 최대한 안정적으로 영역분류-extremal regions- (Liu Liu)
--> LDetector - 원 형태를 기반으로 한 고속 특징 추출(V. Lepetit (a.k.a. YAPE))
--> Fern을 기반으로 한 point 분류법과 평면 물체 검출(M. Ozuysal and V. Lepetit)
--> One-Way 연산자 : PCA를 기반으로 한 강력한 특징 추출 연산자
(S. Hinterstoisser, O. Kutter, N. Navab, P. Fua, and V. Lepetit,
"Real-Time Learning of Accurate Patch Rectification").
Contributed by Victor Eruhimov
--> 3차원 특징 연산 이미지 회전 (based on the A. Johnson PhD thesis; implemented by Anatoly Baksheev)
--> Self-simularity 특징추출(Rainer Leinhart)
--> HOG 사람들과 물체 추출 - Navneet Dalal framework의 재실행
(http://pascal.inrialpes.fr/soft/olt/). Currently, only the detection part is ported,
but it is fully compatible with the original training code.
See cvaux.hpp and opencv/samples/c/peopledetect.cpp.
--> Haar 특징을 기반으로 한 물체 추출의 기능 향상(by Maria Dimashova.)
Haar features와 LBPs (local binary patterns)등 다른 특징을 좀 더 쉽게 추가 가능함
--> 적응적인 피부 검출과 퍼지 Meanshift 추적(contributed by Farhad Dadgostar)
see cvaux.hpp and opencv/samples/c/adaptiveskindetector.cpp 참고
--> HAAR+LBP 물체 추출 추가된 새로운 traincascade 적용
See opencv/apps/traincascade.
--> 가장 가까이 있는 것을 검색하는 FLANN(Marius Muja)을 위한 라이브러리 지원
cxcore.hpp and opencv/samples/c/find_obj.cpp
--> bundle adjustment 엔진 추가(PhaseSpace) --> 멀티뷰 Geometry 알고리즘
see cvaux.hpp
--> dense optical flow 추정 함수("Two-Frame Motion Estimation Based on Polynomial Expansion" by G. Farnerback).
See cv::calcOpticalFlowFarneback and the C++ documentation
--> 영상 warping 연산자 (resize, remap, warpAffine, warpPerspective)
now all support bicubic and Lanczos interpolation.
--> 대부분의 선형/비선형 필터 연산자는(filter2D, sepFilter2D, erode, dilate ...) 임의의 외곽선 모드와 ROI 바깥 Pixel 연산을 지원
(i.e. the ROIs are not "isolated" anymore), see the C++ documentation.
--> XML/YML 파일을 GZip 압축하여 데이터를 저장하고 읽는다.
cvSave("a.xml.gz", my_huge_matrix);
- MLL:
--> 극단적인 무작위 트리를 추가하여 아주 빠르게 트리를 무작위 비교하여 Train시킨다.(by Maria Dimashova).
--> 결정 트리 엔진과 재귀형 결정 트리, Boost, 무작위 트리를 기반으로 된 클래스는 새롭게 수정되었다.
* The decision tree engine and based on it classes
(Decision Tree itself, Boost, Random Trees)
have been reworked and now:
+ 메모리 효율 증가(이전대비 200% 상승)
+ 멀티 Thread방식으로 train한다.(OpenMP 사용시)
+ 특별한 low-overhead branch때문에 숫자 변수에 의한 boosting 분류는 특히 더 빨라짐
* mltest가 추가됨. 완료된때까지, MLL 클래스의 몇가지 테스트를 수정하도록 한다.
- HighGUI:
--> [Linux] 스테레오 카메라 지원(현재 Videre만 지원)하며 n개 카메라 영상을 캡쳐할 수 있는 인터페이스 제공
--> 영상들은 메모리 버퍼에서 압축또는 해제 할 수있다.
see the C++ HighGUI reference manual
- Documentation:
--> 레퍼런스 매뉴얼은 HTML형식을 LaTex형식으로 변환할 수 있음(by James Bowman and Caroline Pantofaru),
+ opencv.pdf 오프라인 매뉴얼
+ 최신 온라인 매뉴얼
(as the result of LaTeX->Sphinx->HTML conversion) available at http://opencv.willowgarage.com/documentation/index.html
- Samples, misc.:
--> 눈 검출 예제 추가(Shiqi Yu)
see opencv/data/haarcascades/*[lefteye|righteye]*.xml
--> 얼굴 앞면 검출하기 위한 LBP Cascade 예제 추가(Maria Dimashova)
see opencv/data/lbpcascades/lbpcascade_frontalface.xml
--> 고화질 몸체 인식과 얼굴 검출 예제 추가(Modesto Castrillon-Santana)
see opencv/data/haarcascades/haarcascade_mcs*.xml
>>> Optimization:
--> 수많은 기초 함수와 영상 처리 연산자(수치연산, 기하학적 변환, 필터링)들이 SSE2 최적화하여 속도가 향상됨
--> IPP 지원의 모델이 변경됨. IPP는 CMake에 의해 설정되며, OpenCV와 연결되어 검출된다.
(Beta에서는 여전히 지원하지 않는다.)
--> 변수를 조정하여 PNG 인코딩이 향상되었다.
>>> Bug fixes: <<<
TBD
(see http://sourceforge.net/tracker/?group_id=22870&atid=376677 of the list
of the closed and still opened bugs).
Many thanks to everybody who submitted bug reports and/or provided the patches!
>>> Known issues:주의점
--> 설정과 autotools 기반한 컴파일은 현재 적용안됨. CMake 사용
--> SF에서 Tracker를 약 150개 생성하면 버그 발생 - 추후 수정 예정(2.0 Gold)
--> 수많은SSE2 코드를 지원하기 때문에 IPP 지원하지 않음.- 추후 수정 예정(2.0 Gold)
--> 문서작업 추가
- cvaux의 새로운 기능 설명 없음
- 서적목록 없음
- 알려진 버그 내용 미비
- 문서에 포함된 링크(하이퍼링크)가 동작하지 않음
* 이전 버전(1.x)에 대해 새로운 기능에 대한 테스트가 일부만 되었음
* 새로운 형식의 Python을 포함하지 않음
'[Public] 신호처리 > OpenCV 다루기' 카테고리의 다른 글
[OpenCV] #3 시퀀스 활용하기 CvMemStorage CvSeq (0) | 2010.03.26 |
---|---|
[OpenCV] #1 OpenCV에서 행렬 표현하기 (0) | 2010.02.23 |