Ultra-Fast Thermal Imager: 12.5Hz C++ Performance with Medical Detection
Demo video of my thermal imaging module achieving 8Hz sensor/12.5Hz display refresh rates (fall short with all the math in the background however very quick) - a complete rewrite from CircuitPython to C++. While CircuitPython was too slow for the frame rates I needed, the main driver for C++ was integration with my Talky voice interface system, which is C++ only.
Technical Achievements:
- Custom display driver: I couldn't get existing SSD1325 drivers to work properly and needed a fast version with true 4-bit grayscale support (0-15 levels), so I wrote my own
- Performance optimizations: Implemented lookup tables for 20x faster temperature conversion, sparse sampling algorithms, and anti-ghosting filters to handle the high refresh rates
- Silky smooth imaging: The combination of optimizations delivers fluid thermal visualization with excellent contrast
Medical Mode Intelligence: The system starts in standard thermal imaging, then auto-switches to medical mode after 30 seconds. In medical mode, it performs human skin detection and applies a 1.5°C offset to estimate core body temperature. This enables real-time classification of hypothermia, normal temperature, and various fever levels (low, moderate, high, critical).
C++ Integration Benefits: The C++ rewrite solved both the performance bottleneck and enables seamless integration with the Talky voice system. The low-level optimizations deliver the fluid performance you see in the demo.
This thermal module will be a key component in the complete Tricorder build, providing both standard imaging and medical-grade temperature screening.
Apollo Timbers
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.