반응형

OpenCV 3.0 빌드 체험기

기존에 쓰던 OpenCV 버전이 2.1인데,

속도 개선도 좀 하고, 혹시 새로운 알고리즘도 활용할 수 있지 않을까 해서

이참에 3.0으로 업데이트해 보려고 한다.

OpenCV 3.0의 Pre-Built 버전은 VC11과 12용으로밖에 안나와 있어서,

사정상 VC2008을 써야 하는 나로써는

소스로부터 직접 빌드를 해야 한다.

그런데, 빌드 과정이 내게도 익숙하지 않은지라,

다음 사이트를 참고해서 한단계씩 진행해 나가고,

그 과정을 기록해 보려 한다.

* 참고 사이트 : http://docs.opencv.org/3.0-beta/doc/tutorials/introduction/windows_install/windows_install.html


  • 다음 사이트로부터, 윈도우즈용 OpenCV를 다운로드한다.
    • http://opencv.org/downloads.html
  • 참고 사이트 내용대로, OpenCV를 빌드한다.
    1. 사전 준비 사항 
      • TBB : 병렬 처리를 통해 속도 향상 가능. Intel은 물론 AMD CPU에서도 사용 가능
      • IPP : 멀티 코어 시스템상에서 멀티미디어, 데이터 처리, 통신 등을 빠르게 처리할 수 있도록 최적화해서 제공되는 라이브러리. OpenCV에 이미 포함되어 있으므로, 따로 신경 쓰지 않아도 됨
      • Intel ⓒ IPP Asynchronous C/C++는, 아직 IPP에 포함되지 않는 것 같으므로 건너뜀
      • Eigen : 선형대수를 위한 C++ 라이브러리
      • CUDA는, AMD에 적용할 수 없으므로 건너뜀
      • OpenEXR은, HDR(High Dynamic Range)를 위한 작업에 사용되므로, 건너뜀
      • OpenNI Framework는, Kinect와 같은 장치를 쓸 때 필요하므로, 건너뜀
    2. 빌드를 위해, CMake를 Install한다.(CMake는, 크로스-플랫폼 빌드 도구이다.)
    3. Git 툴을 인스톨한다.(예:msysgit + TurtoiseGit)
    4. 어느 폴더에 다운로드 받을지를 정한 다음(예 : D:\OpenCV), 다음 주소의 내용을 Clone한다
    5. TBB를 다운로드한 다음, 압축 해제 후 특정 폴더(예 : D:\OpenCV/dep)에 넣어둔다.
    6. CMake(cmake-gui) 실행 후, OpenCV 소스폴더를 지정(예 : D:\OpenCV/Source)해 주고, 빌드용 파일이 저장될 폴더를 지정(예 : D:\OpenCV/Builds)해 준다.
    7. Configure 버튼을 누른다. 그러면, 컴파일러를 지정하라는 대화상자가 뜨는데, 적절한 컴파일러(내 경우는 Visual Studio 9 2008)을 선택해 준다.
    8. 빌드 가능한 패키지들이 기본적으로 선택되어진 화면이 나타난다. 여기에 추가할 패키지를 선택하고, 다시 Configure 버튼을 누른다.
    9. 빌드 정보가 부족한 경우, 추가적인 정보를 입력할 수 있게 해당 필드가 빨갛게 하이라이트 되어서 나타난다(내 경우는, TBB의 INCLUDE폴더 경로). 해당 필드를 수동으로 입력해 준 다음, 다시 Configure버튼을 누른다. 이 과정을 빨간색 하이라이트가 나오지 않을 때까지 반복한다.
    10. Generate 버튼을 누르면, 빌드용 파일이 지정된 폴더에 저장된다.
    11. 해당 폴더로 가서, OpenCV.sln파일을 열면 VisualStudio에서 솔루션이 열린다. 이후로는, VisualStudio를 통해 빌드를 진행하면 된다.


반응형
반응형

HD 및 HDR의 이해

HD를 검색하는 중에 HDR이란 단어를 발견하게 되었다.

처음에는 HD와 관련있는 용어인가보다 싶었는데

전혀 그렇지 않을뿐더러, 나름 흥미로운 내용이라

그냥 넘어가기 아쉬워서, 간단하게나마 정리해 보려 한다.


1. HD(High-Definition)

HD는 High-Definition의 약자인데, 이미 대중화된 용어라서

누구나 대략적인 의미는 알고 있을 것이다.

위키백과에 보면, SD(Standard definition, 표준해상도)보다 더 높은 해상도를 의미한다고 나와 있다.

https://ko.wikipedia.org/wiki/고선명_비디오

또한, 다음 링크에는 LG 디스플레이에서 해상도 관련 용어를 풀어쓴 내용이 나온다.

http://blog.lgdisplay.com/2014/07/그림으로-쉽게-알아보는-hd-해상도의-차이

정리하자면, 다음과 같다.

 

 해상도

포맷 

 SD

720 X 480

480p 

 HD

1,280 X 720 

720p 

 FHD

1,920 X 1,080 

1080p, 1080i 

 QHD

3,840 X 2,160 

2160p 

 UHD

4,096 X 2,160 

2160p 


2. HDR(High Dynamic Range Imaging)

위키백과 링크는 다음과 같다.

https://ko.wikipedia.org/wiki/하이_다이나믹_레인지_이미징

보통 디지털 이미지는 8비트 3채널(RGB)로 이미지를 표현한다. 8비트로 표현할 수 있는 정수는 0~255까지이다.

하지만 HDR에서는 표현 범위를 8비트 이상으로 확대하는데, 보통 32비트까지 확대해서 표현한다고 한다.

일반적인 디지털 카메라 역시 8비트 3채널을 이용하여 이미지를 표현하기 때문에,

HDR 이미지를 얻기 위해서는 같은 대상을 서로 다른 노출값으로 찍음 다음,

각각의 노출값 및 이미지들을 가지고 32비트 값을 계산해 낸다.

하지만 일반적인 디스플레이 장치에는 32비트 이미지를 표시할 수 없기 떄문에 다시 8비트 이미지로 변환해야 하는데, 

이 작업을 '톤매핑(tonemapping)'이라고 한다.


한편, HDR 이미지를 만들지 않고 노출값이 다른 이미지들을 전체적으로 잘 보이도록 합성하기도 하는데,

이런 기법은 별도로 'Exposure Fusion'이라고 한다.


OpenCV를 이용하여 HDR이미지를 다루는 방법은,

다음 링크에 잘 설명되어 있다.

http://docs.opencv.org/3.0-last-rst/doc/tutorials/photo/hdr_imaging/hdr_imaging.html#hdrimaging

반응형

'영상처리 프로젝트' 카테고리의 다른 글

OpenCV 3.0 빌드 체험기2  (0) 2015.12.15
OpenCV 3.0 빌드 체험기  (0) 2015.12.10
OpenCV 속도 개선 방법  (2) 2015.12.04
OpenCV를 이용한 Blurring, Sharpening  (0) 2015.08.21
2차 개발 계획  (0) 2015.07.22
반응형

OpenCV 속도 개선 방법

영상처리 작업은 많은 연산을 해야 하기 때문에,

속도를 높일 수 있는 방법을 늘 고민하게 된다.

OpenCV에는 이미 연산 속도를 높이기 위한 기법들이 사용되고 있는데,

특히나 병렬처리(IPP, TBB) 및 GPU 사용 등을 통해 효과를 볼 수 있다.

이와 관련해서, 다음과 같은 블로그들에 참고할 만한 내용이 들어있어서,

여기에 소개하려 한다.


반응형

'영상처리 프로젝트' 카테고리의 다른 글

OpenCV 3.0 빌드 체험기  (0) 2015.12.10
HD 및 HDR의 이해  (0) 2015.12.04
OpenCV를 이용한 Blurring, Sharpening  (0) 2015.08.21
2차 개발 계획  (0) 2015.07.22
1차 개선 완료  (0) 2015.07.21

+ Recent posts