이 페이지는 기계 번역을 사용하여 번역되었습니다. 영어 원문을 보려면 여기를 클릭하십시오.
GenICam 장치에서 하드웨어 메타데이터 가져오기
이 예시는 gentl 어댑터를 사용하여 GenICam™ 호환 카메라에서 하드웨어 타임스탬프, CRC 및 노출 시간이 포함된 이미지 10개를 획득하는 방법을 보여줍니다. GenICam 표준에서 사용하는 하드웨어 메타데이터 용어는 "청크 데이터"입니다.
videoinput 객체를 생성한 다음, 10프레임을 획득하고 videosource 소스 객체를 검색하도록 구성합니다.
vid = videoinput("gentl", 1);
vid.FramesPerTrigger = 10;
src = getselectedsource(vid);chunkDataInfo 함수를 사용하여 구성에 사용할 수 있는 청크 데이터를 확인하세요.
chunkInfo = chunkDataInfo(src)
chunkInfo=15×2 table
ChunkData Enabled
__________________________ _______
"Image" "True"
"CRC" "True"
"FrameID" "False"
"OffsetX" "False"
"OffsetY" "False"
"Width" "False"
"Height" "False"
"ExposureTime" "True"
"Gain" "False"
"BlackLevel" "False"
"PixelFormat" "False"
"SequencerSetActive" "False"
"Timestamp" "True"
"SerialData" "False"
"ExposureEndLineStatusAll" "False"
참고로, 이미지 및 CRC 청크 데이터는 해당 카메라 제조업체에서 기본적으로 항상 활성화되어 있습니다.
촬영 중 타임스탬프와 노출 시간을 기록하도록 카메라를 설정하십시오.
% Activate chunk mode in the camera src.ChunkModeActive = "True"; % Select the timestamp src.ChunkSelector = "Timestamp"; % Enable timestamps src.ChunkEnable = "True"; % Select exposure time src.ChunkSelector = "ExposureTime"; % Enable exposure time src.ChunkEnable = "True";
chunkDataInfo 명령어를 사용하여 카메라에 청크 데이터가 올바르게 구성되었는지 확인하십시오.
chunkInfo = chunkDataInfo(src)
chunkInfo=15×2 table
ChunkData Enabled
__________________________ _______
"Image" "True"
"CRC" "True"
"FrameID" "False"
"OffsetX" "False"
"OffsetY" "False"
"Width" "False"
"Height" "False"
"ExposureTime" "True"
"Gain" "False"
"BlackLevel" "False"
"PixelFormat" "False"
"SequencerSetActive" "False"
"Timestamp" "True"
"SerialData" "False"
"ExposureEndLineStatusAll" "False"
데이터 수집을 시작하고 수집된 데이터를 MATLAB® 작업 공간으로 읽어들입니다.
start(vid) [image, time, metadata] = getdata(vid);
첫 번째 프레임의 메타데이터에 접근합니다.
mData = metadata(1)
mData = struct with fields:
AbsTime: [2024 5 17 13 32 7.3093]
FrameNumber: 1
RelativeFrame: 1
TriggerIndex: 1
ChunkData: [1×1 struct]
첫 번째 프레임의 청크 데이터 값을 확인하세요.
chunkMetaData = mData.ChunkData
chunkMetaData = struct with fields:
CRC: 1527840335
ExposureTime: 6873
Timestamp: 1918815722568
각 프레임의 모든 청크 데이터를 표 형식으로 표시합니다.
frames = []; timeStamps = []; exposureTime = []; for i = 1:10 img = image(:,:,:,i); frames = [frames; {img}]; timeStamps = [timeStamps; metadata(i).ChunkData.Timestamp]; exposureTime = [exposureTime; metadata(i).ChunkData.ExposureTime]; end resultTable = table(timeStamps,exposureTime,frames)
resultTable=10×3 table
timeStamps exposureTime frames
_____________ ____________ _________________
1918815722568 6873 {3000×4096 uint8}
1918915630408 6873 {3000×4096 uint8}
1919015538000 6873 {3000×4096 uint8}
1919115445000 6807 {3000×4096 uint8}
1919215353592 6775 {3000×4096 uint8}
1919315261056 6742 {3000×4096 uint8}
1919415168352 6742 {3000×4096 uint8}
1919515076544 6742 {3000×4096 uint8}
1919614984192 6742 {3000×4096 uint8}
1919714891976 6742 {3000×4096 uint8}