반응형

개발에 참고하라고 보내 준 하드웨어 스펙에

'Mini-ITX Form Factor'라는 단어가 있어서,

이게 뭘까 하고 찾아보았다.

다음 사이트에 자세한 내용이 나와 있다.

Mini-ITX

2001년 VIA Technologies에 의해 개발된 마더보드이며,

17cm * 17cm 사이즈에

저전력 및 냉각팬이 없는 홈씨어터용으로 만들어졌다고 한다.


폼팩터라는 것은, 공학 설계에서 쓰는 용어로,

물리적 치수를 나타낸다.

Mini-ITX는, 17.0cm * 17.0cm을 의미하는 Form Factor용어이다.

다음 사이트에서는, 사이즈별 명칭을 확인할 수 있다.

Computer Form Factor


또한, 다음 사이트는 메인보드에 대한 상식을 잘 설명해 주고 있다.

[컴퓨터 조립 백과사전] 2. 메인보드 제대로 고르는 법

반응형

'프로그래밍' 카테고리의 다른 글

ORACLE에서 UTC(GMT)로의 시간 변환 함수  (0) 2016.04.29
Intel 4rd Quad Core i5-4590  (0) 2016.02.23
Windows Defender 되살리기  (0) 2016.02.23
VisualStudio2008에서의 stdint.h  (2) 2016.02.12
로컬 DNS  (0) 2016.01.06
반응형

무슨 이유인지 몰라도, 사무실에서 쓰고 있는 Windows10 환경의 데스크탑에서

Windows Defender 서비스가 한동안 실행되지 않았다.

서비스를 수동으로 시작하려고도 해 봤지만, 잘 되지 않았다.

그래서 검색을 해 보니, 여러가지 방법이 나와 있었다.

그중 몇가지를 시도해 봐도 잘 되지 않다가,

다음 사이트의 내용대로 시도해 보니

Windows Defender가 다시 실행되었다.

Windows Defender 복구 방법

반응형

'프로그래밍' 카테고리의 다른 글

Intel 4rd Quad Core i5-4590  (0) 2016.02.23
Mini-ITX Form Factor  (0) 2016.02.23
VisualStudio2008에서의 stdint.h  (2) 2016.02.12
로컬 DNS  (0) 2016.01.06
Doxygen에서 C++ 매크로 처리 방법  (0) 2015.11.17
반응형

기존에 쓰던 OpenCV2.1과 OpenCV 3.1의 속도 차이를 비교해 보려 한다.

OpenCV2.1은 기본 빌드였고, OpenCV3.1은 TBB, CUDA 등의 옵션을 추가하였다.

테스트는, 원본 동영상의 처음부터 200번째 프레임까지 

해당 영상 처리를 적용하면서 얼마나 시간이 소요되는지를 측정하여

FPS를 구하였다.

원본 동영상의 사이즈는 640 * 360, Resize는 1280 * 720으로 하였다.

참고로, PC 사양은 다음과 같다.

  • 프로세서 : Intel(R) Core(TM)2 Duo CPU E4600 @ 2.40GHz  2.40 GHz
  • RAM     : 2.00GB
  • 시스템   : 32비트 운영체제, x64 기반 프로세서


결과는 다음과 같다.

비교항목 

OpenCV2.1 

OpenCV3.1(TBB) 

OpenCV3.1(TBB+CUDA) 

기본 

 62.75 FPS

 63.37 FPS

 

Resize 

 15.70 FPS

 18.03 FPS

 

떨림보정 

 8.01 FPS

 28.26 FPS

 

객체추적

 42.66 FPS

 59.26 FPS

 

안개보정

 28.01 FPS

 29.22 FPS

 

윤곽선 강조

 15.84 FPS

 31.45 FPS

 

떨림+객체+안개+윤곽

 5.53 FPS

 15.08 FPS

 

Resize+떨림+객체+안개+윤곽

 1.58 FPS

 4.39 FPS

 


이로써, OpenCV3.1(with TBB)로 전환함으로써 속도 향상이 가능함을 확인하였다고 할 수 있다.

한편 CUDA에 대해서는, 별도의 그래픽카드를 장착하지 않았기 때문에 테스트하지 못했다.

반응형

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

OpenCV속도비교2  (1) 2016.02.29
OpenCV 3.x에서의 OpenCL  (0) 2016.02.25
OpenCV 3.0 빌드 체험기2  (0) 2015.12.15
OpenCV 3.0 빌드 체험기  (0) 2015.12.10
HD 및 HDR의 이해  (0) 2015.12.04
반응형

OpenCV3.1을 다운로드 받아서, CMake를 이용하여 vs2008에 맞게 빌드하려 하니,

다음과 같은 에러가 발생하였다.

fatal error C1083: Cannot open include file: 'stdint.h': No such file or directory

그래서 구글링을 해보니, 다음 블로그에 원인과 해결책이 소개되어 있었다.

내용인 즉슨, stdint.h라는 것이 C99 standard library에 추가되었음에도,

MS쪽에서 VisualStudio 2008(VS 9.0) 버전까지는 이 헤더파일을 포함시키지 않았다는 것이다.

(VisualStudio 2010(VS 10.0) 버전부터는 포함이 되었다고 한다.)

따라서, 빌드를 하기 위해서는 인터넷에서 stdint.h를 다운로드받아서 

VisualStudio 2008이 설치된 위치의 include폴더에 넣어주어야 한다는 것이다.

(VisualStudio2008을 기본 설치하였을 경우에는, 

C:\Program Files\Microsoft Visual Studio 9.0\VC\include

에 넣어주면 된다.)


stdint.h파일을 다운로드 받는 곳은, 위 블로그에 나와 있는데,

다음과 같다.

http://msinttypes.googlecode.com/svn/trunk/stdint.h


파일을 다운로드 받아서 해당 폴더에 복사한 후, 다시 빌드를 하니

이상 없이 빌드가 되었다.

반응형

'프로그래밍' 카테고리의 다른 글

Mini-ITX Form Factor  (0) 2016.02.23
Windows Defender 되살리기  (0) 2016.02.23
로컬 DNS  (0) 2016.01.06
Doxygen에서 C++ 매크로 처리 방법  (0) 2015.11.17
문서 자동화  (0) 2015.11.17
반응형

웹사이트에 접속할 때, 주소창에 www.tistory.com과 같이 주소를 입력하면,

이 주소는 일단 IP 주소로 변환된 다음,

네트워크 상의 해당 주소를 찾아가서 연결을 하게 된다.


여기서, www.tistory.com과 같은 사이트 주소를 도메인이라 하는데,

이러한 도메인을 IP 주소로 바꾸어 주는 역할을 하는 것이 DNS(Domain Name System) 서버이다.


네트워크 설정 창에서 TCP/IP 속성을 확인해 보면,

'자동으로 DNS 주소 받기' 혹은 '다음 DNS 서버 주소 사용' 중 하나에 

체크가 되어 있는 것을 확인할 수 있다.


주소창에 입력한 주소는 여기에 정의된 DNS 서버를 거치면서 IP로 변환되어

해당 사이트를 찾아가게 되는데,

DNS를 참조하는 순서는 다음과 같다.

  1. 로컬 DNS 정보 파일
  2. DNS 서버

즉, 로컬 DNS 정보 파일에 해당 도메인 정보가 있는 경우에는,

DNS서버를 거치지 않고 해당 IP를 찾아 갈 수 있게 된다.


로컬 DNS 정보 파일은 hosts라는 이름의 파일이며,

다음 위치에 존재한다.

  1. Windows
    • C:\Windows\System32\drivers\etc\hosts
  2. Linux
    • /etc/hosts

위의 hosts 파일을 열어서 수정해 주면, 로컬 DNS를 정의할 수 있다. 

형식은, 다음과 같다.

[IP 주소]    [도메인명]

예를 들어, 다음과 같이 입력하면 된다.

180.70.93.117    www.tistory.com


로컬 DNS 설정을 잘못할 경우에는, 

도메인 주소를 치더라도 페이지가 로드되지 않을 수 있다.

하지만 잘만 이용하면, 외부 DNS 서버를 거치지 않고 바로 IP주소를 찾아갈 수 있기 때문에

페이지 로딩 속도가 향상될 수도 있다.

반응형
반응형

OpenCV 3.0 빌드 체험기2

몇번의 시행착오를 거쳐서, 

드디어 빌드에 성공했다.

다음 사이트 내용을 참고하여, Visual C++ 2008 Express Edition용으로 빌드하였다.

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


그러면서 알게 된 몇가지 주의점을 여기에 적어 본다.

  1. CMake에서 ENABLE_SOLUTION_FOLDERS 체크 해제
    • VisualStudion가 Solution Folder를 지원하는 경우에는, 이 항목을 체크하는 것이 좋다. 하지만, VC++ 2008 Express Edition의 경우에는 Solution Folder를 지원하지 않기 때문에, 체크를 해제해야만 했다.
  2. TBB(Threading Building Blocks)버전은 4.3으로
    • TBB의 최신 버전은 4.4이다. 하지만 4.4의 경우, VC 10 이전 버전용 라이브러리가 제공되지 않는다. VC++ 2008은 VC 9이며, VC 9용 라이브러리를 제공하는 TBB 최신 버전은 4.3이다.
  3. std::vector::data의 컴파일 오류 해결
    • VC++ 2008로 빌드하다 보면, 다음과 같은 오류가 발행한다.
      • error C2039: 'data' : is not a member of 'std::vector<_Ty>'
    • 원인은, std::vector::data는 C++ 11부터 추가된 메소드이기 때문이다.
    • 따라서, 에러가 나는 부분은 VC 9에 맞게 바꾸어 주어야 하는데, 구체적으로는 다음과 같다.
      • modules/videoio/src/cap_mjpeg_decoder.cpp의 793번째 행 :
      • m_file_stream.read(result.data(), chunk.m_size);을
      • m_file_stream.read(&result[0], chunk.m_size);으로 변경
  4. 사전에 VS2008SP1 설치
    • 설치 후 빌드를 하다 보면, '__cpuidex'라는 구문 때문에 컴파일 에러가 발생하는 경우가 있다.
    • 이에 대해 검색해 보면, VS2008SP1을 설치해야 한다고 나온다.


위와 같은 내용만 신경 쓰면, 문제 없이 빌드가 진행된다.

반응형

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

OpenCV 3.x에서의 OpenCL  (0) 2016.02.25
OpenCV 속도 비교 테스트 - 2.1 vs 3.1(with TBB)  (0) 2016.02.18
OpenCV 3.0 빌드 체험기  (0) 2015.12.10
HD 및 HDR의 이해  (0) 2015.12.04
OpenCV 속도 개선 방법  (2) 2015.12.04
반응형
  • 높은층 선호하는 사람들이 점점 늘어나는 추세
  • 최고층 살아본 사람들은 다음에도 최고층을 찾음.
  • 하지만, 최고층을 선호하지 않는 사람들도 있어서, 다른 층보다 집이 늦게 빠질 수도 있음
  • 1층은, 1층에 안살아본 사람들이 찾음
  • 층간소음으로 항의 받아본 사람들이나, 저렴한 층 원하는 사람들이 1층 찾음
  • 최근에는 1층을 필로티로 대체하거나, 전용정원 내지는 복층으로 꾸민다거나 하기도 함
  • 최근에는 정남향 아파트는 별로 없고, 남동, 남서 로 짓는다.
  • 아파트는 겨울에 골라야 한다. 겨울에 해가 낮게 뜨기 때문에, 여름에 괜찮더라도 겨울에는 앞동에 그늘질 수 있기 때문이다.
  • 지하철 역세권의 범위 : 1~2km반경(성인 기준 100미터에 1분이라 치면, 걸어서 10~20분 거리까지)


반응형
반응형

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