Baumer 산업용 카메라 BGAPISDK를 통한 Baumer 산업용 카메라 시퀀서 프로그래밍: VCXG 듀얼 셔터 작동(C#)

Baumer 산업용 카메라

Baumer 산업용 카메라 Baumer 카메라는 물체 감지, 계수 및 인식, 동작 분석 및 이미지 처리와 같은 다양한 애플리케이션 시나리오에서 사용할 수 있는 고성능, 고품질 산업용 카메라입니다.

Baumer의 10 Gigabit 카메라는 영상 처리 성능이 뛰어나고 고해상도 영상을 실시간으로 전송할 수 있습니다. 또한 이 카메라는 빠른 데이터 전송, 낮은 전력 소비, 쉬운 통합 및 높은 확장성을 특징으로 합니다.
Baumer
산업용 카메라는 우수하고 안정적인 성능과 품질로 인해 고속 동기 획득 분야에서 자주 사용되며 일반적으로 캡처된 이미지의 품질을 향상시키기 위해 다양한 이미지 알고리즘을 사용합니다.

Baumer 산업용 카메라 BGAPISDK 및 시퀀서 프로그래밍의 기술적 배경

Baumer 산업용 카메라용 BGAPI SDK는 Baumer에서 카메라 제품 시리즈용으로 개발한 소프트웨어 개발 키트 세트입니다. SDK는 개발자가 Baumer 카메라의 이미지와 데이터를 제어, 캡처, 처리 및 표시하는 전문 애플리케이션을 작성할 수 있도록 하는 일련의 API를 제공합니다. BGAPI SDK는 C++, C#, Visual Basic, LabVIEW, Matlab 등을 포함한 여러 프로그래밍 언어를 지원하고 사용자가 쉽고 빠르게 애플리케이션 개발을 시작하고 완료할 수 있도록 많은 샘플 코드와 문서를 제공합니다.

BGAPI SDK는 노출 시간, 게인, 화이트 밸런스, 트리거 모드 등 Baumer 카메라의 모든 매개 변수를 제어할 수 있는 풍부한 기능을 제공하며 Raw, BMP, JPG 등 다양한 데이터 형식을 지원합니다. 또한 실시간 디스플레이, 데이터 수집, 이미지 처리 및 기타 기능을 제공하여 개발자에게 고도로 맞춤화된 솔루션을 제공합니다. 또한 BGAPI SDK는 다중 카메라 시스템 개발도 지원하며 Windows, Linux, Mac OS 등 다양한 컴퓨터 운영 체제를 지원할 수 있습니다.

산업용 카메라의 시퀀서 기능은 사용자가 다양한 촬영 매개변수를 독립적인 시퀀스로 설정하여 다양한 애플리케이션 요구 사항을 충족하도록 카메라의 자동 전환 제어를 실현할 수 있는 고급 프로그래밍 기능입니다. Sequencer 기능을 사용하면 한 번의 촬영 주기에서 다중 노출, 이미지 전송 및 처리 작업을 실현할 수 있으므로 엔지니어링 효율성과 품질이 향상됩니다.

본 논문에서 제시한 BGAPI SDK를 통합하여 시퀀서 프로그래밍: 각 트리거 신호에 따라 관심 영역을 이동시키는 기능.

BGAPISDK를 통한 Baumer 산업용 카메라의 시퀀서 프로그래밍 기능

다음은 C#에서 BGAPISDK를 통해 Baumer 산업용 카메라의 시퀀서를 프로그래밍하는 방법을 소개합니다: VCXG 이중 셔터 작동 기능.

1. 적절한 클래스 파일 참조

코드는 다음과 같습니다(예제).

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Data;
using System.Globalization;
using System.Diagnostics;
using System.IO;

2. BGAPISDK를 통한 Baumer 산업용 카메라 시퀀서 프로그래밍: VCXG 이중 셔터 작동 기능.

이 예는 하드웨어 트리거링을 사용하여 듀얼 셔터 작동을 위해 시퀀서를 프로그래밍하는 방법을 보여줍니다. 듀얼 셔터 작동은 매우 짧은 시간에 2개의 이미지를 캡처하도록 설계되었습니다. 이 작업은 카메라가 첫 번째 이미지를 읽는 동안 두 번째 이미지를 캡처할 수 있는 특수 기술을 사용합니다.

시퀀서의 기능과 이중 셔터를 사용하는 경우에 대한 자세한 내용은 아래 애플리케이션 노트와 카메라 사용 설명서를 참조하십시오.

아래 이미지는 신호 곡선 측면에서 이중 셔터의 효과를 보여줍니다. 두 번째 노출이 끝날 때 주변광(노출 신호의 음영 회색 영역)을 제거하면 카메라가 예상대로 작동합니다.

여기에 이미지 설명 삽입

// STOP AUQISITION AND LOAD DEFAULT PARAMETERS
mDevice.RemoteNodeList["AcquisitionStop"].Execute();
mDevice.RemoteNodeList["UserSetSelector"].Value = "Default";
mDevice.RemoteNodeList["UserSetLoad"].Execute();

// CONFIGURE HARDWARE TRIGGER INPUT
// this needs to be done before the sequencer is configured
mDevice.RemoteNodeList["TriggerMode"].Value = "On";
mDevice.RemoteNodeList["TriggerSource"].Value = "Line0";
mDevice.RemoteNodeList["TriggerActivation"].Value = "RisingEdge";
mDevice.RemoteNodeList["TriggerDelay"].Value = (double)0.0;
mDevice.RemoteNodeList["LineSelector"].Value = "Line0";
mDevice.RemoteNodeList["LineInverter"].Value = false;
mDevice.RemoteNodeList["LineDebouncerHighTimeAbs"].Value = (double)1.0;
mDevice.RemoteNodeList["LineDebouncerLowTimeAbs"].Value = (double)1.0;

// CONFIGURE TIMER FOR FLASH
// the timer is started on each exposure start for a duration of 100 µsec
mDevice.RemoteNodeList["TimerSelector"].Value = "Timer1";
mDevice.RemoteNodeList["TimerTriggerSource"].Value = "ExposureStart";
mDevice.RemoteNodeList["TimerTriggerActivation"].Value = "RisingEdge";
mDevice.RemoteNodeList["TimerDelay"].Value = (double)0.0;
// TimerDuration (of Flash) equals Set0 ExposureTime below
mDevice.RemoteNodeList["TimerDuration"].Value = (double)100.0; //100.0 µsec

// CONFIGURE GPIO “Line3” FOR FLASH CONTROL
mDevice.RemoteNodeList["LineSelector"].Value = "Line3";
mDevice.RemoteNodeList["LineSource"].Value = "Timer1Active"; // Line3 is high while Timer1 set up before is active
mDevice.RemoteNodeList["LineInverter"].Value = false;

// SWITCH TO SEQUENCER CONFIG MODE
mDevice.RemoteNodeList["SequencerConfigurationMode"].Value = "On";

// SET 0 (FIRST STEP OF THE SEQUENCE)
mDevice.RemoteNodeList["SequencerSetSelector"].Value = (long)0;
mDevice.RemoteNodeList["SequencerSetLoad"].Execute();

mDevice.RemoteNodeList["TriggerMode"].Value = "On";
mDevice.RemoteNodeList["OffsetX"].Value = (long)0;
mDevice.RemoteNodeList["OffsetY"].Value = (long)0;
mDevice.RemoteNodeList["Width"].Value = (long)320;
mDevice.RemoteNodeList["Height"].Value = (long)240;
mDevice.RemoteNodeList["OffsetX"].Value = (long)160;
mDevice.RemoteNodeList["OffsetY"].Value = (long)120;
// ExposureTime of Set0 = TimerDuration (of Flash)
mDevice.RemoteNodeList["ExposureTime"].Value = (double)100.0; // 100 µsec

mDevice.RemoteNodeList["SequencerPathSelector"].Value = (long)0;
mDevice.RemoteNodeList["SequencerTriggerSource"].Value = "ExposureActive";
mDevice.RemoteNodeList["SequencerTriggerActivation"].Value = "RisingEdge";
// next sequencer step will be Set1 set up below
mDevice.RemoteNodeList["SequencerSetNext"].Value = (long)1;

mDevice.RemoteNodeList["SequencerSetSave"].Execute();

// SET 1 (SECOND STEP OF THE SEQUENCE)
mDevice.RemoteNodeList["SequencerSetSelector"].Value = (long)1;
mDevice.RemoteNodeList["SequencerSetLoad"].Execute();
// the TriggerMode is set to Off, otherwise the camera would wait for the next hardware trigger which is not desired. Changing TriggerMode to Off will return the camera to free run mode, after one exposure we will be back in Set0 where the TriggerMode is switched On again in order for the camera to wait for the next hardware trigger.
mDevice.RemoteNodeList["TriggerMode"].Value = "Off";
mDevice.RemoteNodeList["OffsetX"].Value = (long)0;
mDevice.RemoteNodeList["OffsetY"].Value = (long)0;
mDevice.RemoteNodeList["Width"].Value = (long)320;
mDevice.RemoteNodeList["Height"].Value = (long)240;
mDevice.RemoteNodeList["OffsetX"].Value = (long)160;
mDevice.RemoteNodeList["OffsetY"].Value = (long)120;
// here is the Double Shutter trick, for this second exposure we set the exposure time to 
// the same time as the ReadOutTime of the first image(as calculated by the camera). The 
// camera will recognize that the second image will be ready for ReadOut only after the 
// ReadOut of the first image is finished and therefore start the exposure straight away 
// instead of waiting for the first image to finish ReadOut
double fReadOutTime_Set1 = (double)((long)mDevice.RemoteNodeList["ReadOutTime"].Value);
mDevice.RemoteNodeList["ExposureTime"].Value = (double)fReadOutTime_Set1;

mDevice.RemoteNodeList["SequencerPathSelector"].Value = (long)0;
mDevice.RemoteNodeList["SequencerTriggerSource"].Value = "ExposureActive";
mDevice.RemoteNodeList["SequencerTriggerActivation"].Value = "RisingEdge";
// Next sequencer step will be Step0 again
mDevice.RemoteNodeList["SequencerSetNext"].Value = (long)0;
mDevice.RemoteNodeList["SequencerSetSave"].Execute();
// Start with the Set0
mDevice.RemoteNodeList["SequencerSetStart"].Value = (long)0;

// SEQUENCER CONFIG END
mDevice.RemoteNodeList["SequencerConfigurationMode"].Value = "Off";

// START CAMERA SEQUENCER
mDevice.RemoteNodeList["SequencerMode"].Value = "On";
mDataStream.StartAcquisition();
mDevice.RemoteNodeList["AcquisitionStart"].Execute();

// CAPTURE IMAGES

// STOP CAMERA SEQUENCER
mDevice.RemoteNodeList["AcquisitionStop"].Execute();
mDataStream.StopAcquisition();
mDevice.RemoteNodeList["SequencerMode"].Value = "Off";


Baumer 산업용 카메라를 사용한 듀얼 셔터 작동의 장점

글로벌 셔터라고도 하는 듀얼 셔터 작동은 모든 복셀 정보를 동시에 캡처하는 방법입니다. 모든 픽셀 데이터가 동시에 캡처되기 때문에 글로벌 셔터는 특히 고속으로 움직이는 피사체를 촬영할 때 모션 블러와 왜곡을 줄일 수 있습니다. 이중 셔터 작동의 몇 가지 장점은 다음과 같습니다.

모션 블러 감소: 듀얼 셔터 작동으로 동시에 캡처하므로 빠르게 움직이는 피사체를 촬영할 때도 블러 없이 이상적으로 선명한 이미지를 얻을 수 있습니다.

왜곡 감소: 3D 재구성과 같은 동시 다중 카메라 캡처가 필요한 애플리케이션의 경우 듀얼 셔터 작동으로 시간 차이로 인한 왜곡이 줄어듭니다.

이미지 품질 개선: 일부 특정 애플리케이션의 경우 열악한 조명 조건에서 촬영할 때 글로벌 셔터는 이미지 노이즈를 줄이고 더 높은 다이내믹 레인지를 제공하여 이미지 품질을 향상시킬 수 있습니다.

더 나은 깊이 인식: 깊이 인식 장치에서 글로벌 셔터는 모든 픽셀이 동시에 캡처되므로 물체의 거리와 이동 속도를 정확하게 측정하는 데 도움이 되기 때문에 더 정확한 깊이 정보를 제공할 수 있습니다.

요약하면 듀얼 셔터 기술은 고속으로 움직이는 물체를 촬영하거나 동기화가 필요할 때 산업용 카메라에 이점을 제공합니다.흐림과 왜곡을 줄이고 이미지 품질을 개선하며 보다 정확한 깊이 정보를 제공할 수 있습니다.

이중 셔터 작동을 지원하는 Baumer 산업용 카메라의 산업적 응용

글로벌 셔터라고도 하는 듀얼 셔터 작동은 모든 복셀 정보를 동시에 캡처하는 방법입니다. 모든 픽셀 데이터가 동시에 캡처되기 때문에 글로벌 셔터는 특히 고속으로 움직이는 피사체를 촬영할 때 모션 블러와 왜곡을 줄일 수 있습니다. 이중 셔터 작동의 몇 가지 장점은 다음과 같습니다.

모션 블러 감소: 듀얼 셔터 작동으로 동시에 캡처하므로 빠르게 움직이는 피사체를 촬영할 때도 블러 없이 이상적으로 선명한 이미지를 얻을 수 있습니다.

왜곡 감소: 3D 재구성과 같은 동시 다중 카메라 캡처가 필요한 애플리케이션의 경우 듀얼 셔터 작동으로 시간 차이로 인한 왜곡이 줄어듭니다.

이미지 품질 개선: 일부 특정 애플리케이션의 경우 열악한 조명 조건에서 촬영할 때 글로벌 셔터는 이미지 노이즈를 줄이고 더 높은 다이내믹 레인지를 제공하여 이미지 품질을 향상시킬 수 있습니다.

더 나은 깊이 인식: 깊이 인식 장치에서 글로벌 셔터는 모든 픽셀이 동시에 캡처되므로 물체의 거리와 이동 속도를 정확하게 측정하는 데 도움이 되기 때문에 더 정확한 깊이 정보를 제공할 수 있습니다.

요약하면 듀얼 셔터 기술은 고속으로 움직이는 물체를 촬영하거나 동기화가 필요할 때 산업용 카메라에 이점을 제공합니다.흐림과 왜곡을 줄이고 이미지 품질을 개선하며 보다 정확한 깊이 정보를 제공할 수 있습니다.

Supongo que te gusta

Origin blog.csdn.net/xianzuzhicai/article/details/131446490
Recomendado
Clasificación