본문 바로가기
Engineering

[LabVIEW] IMAQdx를 이용한 IP 카메라 사용법

by 투썬 아빠 2012. 11. 6.



예전에 포스팅 한 내용 중 'LabVIEW에서 ActiveX를 이용한 IP Camera 영상출력'이 있습니다.

해당 내용은 IP Camera용 API를 이용하는 방법이기 때문에 LabVIEW에서 카메라 영상을 불러오는 것부터 어려움이 있었습니다. 영상을 LabVIEW에서 사용하는 포맷으로 불러올 수만 있어도 다른 Vision 라이브러리들을 사용하는데 문제가 없을 것이지만, 그 작업이 되지 않는다면 후 처리에 어려움이 있을 것입니다. 때문에 LabVIEW를 이용한 영상처리를 할 경우 LabVIEW에서 지원하는 카메라 정보를 확인할 필요가 있습니다.

 

www.ni.com/camera

 

위의 링크로 가면 LabVIEW에서 지원하는(IMAQ라이브러리를 사용할 수 있는) 카메라 정보를 확인할 수 있습니다.

IP Camera의 경우 AXIS사와 Basler 사를 지원하고 있습니다.

목록에 나타나지 않는 제조사 및 제품의 경우 LabVIEW에서 사용을 보장할 수 없습니다.

 

이번 포스팅에서는 NI-IMAQdx 라이브러리란 무엇이며, 해당 라이브러리를 이용하여 IP 카메라의 영상을 수집하는 법에 대해 알아보도록 하겠습니다.

 

1. NI-IMAQdx?

NI에서 제공하는 영상수집 관련 라이브러리는 NI-IMAQNI-IMAQdx가 있습니다. 두 라이브러리의 차이는 간단히 카메라 보드를 사용하는가? 하지 않는가?로 보시면 됩니다. 보드를 사용할 경우 NI-IMAQ라이브러리를 사용하면 되고, USB 웹캠 혹은 IP Camera등을 이용할 경우 NI-IMAQdx를 사용하시면 됩니다.

LabVIEW 8.6까지는 NI-IMAQ USB 라이브러리가 존재하여 USB 웹캠을 사용할 때는 NI-IMAQ USB를 사용했었습니다. 하지만 LabVIEW 2009부터는 NI-IMAQdx라이브러리로 통합되어 사용이 가능합니다.(NI-IMAQ USB는 사용이 불가합니다.)

NI-IMAQ 혹은 NI-IMAQdx를 사용하기 위해서는 Vision Acquisition Software를 설치해야합니다.

 

 

2. NI-IMAQdx의 구성요소

 

그림 1 NI-IMAQdx의 함수팔레트

 

여러가지 VI가 존재하는데 이 중 주로 사용되는 것은 몇 되지 않습니다.

1) IMAQdx Open VI & Close VI

VI 이름 그대로 사용할 카메라를 열고, 닫는 VI입니다. Open은 사용할 카메라 정보를 불러오는 VI이고, Close는 사용한 카메라 정보를 해제하는 VI입니다.

 

2) IMAQdx Configure Grap VI

사용할 카메라의 초기화 VI입니다.

그림 2 IMAQdx Configure Grap VI

내부적으로 보면 Camera Open과 설정 및 시작으로 구성되어 있습니다. IMAQ Configure Grap 이전에 Camera Open이 없을 시 임의의 카메라를 선택하여 Open 시킵니다. 그 후 기본적으로 연속 촬영모드로 시작을 하게 합니다.

 

3) IMAQdx Snap VI

Snap은 1회 촬영입니다. 즉, 함수가 불러질 때 그 순간 카메라로 들어오는 영상을 수집하는 것입니다.

그림 3 IMAQdx Snap VI

영상 수집 VI로만 구성된 것이 아니라 내부적으로 설정함수를 통해 촬영 모드를 One shot으로 설정합니다. Snap의 경우 내부적으로 IMAQdx Configure Grap VI의 동작이 포함되어 있기 때문에 IMAQdx Snap VI를 사용할 때는 IMAQdx Configure Grap VI를 실행하지 않아도 무방합니다. IMAQdx Configure Grap VI와 마찬가지로 Open된 카메라가 존재하지 않을 경우 임의의 Camera를 Open시키고 Snap 동작이 끝나면 Close까지 이루어지도록 되어 있습니다.

 

4) IMAQdx Grab VI

IMAQdx Grap VI는 연속촬영을 할 때 사용하는 VI입니다.

그림 4 IMAQdx Grap VI

IMAQdx Get Image VI만 사용이 되고 있습니다. 때문에 IMAQdx Snap VI와 달리 IMAQdx Configure Grap VI를 사용하여야 합니다.

 

5) IMAQdx Enumerate Cameras VI

현재 PC 혹은 사용하고 있는 타겟에 연결된 카메라의 리스트를 보여주는 VI입니다. 카메라 정보에 대한 클러스터 배열로 구성되어 있습니다.

그림 5Enumerate Cameras의 출력 클러스터 배열

연결된 카메라의 개수 만큼 배열의 크기가 결정이 되고, 각 카메라에 대한 정보가 담긴 클러스터가 있습니다. 클러스터 구성요소 중 Interface Name을 IMAQdx Camera Open에 연결하면 해당 카메라를 사용할 수 있습니다.

 

3. Example

위에서 소개한 VI로 간단한 영상 수집 프로그램을 만들어 보겠습니다.

그림 6 Example VI

 

위의 VI에서는 가장 먼저 연결된 Camera 를 Open하도록 구성되어 있습니다. MAX상에서 연결된 Camera의 순서 및 정보를 확인할 수 있습니다.


댓글