본문 바로가기

Gpu에서 영상 다루기[1] - OpenCL OpenCL (open computing language) 이용 방법 특징 - 다양한 종류의 Gpu에서 이용가능 - UMat Class 이용 사용 방법 1. Context 생성 ocl::Context context; context.create(ocl::Device::TYPE_GPU) 2. Device(Gpu)와 Context 설정 ocl::Device(context.device(0)); 3. UMat에 Mat Data 설정 Mat mSrc = imread("lena.jpg", IMREAD_GRAYSCALE); UMat src = mSrc.getUMat(ACCESS_READ); 4. OpenCL Enable 상태 설정 ocl::setUseOpenCL(true); 5. OpenCV 처리 함수의 SrcArr(..
Vision Library 문득 영상처리관련 회사들을 조사하다 보았던 우대사항에 존재하던 라이브러리가 떠올라 정리하게 되었다. 총 4가지를 정리해보았으며 4가지 이외에도 존재하는 것으로 알고 있다. 1. OpenCV (open computer vision library) - 이름에서도 보이듯 Open Source 이며 대중적으로 사용이 가능한 library 이다. - 단, Open Source 이지만 extra, contrib module의 경우 일부 사용이 제한된 것도 존재한다. - C++, Python, Java등 다양한 언어와 Window, Linux, Androi, iOS등 다양한 플랫폼을 지원한다. - 지속적으로 업데이트가 진행되고 있으며 다양한 알고리즘을 지원한다. - 최근에는 Machine Learning 관련된 업데..
OpenMP 빠르게 병렬처리를 적용할 일이 있어 정리하게 되었다. 정의 OpenMP(Open Multi-Processing)는 공유 메모리 다중 처리 프로그래밍 API로 C, C++, 포트란 언어와 유닉스 및 마이크로소프트 윈도우 플랫폼을 비롯한 여러 플랫폼을 지원한다. 병렬 프로그래밍의 하이브리드 모델로 작성된 응용 프로그램은 OpenMP와 메시지 전달 인터페이스 (MPI)를 둘 다 사용하거나, 더 투명성 있는 방식으로 비공유 메모리 시스템을 위한 OpenMP 확장을 사용하여 컴퓨터 클러스터 상에서 구동할 수 있다. 주요요소 설정 방법 프로젝트 > 속성 > C/C++ > 언어 > OpenMP 지원 사용법 예시 결과 현재 사용중인 PC의 Cpu 갯수가 11개 이므로 11개의 Thread로 병렬 처리가 되는것을 확인할..
bias-variance tradeoff 데이터에 기반한 Model이 가지는 Error는 3가지로 표현할 수 있다. Error(X) = noise(X) + bias(X) + variance(X) nosie는 Data가 가지는 본질적인 것이므로 irreducible error 라고 표현한다. bias/variance는 Model에 따라 변화하는 것이므로 reducible error라고 표현한다. bias는 평균적으로 우리의 가설이 얼마나 실제 현상과 떨어져 있는지를 나타낸다. 즉, bias가 낮을수록 실제 현상에 유사하며, bias가 높을수록 실제 현상과 멀어진다. bias는 Train Data를 바꿈에 따라서 알고리즘의 평균 정확도가 얼마나 많이 변하는지 보여준다. variance는 얼마나 다양한 현상이 분포되어 있는가를 나타낸다. 즉, var..
ini 정의 INI(Initialization) 파일 포맷은 설정 파일에 대한 de facto 표준이다. 초기 설정에 대한 정보를 모두 명시한 뒤 프로세스 시작 시 파일에 명시된 값으로 초기값 설정 형식 아래와 같이 표기한다. [섹션] [Server] 키 = 키값 IP=127.0.0.1 PORT=21000 ID=admin PW=1234 사용되는 API DWORD GetPrivateProfileString( LPCTSTR lpAppName, //섹션 명 LPCTSTR lpKeyName, // 키 명 LPCTSTR lpDefault, // 키 값이 비어 있는 경우 Default 값 LPTSTR lpReturnedString, // 키 값을 저장할 버퍼 DWORD nSize, // 키 값을 저장할 버퍼의 크기 LPC..
Windows Memory Mapped File (MMF) Window 환경에서 Shared Memory 기능이 필요하여 정리하게 되었다. 정의 메모리 맵 파일(Memory mapped file, MMF)은 운영 체제에서 파일을 다루는 방법중 하나다. 물리 디스크 파일, 장치, 공유 메모리 객체와 같이 운영 체제에서 파일로 다루는 모든 대상에 대해서 사용가능하며, 메모리 맵 파일을 통해 프로세스의 가상 메모리 주소 공간에 파일을 매핑한 뒤 가상 메모리 주소에 직접 접근하는 것으로 파일 읽기/쓰기를 대신한다. 장점 1. 직접적인 파일 입출력이 필요 없음 2. 파일 처리를 위한 추가적인 자료 구조가 필요 없음 3. 전통적인 파일 입출력 Api 보다 속도가 빠름 4. 프로세스간 메모리 공유 가능 단점 1. 파일의 크기(EOF의 위치)를 변경할 수 없음 2. 최적의 파..
Memory Mapped File (MMF) Memory Mapped File (MMF)의 정리는 개념 및 용어를 참고하기 바란다. 구현 방법에 관한 글이다. MMF는 Write하는 부분과 Read하는 부분으로 나뉜다. 먼저 Write하는 부분의 구현 과정은 아래와 같다. 1. 파일의 생성 HANDLE hFile = CreateFile(...) 2. 파일 연결 오브젝트 생성 HANDLE hMapFile = CreateFileMapping(hFile, ...) 3. 가상 메모리에 파일 연결 char * chContext = (char *)MapViewOfFile(hMapFile, ...) 4. 가상 메모리와 파일 연결 해제 UnmapViewOfFile(chContext) 5. 파일 연결 오브젝트 해제 CloseHandle(hMapFile) 1단계는 ..
Console 창 MFC에서도 간단한 출력을 위해 Console 창이 필요한 경우가 있다. 알아본 바로는 3가지 방법이 존재 하지만 1번 방법을 추천한다. 나의 경우에 2,3번 방법은 동작하지 않았다. 1. 미리 컴파일된 헤더에 아래와 같은 선언을 한다. 미리 컴파일된 헤더는 VS버전에 따라 stdafx.h, framework.h로 존재한다. 2. App의 InitInstance에서 AlloConsole()호출 3. 프로젝트 > 속성 > 링커 > 시스템 > 하위 시스템