주요 콘텐츠

이 페이지는 기계 번역을 사용하여 번역되었습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

FLIR Ax5 열 적외선 카메라에서 이미지 수집 및 분석

R2023a 이후

이 예제는 FLIR Ax5 시리즈 열화상 적외선 카메라에서 여러 가지 방법으로 이미지를 수집하고, 미리 보고, 분석하는 방법을 보여줍니다.

이 예제에서는 FLIR A35 카메라를 사용했지만, 사소한 수정을 통해 Ax5 시리즈의 다른 카메라에서도 작동할 것으로 예상됩니다.

요구 사항:

  • Image Acquisition Toolbox™

  • Image Processing Toolbox™

  • GenICam™ 인터페이스용 Image Acquisition Toolbox 지원 패키지

  • FLIR Ax5 GigE Vision® 열 적외선 카메라

  • Spinnaker SDK에 포함된 FLIR GenTL Producer

  • 점보 프레임을 지원하는 기가비트 이더넷 네트워크 어댑터

카메라에 연결하고 수집 구성

videoinput 함수가 있는 gentl 어댑터를 사용하여 FLIR Ax5에 대한 연결을 만듭니다. 그런 다음 videoinput 객체의 소스 속성을 가져옵니다.

vid = videoinput("gentl",1,"Mono14")
Summary of Video Input Object Using 'FLIR Systems AB FLIR AX5(00:11:1c:02:7a:ef)'.

   Acquisition Source(s):  FLIR AX5(00:11:1c:02:7a:ef)_Stream_0 
                           is available.

  Acquisition Parameters:  'FLIR AX5(00:11:1c:02:7a:ef)_Stream_0' is the current selected source.
                           10 frames per trigger using the selected source.
                           'Mono14' video data to be logged upon START.
                           Grabbing first of every 1 frame(s).
                           Log data to 'memory' on trigger.

      Trigger Parameters:  1 'immediate' trigger(s) on START.

                  Status:  Waiting for START.
                           0 frames acquired since starting.
                           0 frames available for GETDATA.
src = getselectedsource(vid);

기본 비트 심도가 8비트이므로 미리보기 데이터를 전체 비트 심도로 설정합니다. 그렇지 않으면 MATLAB®은 카메라에서 수신한 데이터의 절반만 표시합니다.

vid.PreviewFullBitDepth = "on";

카메라 속성 구성

FLIR A35 카메라는 14비트의 비트 심도를 가진 이미지를 반환합니다. 고온 분해능을 갖춘 온도 선형 모드로 이미지 데이터를 제공하도록 카메라를 구성합니다.

src.CMOSBitDepth = "bit14bit";
src.TemperatureLinearMode = "On";
src.TemperatureLinearResolution = "High";

대기 파라미터와 객체 파라미터를 지정합니다. 측정 정확도를 위해 이러한 파라미터는 이미지를 수집하기 전에 올바르게 구성되어야 합니다. 이러한 파라미터에 대한 자세한 내용은 카메라 설명서를 참조하세요.

src.AtmosphericTemperature = 298;
src.ObjectEmissivity = 1.0;
src.ReflectedTemperature = 298;

온도 분해능 상수는 이미지 데이터를 °C로 변환하는 데 사용됩니다. TemperatureLinearResolution 속성 값에 따라 값을 0.04 또는 0.4로 설정합니다. 적절한 온도 분해능 상수 값은 카메라 설명서를 참조하세요.

switch src.TemperatureLinearResolution
    case "High"
        k = 0.04;
    case "Low"
        k = 0.4;
end

카메라에서 이미지를 수집하여 표시한 다음 RGB 이미지로 저장

getsnapshot 함수를 사용하여 카메라에서 이미지를 얻습니다.

img = getsnapshot(vid);

온도 분해능 값 k를 사용하여 캡처된 이미지 데이터를 °C로 변환합니다. ax5degC 도우미 함수를 사용합니다. 이 예제에서 사용된 헬퍼 함수는 이 예제 파일과 같은 디렉터리에 지원 파일로 첨부되어 있습니다.

imgC = ax5degC(img,k);

표시 색상 한계의 온도 범위를 °C로 지정합니다.

tempRange = [22 70];

지정된 온도 범위와 단위로 thermalImageShow 도우미 함수를 사용하여 열 이미지를 표시합니다. 이미지의 아무 곳이나 클릭하면 해당 픽셀의 온도 정보가 표시됩니다.

thermalImageShow(imgC,tempRange,"\circC");

지정된 온도 범위와 컬러맵을 사용하여 thermal2rgb 도우미 함수를 사용하여 온도 강도 이미지를 RGB 이미지로 변환합니다. 변환된 이미지를 이미지 파일로 저장합니다.

RGB = thermal2rgb(imgC,tempRange,parula);
imwrite(RGB,"thermalImageRGB.png")

카메라에서 비디오 획득 및 표시

카메라의 FramesPerTrigger 수집 속성을 구성하여 20개의 이미지를 캡처합니다.

vid.FramesPerTrigger = 20;

getdata 함수를 사용하여 이미지 데이터를 수집합니다.

start(vid)
frames = getdata(vid,vid.FramesPerTrigger);

온도 분해능 값 k를 사용하여 ax5degC 도우미 함수를 사용하여 캡처된 이미지 데이터를 °C로 변환합니다.

framesC = ax5degC(frames,k);

이전에 지정한 온도 범위에 montage 함수를 사용하여 획득한 이미지 프레임의 시퀀스를 표시합니다.

montage(framesC,DisplayRange=tempRange)

프레임을 RGB로 변환하고 파룰라 컬러맵을 적용합니다.

frameSize = vid.ROIPosition;
numFrames = size(framesC,4);
framesRGB = zeros(frameSize(4)-frameSize(2),frameSize(3)-frameSize(1),3,numFrames);

for frame = 1:numFrames
    framesRGB(:,:,:,frame) = thermal2rgb(framesC(:,:,:,frame),tempRange,parula);
end

컬러맵을 적용하여 획득한 이미지 프레임의 시퀀스를 색상으로 표시합니다.

montage(framesRGB)

카메라에서 라이브 미리보기 표시

ax5Preview 도우미 함수를 사용하여 카메라에서 대화형 라이브 미리보기를 표시합니다. 카메라의 실시간 이미지는 °C로 변환되어 미리보기 창에 표시됩니다. 라이브 미리보기 이미지의 아무 곳이나 클릭하면 선택한 픽셀의 온도 정보를 볼 수 있습니다.

ax5Preview(vid);

참고 항목

| | |