[C++][Lepton/Raspberry Pi] 열화상 영상처리 예제 (Min/Max 탐지 및 Hotspot ROI Tracking)

조회수 168

53be47fc44957.png

앞서 소개한 [Lepton/Raspberry Pi]24년 최신 셋업 가이드 예제는

Lepton의 열화상 영상을 화면에 표시하는 기본적인 기능을 제공합니다.

이번에는 해당 예제 프로그램을 기반으로 열화상 데이터 분석 기능을 추가하는 방법을 소개합니다.

이번 예제에서는 다음과 같은 기능을 구현했습니다.



  • 프레임에서 최대 온도 / 최소 온도 탐지

  • 최대 온도 위치에 ROI Tracking Box 표시

  • 영상 위에 Min / Max 온도 정보 표시

  • UI 확대 시에도 깨지지 않는 Overlay Rendering 구조 개선


이 작업은 기존 프로그램 구조를 크게 변경하지 않고도 비교적 간단하게 구현할 수 있습니다.





1-1. Lepton 열화상 데이터 구조

Lepton 카메라는 각 픽셀마다 온도를 의미하는 RAW 값을 출력합니다.

예를 들어 Lepton 3.5의 해상도는 다음과 같습니다.



160 × 120



즉 한 프레임에는



160 × 120 = 19,200 pixels



의 온도 데이터가 존재합니다.

각 픽셀은 다음과 같은 형태의 16bit RAW 값으로 구성됩니다.



uint16_t thermalData[160*120]



Radiometric 버전에서는 이 RAW 값을 이용해 실제 온도를 계산할 수 있습니다.

예시:



Temperature (°C) = (RAW / 100) - 273.15


1-2. Min / Max 온도 탐지

프레임에서 최대 온도와 최소 온도를 찾기 위해서는 모든 픽셀을 순회하면서 값을 비교하면 됩니다.

예제 코드:



uint16_t maxVal = 0; uint16_t minVal = 65535; QPoint maxPt; QPoint minPt; for(int y=0; y<height; y++) {    for(int x=0; x<width; x++)    {        uint16_t val = frameBuffer[y*width + x];        if(val > maxVal)        {            maxVal = val;            maxPt = QPoint(x,y);        }        if(val < minVal)        {            minVal = val;            minPt = QPoint(x,y);        }    } }



이렇게 계산된 위치는 이후 ROI Tracking 박스를 표시하는 데 사용됩니다.


1-3. 기존 Overlay 구조의 문제

기존 예제 프로그램에서는 Overlay가 다음 구조로 그려집니다.



Frame Processing      ↓ Thermal Image 생성      ↓ Overlay (Text / Cross / Box)      ↓ QLabel Display



문제는 Overlay가 영상 픽셀 좌표 기준으로 그려진다는 점입니다.

예를 들어

원본 영상



160 × 120



Qt GUI에서 확대



640 × 480



이 경우 다음 문제가 발생합니다.

  • 선 두께가 UI 확대에 따라 증가

  • 폰트 크기 왜곡

  • Overlay 위치 오차 발생

즉 UI 크기가 변하면 Overlay도 같이 확대되는 문제가 발생합니다.


1-4. Overlay Rendering 구조 개선

이 문제를 해결하기 위해 Overlay를 영상이 아닌 UI 레벨에서 그리는 방식으로 변경했습니다.

개선된 구조:



LeptonThread ↓ QImage (순수 영상) ↓ MyLabel ↓ paintEvent() ↓ Overlay Rendering



핵심 변경 사항은 다음과 같습니다.

  • LeptonThread는 영상 데이터만 전달

  • Overlay 정보는 Signal로 전달

  • MyLabel의 paintEvent()에서 Overlay Rendering


이 방식으로 구현한다면 장점은 다음과 같습니다.

  • 폰트 크기 고정

  • 선 두께 고정

  • UI 확대 시 Overlay 안정성 확보


1-5. Overlay 데이터 전달

LeptonThread에서 다음 정보를 계산합니다.

  • 최대 온도 위치

  • 최소 온도 위치

  • 최대 RAW 값

  • 최소 RAW 값

  • FPS

이 데이터를 Qt Signal로 전달합니다.



emit updateOverlay(m_maxPt, m_minPt, m_maxRaw, m_minRaw, m_fps);



그리고 Label에서 Slot으로 받습니다.



connect(thread,        SIGNAL(updateOverlay(QPoint,QPoint,uint16_t,uint16_t,float)),        myLabel,        SLOT(setOverlay(QPoint,QPoint,uint16_t,uint16_t,float)));




1-6. 좌표 변환

Overlay를 정확하게 표시하기 위해서는

원본 영상 좌표 → 화면 좌표 변환이 필요합니다.

예제 코드:



int sx = drawRect.left() + pt.x() * drawRect.width() / imageWidth; int sy = drawRect.top() + pt.y() * drawRect.height() / imageHeight;



이 방법을 사용하면 영상이 확대되어도 Overlay 위치가 정확하게 유지됩니다.




1-7. ROI Tracking Box 표시

최대 온도 위치에는 다음과 같이 Tracking Box를 표시합니다.

예제 코드:



painter.setPen(QPen(Qt::red,2)); painter.drawRect( sx - boxSize/2, sy - boxSize/2, boxSize, boxSize );



결과 예시

+-----------------------+

|                                   |

|        [ HOT ]              |

|          □                     |

|                                   |

+-----------------------+



43f3c939f84c0.png



이 기능은 다음과 같은 응용에 활용할 수 있습니다.

  • Hot Spot 감시

  • 산업 설비 발열 감지

  • 화재 조기 탐지

  • 전기 설비 이상 감지




1-8. 결과

이번 개선 작업을 통해 다음 기능이 추가되었습니다.

  • 실시간 Min / Max 온도 표시

  • 최대 온도 위치 ROI Tracking

  • UI 확대 시에도 정확한 Overlay 표시


1-9. 확장 가능 기능

이 구조를 기반으로 다음과 같은 기능을 쉽게 추가할 수 있습니다.

  • 다중 ROI 온도 측정

  • Isotherm 표시

  • 온도 알람 시스템

  • 영상 녹화 기능

  • AI 기반 객체 탐지





FLIR Lepton은 작은 크기와 저전력 설계로 다양한 임베디드 시스템에서 활용되고 있습니다.

Raspberry Pi와 결합하면 비교적 간단한 구성으로도 열화상 영상 처리 시스템을 구축할 수 있습니다.

본 글에서 소개한 Min/Max 탐지 및 ROI Tracking 기능의 세부 내용은

상담을 통하여 별도로 제공하고 있습니다.






Contact us.

블로그 바로가기
www.blog.naver.com/mdstec_flir

블로그 방문하기

MDS 교육 수강하기
2026 하반기 일정으로 안내 예정

수강신청 바로가기


@MDS Tech Inc. All Rights Reserved.

Youtube↖︎

Instagram↖︎

Facebook↖︎

주소 : 13493 경기도 성남시 분당구 대왕판교로 644번길 49 DTC타워 9층TEL: 031-627-3000 FAX:031-627-3008

사업자등록번호 : 117-81-22859대표자 : 이창열, 이정승


©MDS Tech Inc. All Rights Reserved.

주소 : 13493 경기도 성남시 분당구 대왕판교로 644번길 49 DTC타워 9층

TEL: 031-627-3000 FAX:031-627-3008

사업자등록번호 : 117-81-22859대표자 : 이창열, 이정승

©MDS Tech Inc. All Rights Reserved.

열화상 솔루션 도입 상담이 필요하신가요? 전화 문의 : 031-602-5119
상담 신청하기