태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

'Image Processing'에 해당되는 최근 글 20건

  1. 2010/04/05 GPU 프로그래밍을 이용한 실시간 Pre-viz 시스템 개발
  2. 2009/10/13 비주얼 베이직에서 myVision 라이브러리를 사용하는 법
  3. 2009/10/13 VB에서 DLL 함수를 호출하는 법
  4. 2008/05/22 [ColorEye] Pan, Tilt 유닛을 결합한 특정 색상 추적 시스템
  5. 2008/04/03 Smart-I를 이용한 특정 색상 추적 시스템 Color-Eye (2)
  6. 2008/03/13 myVision USB를 이용한 간단한 Augmented Reality 실험 - I
  7. 2008/02/18 Smart-I V1.0 소개
  8. 2008/02/16 myVision PCI의 스테레오 사용 예 (1)
  9. 2008/02/14 myVision USB에서 OpenCV 사용하기 (2)
  10. 2008/02/12 Robaa-Checker: 2D 바코드 인쇄 품질 검사 장치
  11. 2008/02/10 타일드 디스플레이 기술을 이용한 가상 현실 기반 몰입형 기술 교육 시스템 개발
  12. 2008/01/22 MRcode Specification V1.3
  13. 2008/01/20 예제 프로그램
  14. 2008/01/20 라이브러리와 드라이버 파일 (1)
  15. 2008/01/20 입출력 단자 설명
  16. 2008/01/20 myVision USB 종류 (7)
  17. 2008/01/20 myVision USB란?
  18. 2008/01/20 myVision USB User's Guide V2.41 (2)
  19. 2008/01/20 myVision USB Library Reference Guide V2.41
  20. 2008/01/20 myVision USB (2)

GPU 프로그래밍을 이용한 실시간 Pre-viz 시스템 개발

Projects/2009 2010/04/05 00:30
의뢰처

ETRI, 한국전자통신연구원

목표

PC 1대의 CPU에서 비실시간으로 동작하던 Augmented Reality 프로그램을 GPU로 포팅하여 실시간으로 동작하도록 구현한다.

수행기간

2009.2~2009.4


ETRI 디지털콘텐츠단 디지털액터연구팀으로부터 의뢰를 받은 이 과제는 영화제작 과정 중에서 가상의 CG 물체를 촬영한 영상에 합성하는 작업을 실시간으로 촬영과 동시에 합성하도록 하는 것이 목표입니다. 현재는 촬영과정과 합성과정이 분리되어 촬영을 마친 후에 오프라인에서 합성하는 과정을 하고 있습니다. 가상의 CG물체를 합성하기 위해서는 카메라 트랙킹이라는 과정이 필수적인데 연산량이 많아서 CPU만으로 실시간으로 처리하는 것이 어려웠습니다. 그래서 본 과제에서는 GPU를 이용해서 연산량이 많은 부분을 GPU로 포팅하여 고속으로 처리함으로써 실시간 동작이 가능하도록 하였습니다.
사용자 삽입 이미지

전체 시스템 구조는 아래와 같습니다.

사용자 삽입 이미지
카메라로부터 입력된 영상은 카메라 트랙킹 장치에서 카메라의 자세를 추정하고 합성결과 디스플레이 장치는 추정된 카메라 자세로부터 CG물체의 자세를 정하여 합성하게 됩니다. 여기서 GPU로 포팅한 카메라 트랙킹 장치의 블록다이어그램은 아래와 같습니다.
사용자 삽입 이미지
3개의 중요한 블럭으로 구성되어 있고 feature를 찾고 추적에 사용될 feature를 등록하는 블럭과 EKF(Extended Kalman Filter)를 이용해서 카메라의 자세를 추정하는 블럭으로 되어 있습니다.

수행 결과
1024x768 영상 1 frame에 소요되는 시간
- CPU : Intel Core2Quad G66-00 2.4GHz
- 2GB DDR2 RAM
- GPU : Nvidia Geforce GTX295
사용자 삽입 이미지
CPU에서 동작하던 코드를 GPU로 옮겨서 60배정도의 속도 향상이 있었습니다. 일반적인 코드의 최적화로는 도저히 상상할 수 없는 속도 향상을 경험할 수 있었습니다. 물론 알고리즘의 구조에 따라 향상 정도는 차이가 있겠습니다만, 영상 처리와 같이 일정 크기의 영상에 특정 mask pattern을 convolution하는 구조라면 GPU에서 대폭적인 성능 향상이 있습니다.

아래 동영상은 실제 CPU와 GPU를 이용해서 각각 트랙킹을 수행하는 것을 동영상으로 촬영한 것입니다. 위쪽 CPU로 tracking 하는 경우는 연산 속도가 따라오질 못해 30frame으로 계산하지 못해 frame drop이 심합니다. 반면 아래쪽 동영상은 GPU를 이용한 경우로 실시간으로 feature tracking이 이뤄지는 모습을 확인할 수 있습니다.


- CPU를 이용하여 트랙킹을 수행하는 영상


 
- GPU를 이용하여 트랙킹을 수행하는 영상


'Projects > 2009' 카테고리의 다른 글

u-TSN 모듈 개발 과제  (1) 2010/04/14
GPU 프로그래밍을 이용한 실시간 Pre-viz 시스템 개발  (0) 2010/04/05
S-Bridge 프로젝트  (2) 2010/04/02
Trackback 0 : Comment 0

비주얼 베이직에서 myVision 라이브러리를 사용하는 법

Image Processing/myVision USB 2009/10/13 14:32

기본적으로 비주얼 베이직에서는 DLL에 있는 함수를 호출할 수 있습니다.

하지만 myVision 라이브러리는 "c" 형태의 함수 호출을 지원하고

비주얼 베이직은 "파스칼" 형태의 함수 호출을 지원하기 때문에

래핑 함수(wrapping function)를 만들어 이부분을 변경할 필요가 있습니다.

사용자 삽입 이미지



즉, 아래와 같이 "파스칼" 형태의 함수 호출을 지원하는 별도의 MVULibVB.dll을 만들어

MVULibVB.dll에서 "c" 형태의 MVULib.dll의 함수를 호출하도록 하면 됩니다.


#include "MyVision.h"

#pragma comment(lib, "MVULib.lib")


extern "C" __declspec(dllexport) HDIG __stdcall DigAlloc(char* DigNum)

{

       return digAlloc(DigNum);

}

...


위의 함수에서 __stdcall이 파스칼 형태의 함수라는 것을 나타냅니다.

digAlloc()은 MVULib.dll에 있는 함수로 "c" 형태의 함수입니다.


따라서 위와 같이 DLL 함수를 만들면, 비주얼 베이직에서 DigAlloc() 함수를 호출할 수 있습니다.

MVULibVB.dll에 있는 DigAlloc() 함수를 비주얼 베이직에서 사용하기 위해서는

비주얼 베이직에서 아래와 같이 선언해야 합니다.


Public Declare Function DigAlloc Lib "MVULibVB.dll" (ByVal Dev As String) As Long


위와 같이 선언하면 최종적으로 비주얼 베이직에서 MVULibVB.dll의 DigAlloc() 함수를 거쳐

myVision 라이브러리의 digAlloc() 함수를 호출할 수 있게 됩니다.

이런 방식으로 myVision 라이브러리에 있는 모든 함수를 비주얼 베이직에서

사용하실 수 있습니다.


하지만 언어적 특징 때문에 사용할 수 없는 부분도 있습니다.

bufGetPtr2D() 함수와 같이 버퍼의 포인터를 리턴하는 함수의 경우 비주얼 베이직에서는

포인터를 사용할 수 없기 때문에 버퍼의 포인터를 얻어오는 것이 무의미합니다.

이를 위하여 MVLibVB.dll에서 BufCopyBuf2Array(), BufCopyArray2Buf() 함수를

별도로 만들었습니다.

BufCopyBuf2Array(), BufCopyArray2Buf() 함수는 비주얼 베이직의 배열과

myVision 라이브러리 버퍼의 데이터를 상호간에 복사하기 위한 함수입니다.


extern "C" __declspec(dllexport) void  __stdcall BufCopyBuf2Array(HBUF hBuf, void *Array, int Length)

{

       void **buf = (void **)bufGetPtr2D(hBuf);

       memcpy(Array, buf[0], Length);

}


extern "C" __declspec(dllexport) void  __stdcall BufCopyArray2Buf(HBUF hBuf, void *Array, int Length)

{

       void **buf = (void **)bufGetPtr2D(hBuf);

       memcpy(buf[0], Array, Length);

}


비주얼 베이직에서 먼저 영상정보를 저장할 배열을 선언한 뒤

BufCopyBuf2Array() 함수를 호출하면 비주얼 베이직 배열에 버퍼의 내용을 얻어 올 수 있습니다.

반대로 BufCopyArray2Buf()를 이용하연 비주얼 베이직 배열의 내용을 버퍼에 복사할 수 있습니다.

(자세한 사용법은 첨부된 예제 코드 중 TestBuffer를 보시면 됩니다.)


Const g_Width As Long = 640

Const g_Height As Long = 480

Dim Buf(g_Width - 1, g_Height - 1) As Long


' 버퍼를 할당한다.

hBuf = BufAlloc(g_Width, g_Height, MV_RGB32)        

' 버퍼의 내용을 배열로 복사한다.

Call BufCopyBuf2Array(hBuf, Buf(0, 0), g_Width * g_Height * 4)


즉, 위와 같은 방법으로 적절히 이용하시면 비주얼 베이직에서 myVision 라이브러리를

사용하시는데 문제가 없을 것입니다.


예제 코드 설명


TestGrab

기장 기본적인 프로그램으로 myVision 라이브러리를 이용하여 카메라로부터 영상을

캡쳐하는 프로그램입니다. Grab 버튼을 누르시면 한장의 영상을 카메라로부터 캡쳐합니다.

GrabConti 버튼을 누르면 연속적으로 영상을 캡쳐하며 Halt 버튼을 누르면 정지합니다.

사용자 삽입 이미지



TestBuffer

TestBuffer는 캡쳐된 영상의 버퍼 사용법을 테스트하기 위한 프로그램입니다.

Grab 버튼을 눌러 영상을 캡쳐한 후 마우스를 영상위에 놓으면 놓여진 위치의 RGB 값이 표시됩니다.

Write 버튼을 누르면 버퍼에 청색박스를 그린 후 출력시킵니다.

사용자 삽입 이미지


 

예제 코드
Trackback 0 : Comment 0

VB에서 DLL 함수를 호출하는 법

Image Processing/myVision USB 2009/10/13 13:55

VB에서는 기본적으로 DLL에 있는 함수들을 호출할 수 있습니다.

물론, DLL에 있는 함수들은 VB에서 호출할 수 있도록 몇가지 규칙에 맞게 작성되어야 합니다.


VC++로 간단히 DLL함수를 만들어 VB에서 DLL 함수를 호출하는 법을 살펴보도록 하지요.

먼저, DLL로 간단한 함수를 만듭니다. 그냥 간단하게 덧셈 함수를 만들어 보지요.

함수 이름은 vb_add()로 합니다. 입력으로 두 값(int)을 받아서 더한 값을 리턴합니다.


int vb_add(int a, int b)

{

       return (a+b);

}


vb_add() 함수를 구현하기 위하여 먼저, VC++에서 DLL 프로젝트를 만듭니다.

프로젝트 이름은 VB에서 사용하는 라이브러리니깐 Lib4VB로 하지요.

사용자 삽입 이미지


DLL 종류는 아래와 같이 Regular DLL을 선택합니다.

사용자 삽입 이미지


프로젝트가 생성되면 Lib4VB.cpp 파일에 아래와 같이 vb_add() 함수를 만듭니다.

사용자 삽입 이미지

이제 컴파일하면 DLL 파일이 만들어지지만 컴파일하기 전에 해야할 일이 한가지 더 있습니다.

Lib4VB 디렉토리를 보시면 Lib4VB.def이란 파일이 있을 것입니다.

사용자 삽입 이미지



이 파일에 우리가 만든 함수의 이름을 적어 주어야 합니다.

이부분을 적지 않으면 VB에서 DLL 안의 함수를 찾지 못합니다.

사용자 삽입 이미지


자, 이제 컴파일해 보지요. 별다른 잘못이 없으면 Lib4VB.dll이 만들어질 것입니다.

이렇게 하면 DLL 함수를 만드는 일은 모두 끝이 납니다.


이제 Lib4VB.dll을 사용할 VB 프로그램을 만들어 봅시다.

사용자 삽입 이미지


프로젝트의 이름은 TestDLL이라고 합시다.

프로젝트를 생성하였으면 폼에서 간단히 Add라는 버튼을 만듭니다.

사용자 삽입 이미지


DLL에 있는 vb_add() 함수를 사용하기 위해서는 VB에 vb_add() 함수에 대하여 알려 주어야 합니다.

아래와 같이 알려 주도록 합시다.  아래 문장을 보면 함수의 원형과 함수가 어떤 DLL에 들어있는지가 나와 있습니다.


Private Declare Function vb_add Lib "Lib4VB.dll" (ByVal a As Long, ByVal b As Long) As Long

사용자 삽입 이미지


자, 이제 기다리던 실행 버튼을 누를 시간이 왔습니다. 실행 버튼을 눌러 보지요....

앗, 그런데, 에러가 나오네요... 단순하게 Lib4VB.dll을 찾지 못한다는 에러입니다.

사용자 삽입 이미지


앞에서 만든 Lib4VB.dll을 VB 프로젝트 디렉토리로 복사해 줍니다.

사용자 삽입 이미지


다시 프로그램을 실행시켜 Add 버튼을 눌러 봅시다. 아래와 같이 정상적으로 결과가 나오네요

사용자 삽입 이미지




이것으로 간단히 DLL에서 만든 함수를 VB에서 호출하는 방법을 살펴 보았습니다.


이제 조금 더 자세하게 살펴 보도록 하지요.

기본적으로 VB에서는 __stdcall 형태의 함수 호출을 지원합니다.

함수 호출방식(calling convention - 인터넷 찾아보면 자세히 나옵니다. ^^;)은 사용 언어마다 조금씩 다른데

일반적으로 파스칼이나 윈도우 API 함수들은 __stdcall 방식을 사용하고
c에서는 기본적으로 __cdecl 방식을 사용합니다.

그래서 일반적으로 VC++로 그냥 DLL을 만들면 VB에서는 호출할 수가 없는 것이죠.

VC++에서 그냥 DLL을 만들고 VB에서 함수를 호출하면 아래와 같은 메시지가 나옵니다.


사용자 삽입 이미지


함수 호출 형식을 맞추기 위하여 사용하는 문장이 __stdcall이란 문장입니다.

DLL에 있는 vb_add() 함수를 보면 앞에 __stdcall이라고 적혀 있지요?

이렇게 적으면 vb_add() 함수가 __stdcall 형태로 함수 호출이 된다는 것을 의미합니다.

윈도우 API들도 __stdcall 형태의 함수 호출을 지원하기 때문에

헤더파일(windef.h, winuser.h)들을 찾아보면 아래와 같이 적혀 있습니다.


#define WINAPI __stdcall

BOOL WINAPI SetWindowTextA(...)


그래서 VB에서 윈도우의 API 함수들을 불러 쓸 수 있는 것입니다.


그런데, 재미있게도 VB에서 인터프리터 방식으로 동작시키지 않고 exe 형태의 실행 파일로 만들어

동작시키면 DLL 함수가 __stdcall 이건 __cdecl 건 모두 잘 동작합니다.

즉, Lib4VB.dll을 만들 때 함수 앞에 __stdcall을 적어 주지 않았더라도

TestDLL 프로젝트를 TestDLL.exe로 만들어 동작시키면 vb_add() 함수를 호출할 수 있다는 것이지요.


VB에서 VC++로 만든 DLL을 호출할 때 주의해야 할 또 다른 점 중 하나는 데이터 타입입니다.

VB에서는 int가 2바이트인데 반하여 VC에서는 int가 4바이트입니다.

따라서 VC++에서 int로 입출력 변수를 선언하였다면 VB에서는 Long 타입을 사용해야 합니다.


VC++      : int vb_add(int a, int b);

VB         : vb_add (ByVal a As Long, ByVal b As Long) As Long


VC++에서 포인터를 사용하였다면 VB에서는 ByVal 대신 ByRef를 사용하면 됩니다.

ByVal를 값을 넘겨주고, ByRef는 주소를 넘겨주는 방식입니다.


VC++      : int vb_ptr(int *a);

VB         : vb_ptr (ByRef a As Long) As Long


문자열을 전달할 경우에는 VC++에서는 char *를 사용하고 VB에서는 String을 사용하면 됩니다.

VC++에서 문자열이 포인터라고 해서 VB에서 ByRef를 사용하면 안됩니다. 그냥 String 타입의 ByVal를 사용하면

VB에서 알아서 변환하여 넘겨줍니다.


VC++      : void vb_string(char *text);

VB         : vb_string (ByVal text As String)


VB에 있는 배열을 VC++로 전달하기 위해서는 ByRef를 사용해야 합니다.

단, 배열의 첫 인자를 입력 변수로 넣어 주어야 합니다.

ByRef이기 때문에 첫 인자의 주소가 vb_array() 함수로 넘어가게 됩니다.


VC++      : void vb_array(int *data);

VB         : vb_array (ByRef data As Long)


    Dim buffer(10) As Long

   

    Call vb_array(buffer(0), ...)


자세한 구현 내용은 첨부 파일을 참조하시면 됩니다.


그럼, 좋은 결과가 있기를 바랍니다.~


소스코드


Trackback 0 : Comment 0

[ColorEye] Pan, Tilt 유닛을 결합한 특정 색상 추적 시스템

Image Processing/Smart-I V1.0 2008/05/22 20:53
지난 번 ColorEye 시스템에 Pan-tilt 유닛을 조합한 시스템이 미국 피츠버그에서 열린 RoboBusiness에서 큰 인기를 끌었습니다. 당시 시스템에는 외산 pan-tilt 유닛을 사용했었는데, 무겁기도 하고 가격도 고가인데다가 결정적으로 국내에서 취급하는 업체가 없어졌습니다.

데모 후에 유사 시스템 제작을 의뢰를 받고 자체적으로 pan-tilt 유닛을 만들었습니다.

소개하는 데모 시스템은 Smart-I V1.0 플랫폼을 이용하여 특정 색상의 위치를 영상 좌표계에서 계산합니다. 찾아낸 결과는 UART를 통해 좌표와 크기를 전달하고, 이 정보를 myCortex-LM308 보드에서 받아 간단한 연산을 통해 Pan-Tilt 유닛을 제어합니다. Smart-I에서 직접 Pan-Tilt를 제어할 수도 있습니다만, 추후 여러 가지 기능을 확장하기 위해서는 Smart-I V1.0에서 직접 프로그래밍하는 것 보다는 별도의 Cortex-M3 보드에서 하는 편이 훨씬 쉽고 편리하기에 분리하였습니다. 당연히 이 시스템은 PC의 도움 없이 stand-alone으로 동작합니다. 어댑터로 연결을 하면 바로 동작하도록 프로그래밍 해 두었습니다. 추적 색상을 바꾸고 싶은 경우 준비된 USB 포트를 통해 PC와 연결하고, 전송된 영상에서 추적을 원하는 색상을 설정하면 됩니다.
사용자 삽입 이미지

동영상으로 전체 시스템의 동작을 보시기 바랍니다.

Trackback 0 : Comment 0

Smart-I를 이용한 특정 색상 추적 시스템 Color-Eye

Image Processing/Smart-I V1.0 2008/04/03 05:02
Smart-I 플랫폼을 기반으로 사용자가 지정한 특정 색상을 찾는 펌웨어를 올린 Color-Eye 시스템이 완성되었습니다. 조명 변화에 강인하며, 실시간(30fps)의 속도로 색상을 찾습니다.

추적 과정을 보다 효율적으로 보여드리기 위해 pan-tilt 시스템과 연동하여 Smart-I에서 Pan-Tilt 시스템을 직접 제어하여 움직이도록 하였습니다. 기존 PC 기반 색상 추적 시스템에 비해 전체 시스템 부피가 획기적으로 줄어들고, 유지 보수가 편리하며, 가격이 매우 저렴하다는 장점이 있습니다.
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지





Trackback 0 : Comments 2

myVision USB를 이용한 간단한 Augmented Reality 실험 - I

Image Processing/myVision USB 2008/03/13 17:38
사용자 삽입 이미지
최근 3D 그래픽스 분야의 연구자들이 많은 관심을 보이고 있는 분야 중에 하나가 증강현실(augmented reality)입니다. 카메라로 들어온 실제 영상에 가상의 물체를 접합하여 실제 환경에 가상의 물체가 있는것처럼 보이게 만드는 기술입니다. 최근 선전에도 이러한 기법들이 널리 사용되고 있고, 그 응용 범위가 무궁무진하다보니 많은 연구자들이 관심을 가지지 않을 수 없는 상황입니다.
위드로봇에서도 기왕 가지고 있는 여러 기술을 간단히 엮으면 이러한 시스템을 만들어 낼 수 있으므로 짬짬이 구현을 해 보고 있습니다. 오늘 소개하는 동영상은 그 첫번째로 조그마한 박스 표면에 가상의 동영상을 출력하는 시스템입니다.
myVision USB를 이용하면 특정 색상의 물체 위치를 빠르게 찾아낼 수 있으며 이로부터 동영상을 투영할 좌표값을 얻은 후 동영상을 뿌립니다. 간단한 데모니 동영상을 보시면 바로 이해하실 수 있을 겁니다.
동영상은 모니터를 촬영하였습니다.



이 후로도 진행된 내용들이 많이 있으며 시간이 허락하는대로 홈페이지에 공개하도록 하겠습니다.
Trackback 0 : Comment 0

Smart-I V1.0 소개

Image Processing/Smart-I V1.0 2008/02/18 04:49

Smart-I 소개

Smart-I는 CMOS 카메라에 프로세서를 장착하여 필요한 영상 처리를 카메라 레벨에서 수행할 수 있는 임베디드 영상 처리 장치입니다. 컬러 스페이스 변환, 화이트 밸런스, 가우시안 스무딩(Gaussian smoothing)과 같은 프리-프로세싱(pre-processing)에서부터 엣지(edge) 검출, 이진화(thresholding), 특정 색상 추출 및 추적 등 다양한 영상 처리를 임베디드 시스템에서 바로 처리할 수 있어 다양한 시스템에 적용해 볼 수 있습니다.

Smart-I 시리즈는 다양한 프로세서와 추가 옵션 기능을 가진 여러 모델을 준비하여 주어진 환경에 최적의 시스템을 선정할 수 있도록 제품군을 추가하고 있습니다.

Smart-I V1.0 사양

Types

Contents

Processor

S3C2440-300 (ARM920T)

Flash

512KB or 2MB NOR flash

RAM

32MB or 64MB PC100 SDRAM

Interface ports

USB 1.1 device 1 port, UART(RX,TX) 1 port

UART(RX,TX, CTS, RTS) 1 port

SPI 2 ports, PWM 4ch, JTAG port

ITU 656 format Camera interface (8bits)

Digital IO 1 port for the light control board(8pin, multiplexed)

Camera

1.3M pixel CMOS camera with white LED

Operating Voltage

4.5V ~ 14V

Dimension

55mm x 55mm without support holes

Options

RTC battery board, LED light Control board

Camera

Types

Contents

Dimension

9.1 x 27.45 x 6.8 (W x L x H)

Responsibility

1.0V/lux-sec (550nm)

Optical format

1/3 inch

Active imager size

4.6mm(H) x 3.7mm(V) - 5.9mm(diagonal)

Active pixels

1280 x 1024 (SXGA)

Pixel size

3.6um x 3.6um

Shutter type

Electrical Rolling Shutter

Max data rate

54MHz

Frame rate

SXGA(1280 x 1024) - 15fps

VGA(640 x 480) - 30fps

Lens

3P, F#: 2.8, FOV: 66 deg(+-5)

Smart-I V.10 에서는 1.3M급 CMOS 카메라를 바로 장착할 수 있는 커넥터를 가지고 있습니다. 또한 도터 보드(daughter board)를 장착하면 다른 모델의 CMOS 카메라 및 NTSC 카메라도 장착할 수 있도록 설계되어 있습니다.

Trackback 0 : Comment 0

myVision PCI의 스테레오 사용 예

Image Processing/myVision PCI 2008/02/16 08:33
사용자 삽입 이미지

NTSC 카메라 두 대와 pan-tilt 그리고 myVision PCI 두 대를 이용해 실시간 스테레오 영상 분석을 통해 움직이는 물체를 추적하는 시스템입니다. 2000년도에 구현한 시스템으로 visual servoing 기법에 관한 실험에 많이 사용되었습니다. 지금은 myVision USB를 사용하면 훨씬 더 간편하게 시스템을 구성할 수 있겠지요. 조만간 저렴한 pan-tilt 유닛도 만들어 제공할 계획입니다. 아래 동영상으로 동작을 감상해 보시기 바랍니다.


'Image Processing > myVision PCI' 카테고리의 다른 글

myVision PCI의 스테레오 사용 예  (1) 2008/02/16
Trackback 0 : Comment 1

myVision USB에서 OpenCV 사용하기

Image Processing/myVision USB 2008/02/14 15:43
myVision USB는 Twain 드라이버 제공으로 OpenCV에서 별다른 조작 없이 바로 사용하실 수 있습니다. 대신 myVision USB에서 제공하는 채널 변환, 컬러 스페이스 변환 등의 기능은 사용하실 수 없습니다. 영상 입력은 Ch1(붉은색) RCA 단자만 지원합니다.

NTSC 카메라를 myVision USB의 Ch1에 연결한 후 OpenCV의 예제를 실행하면 바로 동작합니다. 아래 동영상은 openCV의 CamShift 예제를 실행한 경우입니다. LG AH930 NTSC 카메라의 영상을 myVision USB를 통해 PC와 USB를 연결하여 영상을 획득했습니다. 노란색 안경 닦을 때 사용하는 수건을 추적하는 동영상입니다. 초기 화면에서 추적할 색상을 지정하면 해당 컬러가 있는 위치를 붉은색 타원으로 표시합니다.


Trackback 0 : Comments 2

Robaa-Checker: 2D 바코드 인쇄 품질 검사 장치

Projects/2006 2008/02/12 16:43

MRcode

MRcode란 Withrobot Lab.에서 설계, 제안한 2D 바코드 심벌로 이동 중인 물체에 부착된 코드를 오류 없이 읽어야 하는 환경에 최적화된 바코드입니다. 한화종합화학에서 생산하는 내비게이션 바닥재 로바(Robaa)에 사용하는 MRcode는 V 0.5이며, 저장 가능한 실제 데이터 용량은 13비트 총 8196개의 심벌을 생성할 수 있습니다. 심벌이 여러 가지 오염원에 의해 에러가 발생한 경우 자체 내에 정정 기능을 가지고 있으며, 에러 정정 범위는 그룹 단위로 4 니블 (nibble)까지 가능합니다. 즉, 4 니블에 해당하는 데이터가 손실되어도 원래 기록되어 있는 데이터를 복원하는 것이 가능합니다.

MRcode V0.5

MRcode 심벌 내에 데이터를 구성하는 최소 단위는 엘리먼트(element)로 MRcode V0.5의 엘리먼트는 가로, 세로가 동일한 정사각형 형태를 가지고 있습니다. 가로 길이를 X 디멘전(Xdim), 세로 길이를 Y 디멘전(Ydim)이라고 명하며 단위는 mm 입니다. 네 귀퉁이에 있는 9개의 엘리먼트에 해당하는 크기를 가진 검은색 박스는 파인딩 패턴(finding pattern)이라고 부르며, MRcode의 위치와 방향을 검출하기 위해 사용됩니다. 네 개의 파인딩 패턴 중 중앙에 표시가 있는 패턴을 오리진 패턴(origin pattern)이라고 부르며, 이 점을 심벌의 원점으로 사용합니다.

MRcode 심벌의 엘리먼트와 파인딩 패턴

Robaa-checker

MRcode를 양산품에 적용할 때 MRcode 인쇄품질이 MRreader에서 원활하게 판독하기 위한 기준을 만족하는지 판별해야 할 필요가 있습니다. 한화종합화학의 내비게이션 마루 바닥재 로바(Robaa)에 적용한 MRcode의 인쇄 품질 상태를 실시간으로 검사하는 장치를 Robaa-checker라고 하며, 마루를 이송하는 컨베이어와 UV 광원, 카메라 및 영상 처리를 담당하는 중앙 제어기 등으로 구성되어 있습니다.

Robaa-checker의 제작 목적

내비게이션 바닥재 로바에 인쇄되어 있는 MRcode 심벌은 일반 주거 상태에서 육안으로는 보이지 않는 UV 형광 잉크로 마루 바닥재에 인쇄됩니다. MRreader는 UV 램프로 MRcode 심벌을 발광시켜 이를 카메라로 영상 취득한 후, myVision USB로 PC에 전달하여 영상 처리를 통해 로봇의 현재 위치를 파악하도록 되어 있습니다. Robaa-Checker는 로바 바닥재에 인쇄된 MRcode 심벌의 인쇄 상태가 MRreader에서 판독하는데 문제가 없는지를 판별함과 동시에, 현재 인쇄 상태를 통계적으로 분석하여 품질관리의 기초 데이터를 제공하는데 그 사용 목적이 있습니다.

MRreader에서 판독하는데 문제가 없는지를 판별하기 위해서 Robaa-Checker는 보다 엄격히 관리되는 광원으로 반복적으로 디코딩을 수행함과 동시에 각 엘리먼트의 밝기값과 크기를 함께 조사하여 그 결과를 통계적으로 판별하는 방식을 사용합니다. 따라서 Robaa-Checker에서 양품의 판정을 받은 바닥재는 MRreader의 원활한 동작을 보장해 주며, 이는 이를 이용한 로봇 시스템의 정상 동작을 보장하게 됩니다.

인쇄 품질에 대한 통계 데이터 취득을 위해 각 심벌의 잉크의 밝기 분포 및 바닥면의 밝기분포, 엘리먼트의 크기에 대한 측정을 수행하여, 생산된 제품의 단순한 양품, 불량품의 판정뿐만 아니라 생산 품질을 관리하는 기능을 제공하게 됩니다.

사양 요약

  • 검사 속도:
    • 최대 검사 속도: 분당 27장의 900mm 합판 마루 (컨베이어 이송 속도: 40cm/s)
    • 권장 검사 속도: 분당 12장의 900mm 합판 마루 (컨베이어 이송 속도: 18cm/s)
  • 검사 수종: 합판 마루(900x75), 원목 마루(600x75)
  • 측정 내역엘리먼트 크기 및 밝기값의 균일도
    • 심벌의 판독 여부 및 에러 비트
    • 인쇄 품질
  • 제어 장치
    • Pentium IV Notebook with Windows XP operating system
  • 이송 장치
    • 속도 조절 장치를 가진 벨트 컨베이어
    • 소비 전력: 90W@220V 단상
  • 광원부
    • 30W의 UVA reflector lamp
    • 간접 조명을 위한 반사갓 내장
    • UV 검출 장치로 광원 상태 모니터링
    • 소비 전력: 30W@220V 단상
  • 출력 장치
    • 동작 제어용 15인치 LCD 모니터(카메라 영상 출력 및 기타 파라미터 조절)
    • 메시지 출력용 17인치 LCD 모니터
    • 스피커 (양품, 불량품을 소리로 알려줌)
    • 소비 전력: 300W@220V 단상
  • 입력 장치
    • 마우스, 키보드

외형 치수

이송 장치 수치

Robaa checker 외형 모습

인터페이스 화면

인터페이스 화면

디버그 화면

관련 페이지

'Projects > 2006' 카테고리의 다른 글

Robaa-Checker: 2D 바코드 인쇄 품질 검사 장치  (0) 2008/02/12
Trackback 0 : Comment 0

타일드 디스플레이 기술을 이용한 가상 현실 기반 몰입형 기술 교육 시스템 개발

Projects/2007 2008/02/10 05:31
  • 연구 목적
    • 여러 대의 XGA 해상도 프로젝터 영상을 결합하여 인간의 시야각을 채울 수 있는 하나의 고해상도 영상처럼 보이는 타일드 디스플레이 기법을 활용하여 가상 현실 기반 몰입형 시스템을 제작합니다.
    • 각 프로젝터의 출력 영상간의 연결 이음매가 두드러지지 않도록 심리스(seamless) 기법을 적용하여 관찰자의 높은 몰입감을 유지하도록 합니다.
    • 한 대의 PC에서 모든 작업을 수행할 수 있도록 시스템을 최적화하여 저가 시스템을 구축합니다.
    • 반도체 CMOS 제조 공정을 가상 현실에 구현하여 학습자의 이해를 돕는 교육용 컨텐츠를 구현합니다.
  • 연구 기간
    • 2007.3 ~ 2008.2: 과제 기간 4년 중 첫 해
  • 시스템 구성
    • 스크린: 굴곡형 스크린으로 한 면이 183cm x 137cm의 크기이며 가로 4면, 세로 2면으로 총 8면이 하나의 스크린을 구성합니다. 최대 해상도는 4096 x 1536 픽셀이며, 유효 해상도는 3200x 1200 픽셀입니다.

    • 프로젝터 배치: 천정에 4대, 바닥에 4대 배치하며 렌즈 쉬프트 기능을 이용하여 대강 배치한 후 스크린과 프로젝션 영상을 손쉽게 일치시킬 수 있습니다.

    • 8ch 리얼타임 랜더링 시스템: 1대의 PC에 2장의 그래픽 카드를 연결하고, 영상 분배기를 통해 총 8대의 프로젝트와 연결합니다. 한 대의 그래픽 카드에서는 2048 x 768 해상도의 영상을 실시간 랜더링합니다.

  • 캘리브레이션
    • 캘리브레이션 수행 전에는 아래 사진과 같이 영상이 뒤틀려있습니다.

    • 기하학적인 보정 및 연결부분의 컬러 변화를 줄이기 위해 색상 보정이 필요하며 이를 캘리브레이션이라고 합니다. 아래 그림과 같이 검은색 실선으로 표시된 뒤틀어진 영상을 주황색 실선 부분처럼 만드는 것이 목표입니다. 이를 위해 각 영상 부분을 삼각형의 최소 단위로 분할한 후 각 삼각형의 변환 식을 찾는 방식으로 구현하였습니다.

  • 구현
    • VSI(Virtual Silicon Island): 구현된 시스템을 이용하여 반도체 교육이 진행됩니다. 이를 위해 가상 반도체 섬(VSI)를 구현하였습니다. 섬에는 여러 건물이 있고, 각 건물에서는 반도체 제조 공정 교육을 참관할 수 있도록 되어 있습니다. 현재는 CMOS 제조 공정 교육 컨텐츠가 제작되었으며, 추후 플래시, 메모리 등의 제조 공정 교육 컨텐츠가 제작될 예정입니다. 아래 사진은 VSI의 전경입니다. 섬 중앙에 VSI 표지석이 보이고, 주변에 반도체 교육동이 배치되어 있습니다.

      반도체 교육동으로 진입하면 여러 반도체 제조 공정을 학습할 수 있습니다. 타일드 디스플레이의 장점임 넓은 스크린을 이용하여 제조 공정에 사용되는 마스크와 제조 공정 및 다음 제조 공정을 한 화면에 펼쳐놓고 학습할 수 있습니다.

  • 동영상



  • 관련 논문           



Trackback 0 : Comment 0

MRcode Specification V1.3

Technical Reports 2008/01/22 13:43
Withrobot에서 제안하여 사용하고 있는 2D 바코드 심볼 MRcode의 스펙입니다.

V0.5, V0.6 및 V1.1의 사양을 파악할 수 있습니다.


사용자 삽입 이미지

MRcode V0.5(위)와 V0.6(아래) 모습


Trackback 0 : Comment 0

예제 프로그램

Image Processing/myVision USB 2008/01/20 18:01

myVision USB를 설치한 후 장치가 올바르게 설치가 되었는지 확인하기 위해 당장 실행시켜 볼 수 있는 예제 프로그램들을 제공한다. 이러한 예제 프로그램들은 소스 코드와 함께 제공되므로, myVision USB 이미지 그래버를 이용하여 영상 처리 프로그램을 작성하는 기본적인 방법을 엿보는 기회를 제공할 것이다. 예제 코드는 영상을 캡쳐하여 화면에 출력하는 예제와 컬러 포맷을 변환하는 기능, 문턱값(threshold value)을 지정하여 영상을 이진화하는 예제, 영상에서 특정 색상의 물체를 찾는 프로그램이 제공된다.


□ TestGrab

   가장 간단한 예제로, myVision USB에 입력되는 영상을 화면에 출력하는 예제 프로그램

□ TestDataType

   myVision USB가 지원하는 컬러 포맷과 영상 크기를 모두 테스트해 볼 수 있는 예제 프로그램

□ TestBuffer

   이미지 버퍼에 접근하는 방법을 설명하는 예제 프로그램

□ TestFile

   그랩 된 영상을 파일로 저장하고, 저장된 파일을 불러들여 화면에 출력하는 예제 프로그램

□ TestHook

   Hook 함수를 이용하여 해당 작업이 완료 되었을 때 사용자가 원하는 추가 작업을 수행할 수 있음을 보여주는 예제 프로그램

□ TestThreshold

  특정 밝기값을 기준으로 영상을 이진화하는 예제 프로그램

□ TestThresoldYUV

  특정 밝기값을 기준으로 영상을 이진화하는 예제로 컬러 포맷으로 YUV 포맷을 사용한다. YUV 포맷에서 U영역과 V 영역에서 문턱값을 지정해 주면, 영상 밝기값 변화에 강인한 결과를 얻을 수 있음

□ TestSearchYUV

  YUV 컬러 포맷에서 특정 색상을 갖는 물체를 찾는 예제 프로그램

□ TestSearchLUT

  RGB15 포맷에서 참조 테이블(Look-up table)을 이용하여 사용자가 지정한 특정 색상의 물체를 찾는 예제 프로그램

□ TestDataType_AVI

  동영상 파일을 카메라 영상처럼 불러들여 파일 포맷 및 영상 크기등을 바꾸는 기능을 보여주는 예제 프로그램으로서 동영상을 통해 영상 처리하는 기본 프로그램 골격을 파악할 수 있는 예제 프로그램

□ myCapture

  현재 카메라의 입력 영상을 압축하지 않은 avi 파일 포맷으로 저장하는 예제 프로그램으로 일단 저장하지 않은 상태로 동영상을 저장한 후 XviD 코덱을 이용하여 압축도 가능하므로 테스트 동영상을 만들 때 유용하게 사용 됨.


MVU 라이브러리와 위 예제 코드를 이용하면 Microsoft사의 Visual C++로 손쉽게 원하는 영상 처리 프로그램을 작성할 수 있을 것이다. 예제에 대한 자세한 설명은 본 문서의 『III. MVU 라이브러리를 이용한 프로그램 작성』 항목을 참고하기 바란다.

Trackback 0 : Comment 0

라이브러리와 드라이버 파일

Image Processing/myVision USB 2008/01/20 18:00
myVision USB 이미지 그래버의 편리한 설치를 위하여 자동 설치 파일을 제공한다.myVision USB를 PC에 연결하기 전에 제품 구매 시 제공되는 CD에서 설치 파일(Setup.exe)를 실행시키면 해당 디바이스 드라이버와 라이브러리 및 설명서, 예제 파일들이 사용자가 지정한 폴더에 설치된다.

또한 원활한 프로그래밍을 위해 myVision USB를 지원하는 함수들이 제공되며 이 라이브러리 파일을 MVU 라이브러리라 부른다. MVU 라이브러리란 myVision USB 라이브러리의 약자로, 기존 PCI 버전용 myVision이 제공하던 MV 라이브러리와 기능상 동일하며 USB 버전을 위해 특화된 함수들이 추가되어 있다. MVU 라이브러리가 제공하는 기능들은 본 문서의 II장과 III장 및 myVision USB Library Reference Guide를 참조하기 바란다.




myVisionUSB 드라이버 다운

    • 32비트 드라이버

myVisionUSB_32bit

  • 64비트 드라이버


    • 64비트 드라이버의 경우 설치시 "사운드, 비디오 및 게임 컨트롤러 -> USB 2820 Video" 로 설치가 됩니다. 이 경우 드라이버 업데이트를 한 후 드라이버를 목록에서 직접 설치 하시면 됩니다.
    • 자세한 내용은 아래 링크를 참조 하시면 됩니다.

'Image Processing > myVision USB' 카테고리의 다른 글

myVision USB에서 OpenCV 사용하기  (2) 2008/02/14
예제 프로그램  (0) 2008/01/20
라이브러리와 드라이버 파일  (1) 2008/01/20
입출력 단자 설명  (0) 2008/01/20
myVision USB 종류  (7) 2008/01/20
myVision USB란?  (0) 2008/01/20
Trackback 0 : Comment 1

입출력 단자 설명

Image Processing/myVision USB 2008/01/20 18:00

영상 입력 포트

사용자 삽입 이미지

myVision USB 영상 입력 포트


영상 입력 포트는 RCA 2 채널, S-video 1 채널이 존재한다. 소프트웨어적으로 입력 채널을 선택할 수 있으므로 총 3대의 카메라를 연결한 후, 선택적으로 영상을 취득할 수 있다. 붉은색 RCA 단자는 Ch0, 노란색 RCA 단자는 Ch1, Ch2(소프트웨어적으로 중복되어 있다)이며 마지막에 있는 S-video 단자는 Ch3이 할당되어 있다.


USB 인터페이스 포트

PC와 USB 케이블을 이용해 연결하는 부분으로 5핀 mini-B 타입의 커넥터를 사용한다. myVision USB 보드 내에 필요한 전력은 USB 케이블에서 제공하는 전력으로 충당한다. myVision USB를 USB 포트에 연결하고 응용 프로그램을 동작시키면 USB 인터페이스 포트 밑에 위치한 LED에 불이 들어와서 동작 유무를 알려준다.

사용자 삽입 이미지

좌측에 USB 인터페이스 포트, 우측의 9핀 DSUB 커넥터는 카메라 제어 인터페이스


USB 포트에서 충분한 전력을 공급하지 못하는 경우에는 myVision USB 보드가 원활히 동작하지 않을 수 있으므로 별도의 외부 전원을 사용하는 USB 허브를 이용하거나 USB 포트에 연결되어 있는 다른 장비를 제거한다.

☞ PC의 USB 포트에 myVision USB를 연결했을 때 바로 LED에 불이 들어오는 것이 아니라, 응용 프로그램을 실행시켜 myVision USB와 원활히 데이터 통신이 이루어졌을 때 LED에 불이 들어옵니다.


카메라 제어 인터페이스 (DX버전만 제공)

9핀 DSUB 커넥터 형태로 제공되는 카메라 제어 인터페이스는 myVision USB-DX 에서만 그 기능을 제공한다. 이를 이용하면 LVC-A903HM 카메라의 모든 기능을 원격에서 제어할 수 있다. myVision USB-DX 버전에는 카메라와 연결하기 위한 케이블이 같이 제공된다.

사용자 삽입 이미지

LVC-A903HM 카메라 인터페이스, 중앙 하단의 CONTROL 이라고 기록되어 있는 원형 단자를 통해 myVision USB-DX 버전과 연결된다.


카메라의 전원을 포함한 모든 기능이 myVision USB-DX에서 관리가 가능하다. LVC-A903HM 카메라를 구매하면 전용 제어 케이블이 포함되어 있다.

사용자 삽입 이미지

LVC-A903HM의 제어 케이블


제어 케이블의 신호선에 할당되어 있는 기능 및 색상은 다음과 같다.


핀 번호

기능

색깔

1

Zoom (줌)

녹색

2

Focus (포커스)

흰색

3

외부 입력키

갈색(또는 파란색)

4

공통 단자

노란색

5

GND

검정색

6

전원 (9V~12V)

빨간색


9핀 DBUS 커넥터와 연결은 두 개의 핀(5번, 7번)과 연결하면 되며 카메라용 외부 전원도 같이 넣어주면 된다.

LVC-A903HM
제어 케이블 번호

myVision USB DSUB 핀 번호

기타

1

N.C.


2

N.C.


3
갈색 또는 파란색

7


4
노란색

5

외부 어댑터 접지 신호

5
검정색

5


6

빨간색

N.C.

외부 어댑터 +12V 신호



사용자 삽입 이미지

제어 케이블과 9핀 DSUB 커넥터 배선도


'Image Processing > myVision USB' 카테고리의 다른 글

예제 프로그램  (0) 2008/01/20
라이브러리와 드라이버 파일  (1) 2008/01/20
입출력 단자 설명  (0) 2008/01/20
myVision USB 종류  (7) 2008/01/20
myVision USB란?  (0) 2008/01/20
myVision USB  (2) 2008/01/20
Trackback 0 : Comment 0

myVision USB 종류

Image Processing/myVision USB 2008/01/20 17:59

myVision USB는 그 기능에 따라 myVision USB-EX와 myVision USB-DX 2 종류가 존재한다. 외관상 크기는 동일하며, 케이스에 EX와 DX 표시가 되어 있다.

myVision USB-EX

myVision USB의 기본적인 기능을 충실히 가지고 있는 모델이다. USB 포트를 통해 NTSC 영상을 디지털로 전송하며, MVU 라이브러리를 지원한다. 영상 입력은 3채널을 가지고 있으며, 멀티 버퍼링을 통한 끊임없는 영상 전송을 지원한다.

싱글 카메라로 영상 처리 시스템을 구축하고자 하는 개발자에게는 myVision-EX 가 최적의 개발 환경을 제공할 것이다.


myVision USB-DX

myVision USB-EX의 기능에 스테레오 영상 처리 기능과 LG전자의 LVC-A903HM 카메라 제어 기능을 추가로 가지고 있는 모델이다. EX 버전보다 좀 더 고급 기능을 원하는 개발자에게는 DX 버전을 추천한다. 외형상으로는 EX 버전과 동일하며, 내부 구성에 차이가 있다. 한 대의 PC에 총 2대의 myVision USB를 연결하여 동시에 두 대의 카메라로부터 영상을 취득하는 스테레오 영상 처리 기능을 DX 버전은 지원한다. 또한, 9핀 DSUB 커넥터를 통해 LVC-A903HM 카메라가 가지고 있는 모든 기능을 프로그램 상에서 제어할 수 있다. LVC-A903HM 카메라는 myVision USB 판매처에서 같이 취급한다.

사용자 삽입 이미지

DX 버전에서 카메라 제어 기능을 테스트 할 수 있는 예제. 카메라 줌 인/줌 아웃 및 포커싱, 기타 기능을 모두 프로그램 상에서 제어 할 수 있다.


사용자 삽입 이미지

메뉴 버튼을 클릭해서 카메라 제어 메뉴를 부른 예. 다양한 기능을 화면상의 초록색 버튼을 이용해 제어할 수 있다.


EX와 DX의 비교

기능

EX

DX

USB 이미지 전송

O

O

MVU 라이브러리 지원

O

O

RCA 2ch, S-video 1ch의 영상 입력

O

O

컬러 포맷 변경 기능

O

O

예제 코드 지원

O

O

스테레오 영상 처리
(myVision USB 2대 연결)

X

O

LVC-A903HM 카메라 제어

X

O

외부 I/O 지원

X

O


☞ myVision USB에서 LVC-A903HM 이외에 다른 모델의 카메라 제어를 원하시는 경우 별도의 프로젝트로 진행이 가능합니다. 다른 모델의 카메라 제어가 필요한 경우는 게시판을 통해 문의해 주시기 바랍니다.


myVision USB-DX가 지원하는 LVC-903HM 카메라

LVC-903HM 카메라는 전동 줌 렌즈와 초점 조절 기능 및 기타 부가 기능들이 내장된 일체형 카메라로 동급 카메라 제품 중에서는 최상급 CCTV 카메라에 속한다. myVision USB-DX를 사용하면 이 카메라의 전체 기능을 제어하는 것이 가능하다. myVision USB-DX와 LVC-903HM 카메라를 이용하면 원격에서 줌 렌즈 제어가 가능하며 초점 조절 및 셔터 스피드, 카메라 인식 번호 기록, 카메라 전원 제어 등 여러 가지 기능들을 소프트웨어적으로 처리하는 것이 가능하다.

지원이 되는 여러 기능 중에서 핵심적인 것을 정리하면 다음과 같다.

● 줌 인/ 줌 아웃 기능

● 초점 조절 기능

● 셔터 스피드 제어 기능

● 화면 메뉴 설정 및 기타 세부 사항 원격 설정 기능

사용자 삽입 이미지

LVC-903HM


모델명

LVC-903HM

신호 방식

NTSC color

주사 방식

525 lines, 2:1 interlace

촬상 소자

1/4inch color CCD

광학줌

22배 f=3.9mm ~ 85.8mm

디지털 줌

10배 (최대 220배)

최단 촬영거리

WIDE (1cm), TELE(100cm)

최저피사체조도

0.01Lux

OSD

영문/한글

비디오 출력

1.0Vp-p S-video, BNC

원격 제어

모든 기능 원격 제어

밝기 조정

자동/수동

화이트 밸런스

자동/특수/실내/실외/수동

크기

56.2 x 63.9 x 101 mm

중량

388g

'Image Processing > myVision USB' 카테고리의 다른 글

예제 프로그램  (0) 2008/01/20
라이브러리와 드라이버 파일  (1) 2008/01/20
입출력 단자 설명  (0) 2008/01/20
myVision USB 종류  (7) 2008/01/20
myVision USB란?  (0) 2008/01/20
myVision USB  (2) 2008/01/20
Trackback 0 : Comments 7

myVision USB란?

Image Processing/myVision USB 2008/01/20 17:42

사용자 삽입 이미지

myVision USB 외형


영상을 PC에서 처리하기 위해서는 영상 신호를 PC가 인식할 수 있는 디지털 신호로 변환한 후 PC가 다룰 수 있는 메모리 영역으로 전송하는 장치가 필요하다. 이러한 기능을 수행하는 장치를 프레임 그래버(frame grabber), 이미지 그래버(image grabber), 또는 비전 보드(vision board)라고 부른다. myVision USB는 USB 포트를 통해 외부 카메라의 영상을 PC에 전달하는 장치로 다음과 같은 주요 기능을 가지고 있다.

● USB 포트로 간단히 연결하여 실시간 영상 획득

● 640x480 크기의 영상을 초당 30프레임씩 실시간 획득

● 3대의 카메라로부터 영상 입력 가능(RCA 2채널, S-video 1채널)

● 다양한 영상 크기 및 컬러 포맷 지원

● 동영상 저장 및 동영상을 영상 입력 소스로 활용 가능

● 멀티 버퍼링으로 연속 영상 처리 가능

● USB 포트를 통한 무전원 동작(USB 버스 전원 사용)

● MVU 라이브러리와 다양한 예제를 통한 편리한 프로그래밍

● 가로 55mm, 세로 54mm, 높이 24mm의 초소형 이미지 그래버

● 카메라 제어 기능 포함(DX 버전)

● 스테레오 영상 처리 기능 (DX 버전)


☞ 1999년도에 출시된 PCI용 이미지 그래버는 myVision이라는 상품명을 가지고 있다. 본 매뉴얼에서 소개하는 제품은 myVision의 기능을 승계한 제품으로 USB 인터페이스를 가지고 있으며, 제품명이 myVision USB로 지정되었다.


설계 철학 및 myVision USB 사용 시 장점

1999년 PCI용 이미지 그래버 myVision을 제작한 후 많은 사용자로부터 여러 가지 제품 개선에 대한 의견을 받았었는데, 그 중 가장 많은 요청 사항이 노트북에서도 영상 처리를 할 수 있는 이미지 그래버가 있었으면 하는 것이었다. 노트북에서 영상 처리를 하기 위해서는 충분한 대역폭을 보장하는 외부 입출력 인터페이스가 있어야 하는데, 이를 만족하는 인터페이스는 IEEE 1394 firewire와 USB 2.0 high speed 정도가 후보에 오를 수 있다. 이 중 IEEE 1394 인터페이스는 노트북 제조 메이커에 따라 지원하지 않는 경우가 있기 때문에 가장 보편적으로 많이 사용하는 USB 인터페이스를 지원하는 이미지 그래버를 제작하였다. 설계 당시 가능하면 크기를 줄여서 이동 로봇이나 기타 영상 처리 시스템을 구성할 때 공간상 제약이 생기지 않는 것을 첫째 원칙으로 하였으며, 기존 myVision과의 동등한 성능 및 카메라의 제어 기능을 추가하는 것을 목표로 하였다.

그 결과 가로 55mm, 세로 54mm, 높이 24mm의 크기를 가지는 myVision USB 이미지 그래버가 제작되었으며, USB 케이블을 통해 동작 전원을 공급 받으므로, 단순히 USB 포트에 myVision USB를 연결하는 것만으로 노트북을 영상 처리 시스템으로 활용할 수 있게 되었다.

이제, 영상 처리 시스템을 구축하기 위해 부피가 큰 데스크 탑 PC와 모니터 대신 간단한 노트북과 myVision USB 이미지 그래버를 이용하여 보다 작고 편리한 시스템을 구성할 수 있게 되었다.

사용자 삽입 이미지

크기가 매우 작기 때문에 전체 시스템을 소형화시킬 수 있다.

영상 입력

myVision USB 이미지 그래버는 물리적으로 3개의 입력 채널을 가지고 있으며, 각각의 입력 채널에 카메라를 연결한 후, 선택적으로 영상을 받아들일 수 있다. 연결이 가능한 카메라는 출력 신호가 NTSC/PAL 신호 및 S-video 신호인 영상 장치는 무엇이든지 가능하다. CCTV 카메라, 캠코더, 비디오 재생 장치, TV 신호 등이 이에 해당한다. 영상 입력 단자는 비디오 전송에 많이 사용되는 RCA 단자 2개와 캠코더 또는 고성능 CCTV 카메라가 지원하는 S-video 단자를 준비하고 있어 선택적으로 사용이 가능하다.

아래 그림에서 좌측의 빨간색 RCA 단자가 0번 채널, 노란색 단자가 1번, 2번 채널에 해당하며, 가장 좌측에 있는 입력 단자가 S-video 신호를 입력 받는 3번 채널이다. 즉, 외부적으론 3개의 영상 입력 단자가 존재하며, 소프트웨어적으로는 4개의 영상 입력 단자가 존재한다.

사용자 삽입 이미지

myVision USB 입력 단자


☞ 노란색 단자가 1번, 2번 채널로 중복 할당되어 있는 이유는 기존의 PCI용 myVision 이미지 그래버의 프로그램과 호환성을 유지하기 위해서이다. myVision 경우 총 4개의 채널이 있었으며,  BNC 단자가 1번 채널, 두 개의 RCA 단자가 각각 2,3번 채널, 그리고 S-video 단자가 4번 채널이었다. myVision USB를 설계할 때 컴팩트한 크기를 가지도록 하는 것이 설계 목표 중에 하나였기 때문에 BNC 입력 단자는 제거되었다. 

☞ myVision USB는 NTSC카메라와 PAL 카메라를 구별하지 않고 바로 연결해서 사용할 수 있게 되어 있다.

일부 CCTV 카메라의 경우 BNC 출력만 지원하는 경우가 있다. 이 경우에는BNC 단자를 RCA 커넥터로 변환하는 젠더(BNC2RCA 젠더)를 사용하여 myVision USB의 RCA 단자를 BNC 단자로 변경한 후 BNC용 케이블로 연결하면 myVision USB와 카메라를 연결할 수 있다.  BNC2RCA 젠더는 myVision USB 구입 시 포함되어 있다.


사용자 삽입 이미지

BNC2RCA 변환 젠더


지원 컬러 포맷 및 영상 크기

myVision USB는 NTSC 신호를 640x480 크기의 YUV 신호로 바꾸어 전달한다. myVision USB와 같이 제공되는 MVU 라이브러리를 이용하면, 영상 크기 및 컬러 포맷을 다양하게 변환할 수 있다. myVision USB가 지원하는 영상 포맷을 정리하면 다음과 같다.

Format

DWORD

Pixel Data [31:0]

Byte Lane 3
[31:24]

Byte Lane 2
[23:16]

Byte Lane 1
[15:8]

Byte Lane 0
[7:0]

RGB32

dw0

alpha

R

G

B

RGB24

dw0

B1

R0

G0

B0

dw1

G2

B2

R1

G1

dw2

R3

G3

B3

R2

RGB15

dw0

0, R1[7:3]G1[7:3]B1[7:3]

0, R0[7:3]G0[7:3]B0[7:3]

Y8

dw0

Y3

Y2

Y1

Y0

YUV422

dw0

U0

Y1

V0

Y0

dw1

U2

Y3

V2

Y2


영상 크기는 640x480, 320x240 크기를 지원한다. 영상 처리 응용 분야에 따라 개발자가 원하는 영상 크기를 선택하여 프로그래밍 할 수 있다.

☞ 컬러 변환 수식을 이용하면, YCbCr 컬러 스페이스, CIExyz 컬러 스페이스 및, CIECIELab 컬러 스페이스로도 변환이 가능하다.


영상 획득 방법

myVision USB는 프로그램의 용도에 따라 한 장의 이미지를 얻는 싱글 그랩 모드(single grab mode)와 연속적으로 영상을 취득하는 연속 그랩 모드(continuous grab mode)를 지원한다. 싱글 그랩 모드의 경우 한 장의 영상을 온전히 취득할 때까지 기다렸다가 한 프레임이 모두 변환이 되면 이 영상을 사용자에게 제공한다. 따라서 사용자는 영상 신호의 동기에 신경 쓸 필요 없이 원하는 시점에 한 장의 영상을 얻을 수 있다. 또한 연속 그랩 모드는 멀티 버퍼를 이용하여 입력되는 영상을 끊어짐 없이 사용자에게 제공한다. USB 2.0 high speed의 경우 최대 480Mbps의 전송 속도를 가지고 있으며, VGA급 영상인 640x480의 컬러 영상일 경우 1초에 147Mbits/s의 대역폭이 필요하므로, 최대 2대의 카메라로부터 영상을 실시간 취득하는 것이 가능하다.

사용자 삽입 이미지

Grab 버튼은 싱글 그랩 모드로 한 장의 영상을 취득하고,Grab Conti 버튼은 연속 그랩 모드로 연속적인 영상을 취득하여 화면에 출력한다.


'Image Processing > myVision USB' 카테고리의 다른 글

예제 프로그램  (0) 2008/01/20
라이브러리와 드라이버 파일  (1) 2008/01/20
입출력 단자 설명  (0) 2008/01/20
myVision USB 종류  (7) 2008/01/20
myVision USB란?  (0) 2008/01/20
myVision USB  (2) 2008/01/20
Trackback 0 : Comment 0

myVision USB User's Guide V2.41

Technical Reports 2008/01/20 17:31
저자: Withrobot Lab.
출처: http://withrobot.com

USB용 이미지 그래버 myVision USB의 사용자 설명서입니다. myVision USB 설치법부터 예제 프로그램 사용법을  파악할 수 있습니다.


사용자 삽입 이미지

myVision USB 포장 (크기 비교를 위해 키보드 위에서 촬영)


Trackback 0 : Comments 2

myVision USB Library Reference Guide V2.41

Technical Reports 2008/01/20 17:20
저자: Withrobot Lab.
출처: http://withrobot.com

USB용 이미지 그래버 myVision USB의 함수 레퍼런스 가이드 입니다. myVision USB가 지원하는 MVU 라이브러리 함수 사용법을 파악할 수 있습니다.

myVision USB 입력 포트

사용자 삽입 이미지

myVision USB 인터페이스 포트



Trackback 0 : Comment 0

myVision USB

Image Processing/myVision USB 2008/01/20 17:02
USB 이미지 그래버 - myVision USB

사용자 삽입 이미지
제품 특징

PCI 슬롯에 장착하여 카메라의 영상을 취득하는 이미지 그래버의 경우 PCI 슬롯이 없는 노트북에서는 사용이 불가능했습니다. 따라서 부피가 큰 PC를 사용해야 하고, 영상 처리 시스템을 구성하는데 많은 공간을 차지하게 됩니다. 또한 이동성이 필요한 영상 처리 시스템을 구축해야 하는 경우에도 많은 제한점이 있었습니다.

myVIsion USB는 USB 2.0 high speed 인터페이스를 이용하여 NTSC/PAL용 CCTV 카메라의 영상을 실시간으로 사용자가 조작할 수 있는 메모리 공간에 전달해 줍니다. 따라서 노트북에서도 영상 처리가 가능하며, 다양한 형태로 영상 처리 시스템을 구성할 수 있습니다.

제품 사양

- USB 2.0 high speed 인터페이스 (480MBPS)

- NTSC/PAL 카메라 4채널 입력(RCA 2채널, S-Video 1채널, 가상 1채널)

- 지원 포맷: RGB16, RGB24, RGB32, Y8(gray), YUV422

- 640x480 영상을 초당 30프레임 캡쳐 가능

- 지원 OS: Windows 2000/2003/XP

- 권장 PC 사양: Pentium IV 2.0GHz 이상, Centrino 1.2GHz 이상

- 지원 라이브러리: MVU Library 제공

- 프로그램 개발 환경: Visual C++ 6.0 이상

버전 별 기능 정리

myVision USB는 구현 기능에 따라 EX와 DX 두 종류의 버전을 제공합니다.

myVision USB EX는 경제성을 고려하여 기본 기능에 충실한 USB 그래버 장치로서 위에 언급한 제품 사양의 기능을 충실히 수행합니다. myVision USB DX 버전은 좀 더 고급 사용자들의 필요에 따라 몇 가지 기능이 추가되어 있습니다.

myVision USB DX의 고유 기능

- 스테레오 영상 입력 기능: 2대의 myVision USb DX를 사용하여 스테레오 영상 시스템 구축이 가능합니다.

- 특정 카메라의 제어 기능: 줌 렌즈 일체형인 LVC-A903HM (LG전자)의 전체 기능을 myVision USB DX에서 손쉽게 제어할 수 있습니다. Zoom In/Out은 물론, 포커싱, 노출 시간 등 카메라의 모든 기능을 원격에서 제어할 수 있습니다.


주의 사항

- 연결하려는 PC의 USB가 2.0 high speed를 지원하시는지 꼭 확인하시기 바랍니다.

- DirectX를 가능한 최신 버전으로 설치하시기 바랍니다.

- 케이스를 분해할 경우에는 A/S가 되지 않습니다.

- 입력 단자에 지정된 커넥터 이외의 것을 연결하지 마십시오. 고장의 원인이 됩니다.


FAQ

Q: 가상 채널이란 무엇인가요?

A: PCI용 myVision 이미지 그래버는 총 4채널(BNC1 채널, RCA 2채널, S-video 1채널)을 가지고 있습니다. 기존 PCI myVision용 이미지 그래버를 사용하시는 분들이 작성한 프로그램과의 호환을 위해 myVision USB에서는 물리적인 RCA 한 채널을 소프트웨어 상에서는 두 채널로 접근 가능하도록 설계하였습니다. 따라서 myVision USB는 물리적으로는 총 3채널을 가지고 있으며, 소프트웨어 상으로는 4채널로 접근이 가능합니다.


Q: 카메라 영상을 노트북에서 보기 위해서 어떤 장비가 필요하나요?

A: 현재 카메라를 보유하고 계신다면 myVision USB 패키지만으로 충분합니다. 카메라 출력 신호를 myVision USB에 연결하고, myVision USB의 USB 케이블을 노트북, 또는 PC의 USB 커넥터에 연결하면 바로 영상을 컴퓨터에서 볼 수 있으며, 각종 영상 처리 프로그래밍이 가능합니다.


Q: RCA와 S-Video 중 어떤 단자에 연결하는 것이 좋은가요?

A: S-video와 RCA 단자 모두 원리적으로는 동일한 해상도를 가진 신호가 출력됩니다. 단, S-video의 경우 흑백 신호와 컬러 신호가 분리되어 전송되기 때문에 상호간의 간섭이 상대적으로 RCA 단자로 전송되는 경우보다 적기 때문에 S-video 단자를 사용하실 수 있으면, S-video 단자 사용을 권장합니다.


Q: USB로 전송 속도가 충분한가요?

A: 이론적인 USB high speed 의 전송 속도는 480Mbps 입니다만, 프로토콜의 오버 헤드로 인해 이 대역폭 전체를 영상 전송하는데 사용할 수는 없습니다. 하지만, 640x480 VGA급 영상을 스테레오로 실시간(30frame/s) 전송하는데에는 문제없습니다. 이 보다 더 많은 카메라를 연결할 경우는 USB가 허용하는 대역폭을 넘어서기 때문에 myVision USB DX에서는 최대 두 대의 장치 연결까지만 허락하도록 제작되어 있습니다.


'Image Processing > myVision USB' 카테고리의 다른 글

예제 프로그램  (0) 2008/01/20
라이브러리와 드라이버 파일  (1) 2008/01/20
입출력 단자 설명  (0) 2008/01/20
myVision USB 종류  (7) 2008/01/20
myVision USB란?  (0) 2008/01/20
myVision USB  (2) 2008/01/20
Trackback 0 : Comments 2