* 강좌 목차
[Python/FLIR] Spinnaker SDK, PySpin 설치 가이드
· FLIR Spinnaker SDK 설치 및 실행(Windows, Ubuntu)
[Python/FLIR] PySpin Node 사용법
· 노드의 개념, 타입, 사용법 설명, spinview에서 노드 정보 확인
[Python/FLIR] PySpin 카메라 스트리밍 기본
· Pyspin 사용하여 카메라 Connect 및 Grab 해보기
[Python/FLIR] PySpin카메라에서 온도값 가져오기(1)
· Nodemap으로 pixelformat 변경, IRFormat 변경하기
[Python/FLIR] PySpin 카메라에서 온도값 가져오기(2)
· TemperatureLinear(10K, 100K)으로 온도값 가져오기
[Python/FLIR] PySpin 카메라에서 온도값 가져오기(3)
· Radiometric 으로 온도값 가져오기
[Python/FLIR] PySpin 온도 데이터 팔레트 적용
· 온도값 팔레트 이미지 만들어보기
[Python/FLIR] PySpin 카메라 제어(1)
· QueryCase를 사용한 측정 온도 범위 변경 예제
[Python/FLIR] PySpin 카메라 제어(2)
· FPS변경 및 NUC Excute 예제
Python으로 Spinnaker SDK를 활용해 FLIR A Series 카메라를 제어하는 방법을 배워보세요.
본 강좌에서는 FLIR의 공식 예제를 기반으로 하여 PySpin을 사용한 Temperature Linear(100K, 10K)
모드 설정, 온도값 확인 및 섭씨 변환, 그리고 데이터를 이미지로 변환하는 과정을 다룹니다.
특히 Spinnaker SDK를 활용한 온도 데이터 처리에 관심 있는 분들에게 유용한 정보가 될 것입니다.
1. Temperature Linear 모드 설정
raw_data를 온도 데이터로 변환하여 ROI에 대한 값과 Max, Min값 등 유의미한 값을 확인할 수 있습니다.
1-1. Pixel Format을 16bit로 설정합니다.
Pixel Format은 스트리밍 하면 변경할 수 없습니다.
PySpin카메라에서 온도값 가져오기(1) 강을 참고하여 Mono16 비트로 설정합니다.

* 강좌 목차
[Python/FLIR] Spinnaker SDK, PySpin 설치 가이드
· FLIR Spinnaker SDK 설치 및 실행(Windows, Ubuntu)
[Python/FLIR] PySpin Node 사용법
· 노드의 개념, 타입, 사용법 설명, spinview에서 노드 정보 확인
[Python/FLIR] PySpin 카메라 스트리밍 기본
· Pyspin 사용하여 카메라 Connect 및 Grab 해보기
[Python/FLIR] PySpin카메라에서 온도값 가져오기(1)
· Nodemap으로 pixelformat 변경, IRFormat 변경하기
[Python/FLIR] PySpin 카메라에서 온도값 가져오기(2)
· TemperatureLinear(10K, 100K)으로 온도값 가져오기
[Python/FLIR] PySpin 카메라에서 온도값 가져오기(3)
· Radiometric 으로 온도값 가져오기
[Python/FLIR] PySpin 온도 데이터 팔레트 적용
· 온도값 팔레트 이미지 만들어보기
[Python/FLIR] PySpin 카메라 제어(1)
· QueryCase를 사용한 측정 온도 범위 변경 예제
[Python/FLIR] PySpin 카메라 제어(2)
· FPS변경 및 NUC Excute 예제
Python으로 Spinnaker SDK를 활용해 FLIR A Series 카메라를 제어하는 방법을 배워보세요.
본 강좌에서는 FLIR의 공식 예제를 기반으로 하여 PySpin을 사용한 Temperature Linear(100K, 10K)
모드 설정, 온도값 확인 및 섭씨 변환, 그리고 데이터를 이미지로 변환하는 과정을 다룹니다.
특히 Spinnaker SDK를 활용한 온도 데이터 처리에 관심 있는 분들에게 유용한 정보가 될 것입니다.
1. Temperature Linear 모드 설정
raw_data를 온도 데이터로 변환하여 ROI에 대한 값과 Max, Min값 등 유의미한 값을 확인할 수 있습니다.
1-1. Pixel Format을 16bit로 설정합니다.
Pixel Format은 스트리밍 하면 변경할 수 없습니다.
PySpin카메라에서 온도값 가져오기(1) 강을 참고하여 Mono16 비트로 설정합니다.
1-2. IR Format을 TemperatureLinear으로 맞추어 줍니다.
IR Format을 변경하게 되면, 이미지를 grab(GetNextImage)하는 raw_data가 선택한 모드에 따라 들어오게 됩니다.
IR Format은 스트리밍 중에도 변경이 가능합니다.
하지만, 스트리밍 중 모드가 변경되면 raw_data 후처리를 변경한 모드에 따라 변경해주어야 합니다.
PySpin카메라에서 온도값 가져오기(1) 강을 참고하여 IRFormat node를 TemperatureLinear 모드로 설정합니다.
1) TemperatureLinear 10K
2) TemperatureLinear 100K
2. 온도값 확인 및 섭씨 변환
TemperatureLinear 모드 변경 후, 들어오는 raw data 해상도의 각 픽셀은kelvin 단위의 온도값 입니다.
10K와 100K는 각 픽셀에 맞게 일정한 값을 곱해주고, kelvin을 Celsius값으로 변경이 필요합니다.
1) TemperatureLinear 10K
TemperatureLinear 10K는 측정된 값을 섭씨 온도로 변환할 때, 기존 데이터에 0.01을 곱한 후 -273.15를 빼주는 방식으로 처리됩니다.
TemperatureLinear 10K raw_data
TemperatureLinear 10K 섭씨 변환 공식
Celsius_data = (image_data * 0.01) - 273.15
2) TemperatureLinear 100K
TemperatureLinear 100K는 측정된 값을 섭씨 온도로 변환할 때, 기존 데이터에 0.1을 곱한 후 -273.15를 빼주는 방식으로 처리됩니다.
TemperatureLinear 100K raw_data
TemperatureLinear 100K 섭씨 변환 공식
위의 과정이 끝난 후, 모든 픽셀 데이터를 Celsius data로 얻을 수 있습니다.
최종 Celsius 데이터
3. 온도값 이미지 시각화
raw_data로부터 이미지를 시각화하여 상대적인 온도 분포를 눈으로 확인할 수 있습니다.
Temperature Linear모드로 들어오는 rawdata는 16bit의 0 ~ 66535 사이의 값입니다.
이미지 표현 범위인 0~255로 변경하기 위하여 정규화를 진행합니다.
1) 정규화를 하기 위하여 raw_data를 섭씨로 바꾼 데이터의 최댓값과 최솟값을 구해줍니다.
max 값 : max_temperature = np.max(Celsius_data)
min 값 : min_temperature = np.min(Celsius_data)
2) Celsius_data와 max값, min값을 사용해 정규화를 진행합니다.(정규화 시 cv2.normalize 함수를 사용해도 무관합니다.)
# 온도 데이터를 0 ~ 255 범위로 정규화
# 정규화는 0~1 범위로 매핑되고, 255를 곱해서 표현 범위(0~255)로 확장
temp_to_img = 255 * (Celsius_int - min_temperature) / (max_temperature - min_temperature)
# float -> int8 변환
output_image = temp_to_img.astype(np.uint8)
# 단일 채널(1채널) -> 3채널로 변경
output_image = cv2.cvtColor(output_image, cv2.COLOR_GRAY2BGR)
최종 ouput_image
이렇게 해서 Spinnaker SDK를 활용해 FLIR A Series 카메라에서 온도 데이터를 가져오고
이를 섭씨로 변환한 후 이미지로 시각화하는 과정까지 살펴보았습니다.
Temperature Linear 모드를 적절히 설정하면 보다 정밀한 온도 측정이 가능하며
데이터를 이미지 형태로 변환하면 시각적으로 쉽게 분석할 수 있습니다.
다음 강좌에서는 더욱 효율적인 데이터 활용법과 추가적인 기능을 다룰 예정이니 많은 관심 부탁드립니다.
궁금한 점이 있거나 더 알고 싶은 내용이 있다면 아래 문의 바로가기로 남겨주세요!
감사합니다.