{"id":21690082,"url":"https://github.com/rodan/thpp","last_synced_at":"2025-04-12T09:35:36.218Z","repository":{"id":97890157,"uuid":"605223008","full_name":"rodan/thpp","owner":"rodan","description":"thermal processing pannel  -  viewer and analyzer of radiometric images","archived":false,"fork":false,"pushed_at":"2024-01-07T15:57:56.000Z","size":36146,"stargazers_count":9,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-01-08T13:48:52.416Z","etag":null,"topics":["flir","irtis","linux","linux-application","thermography"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rodan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2023-02-22T17:53:56.000Z","updated_at":"2023-11-28T14:57:40.000Z","dependencies_parsed_at":"2024-01-07T13:26:52.843Z","dependency_job_id":"3e5f9353-d0db-46bd-bb9a-5529af9b2184","html_url":"https://github.com/rodan/thpp","commit_stats":null,"previous_names":[],"tags_count":1,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rodan%2Fthpp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rodan%2Fthpp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rodan%2Fthpp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rodan%2Fthpp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rodan","download_url":"https://codeload.github.com/rodan/thpp/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226371306,"owners_count":17614488,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["flir","irtis","linux","linux-application","thermography"],"created_at":"2024-11-25T17:28:58.451Z","updated_at":"2024-11-25T17:28:58.969Z","avatar_url":"https://github.com/rodan.png","language":"C++","readme":"\n\u003ca href=\"https://scan.coverity.com/projects/rodan-thpp\"\u003e\n  \u003cimg alt=\"Coverity Scan Build Status\"\n       src=\"https://scan.coverity.com/projects/27526/badge.svg\"/\u003e\n\u003c/a\u003e\n\n## ThPP\n\nThermal processing panel is viewer/analyzer of thermal images targeted for Linux and BSD. It supports images generated by most Flir and Irtis infrared cameras.\nFeatures include: temperature compensation recalculation, rescaling, zoom based on nearest interpolation or realsr algorithms, HD scale, 14 palettes generated from svg files, histogram, line profile, image overlays for highlighting, level slices, temperature-dependant grown highlights, image and plot export functions.\n\nA full overview of the program capabilities and a sample report can be downloaded from the [release section](https://github.com/rodan/thpp/releases).\n\n![screenshot](./img/thpp.png)\n\n```\n source:        https://github.com/rodan/thpp\n author:        Petre Rodan \u003c2b4eda@subdimension.ro\u003e\n license:       GNU GPLv3\n\ngraphical user interface based on Dear ImGui\n source:        https://github.com/ocornut/imgui\n author:        Aymar Cornut\n license:       MIT\n\npng decode/encode functionality provided by\n source:        https://github.com/lvandeve/lodepng\n author:        Lode Vandevenne\n license:       zlib (GPL compatible)\n\ntiff decode/encode functionality provided by\n source:        https://github.com/jkriege2/TinyTIFF\n author:        Jan W. Krieger\n license:       LGPL-3.0\n\nerror checking based on the Linux Programming Interface book's library\n source:        https://nostarch.com/tlpi/\n author:        Michael Kerrisk\n license:       GNU GPLv3\n\nmulti-threading provided by OpenMP\n source:        https://www.openmp.org/\n\n```\n\nconversion algorithm for images generated by Flir IR cameras provided by\n\nGlenn J. Tattersall. (2017, December 3).\nThermimage: Thermal Image Analysis.doi: 10.5281/zenodo.1069704 (URL:\n\u003chttp://doi.org/10.5281/zenodo.1069704\u003e), R package, \u0026lt;URL:\n\u003chttps://CRAN.R-project.org/package=Thermimage\u003e\u0026gt;.\n[![DOI](https://zenodo.org/badge/33262273.svg)](https://zenodo.org/badge/latestdoi/33262273)\n\n### git clone\n\nthis repository is using a few submodules that will get linked into the final binary.\nso when you clone the repo make sure you also retrieve the submodules, like so:\n\n```\ngit clone --recurse-submodules https://github.com/rodan/thpp.git\n```\n\n### Functionality\n\ncurrently supported image formats:\n\ncamera | image type | image encoding\n--- | --- | ---\nFlir b40 | radiometric JPG 120x120 | png inside jpeg exif, 16bps\nFlir b50 | radiometric JPG 140x140 | tiff inside jpeg exif, 16bps\nFlir i3 | radiometric JPG 60x60 | png inside jpeg exif, 16bps\nFlir i5 | radiometric JPG 80x80 | png inside jpeg exif, 16bps\nFlir i7 | radiometric JPG 120x120 | png inside jpeg exif, 16bps\nFlir i50 | radiometric JPG 140x140 | png inside jpeg exif, 16bps\nFlir i60 | radiometric JPG 180x180 | tiff inside jpeg exif, 16bps\nFlir AX5 | radiometric JPG 320x256 | tiff inside jpeg exif, 16bps\nFlir AX8 | radiometric JPG 80x60 | png inside jpeg exif, 16bps\nFlir B20HS | radiometric JPG 320x240 | png inside jpeg exif, 16bps\nFlir B335 | radiometric JPG 320x240 | png inside jpeg exif, 16bps\nFlir Bertha3 | radiometric JPG 640x480 | tiff inside jpeg exif, 16bps\nFlir Duo Pro R| radiometric JPG 640x512 | tiff inside jpeg exif, 16bps\nFlir E4 | radiometric JPG 320x240| png inside jpeg exif, 16bps\nFlir E5 | radiometric JPG 120x90, 320x240 | png inside jpeg exif, 16bps\nFlir E6 | radiometric JPG 160x120 | png inside jpeg exif, 16bps\nFlir E8 | radiometric JPG 320x240 | png inside jpeg exif, 16bps\nFlir E30 | radiometric JPG 160x120 | tiff inside jpeg exif, 16bps\nFlir E30bx | radiometric JPG 160x120 | tiff inside jpeg exif, 16bps\nFlir E40 | radiometric JPG 320x240 | tiff inside jpeg exif, 16bps\nFlir E40bx | radiometric JPG 160x120 | tiff inside jpeg exif, 16bps\nFlir E50 | radiometric JPG 240x180 | tiff inside jpeg exif, 16bps\nFlir E60 | radiometric JPG 320x240 | tiff inside jpeg exif, 16bps\nFlir E76 | radiometric JPG 320x240 | png inside jpeg exif, 16bps\nFlir ONE | radiometric JPG 160x120 | png inside jpeg exif, 16bps\nFlir P20 NTSC | radiometric JPG 320x240 | png inside jpeg exif, 16bps\nFlir P60 | radiometric JPG 320x240 | png inside jpeg exif, 16bps\nFlir P60 NTSC | radiometric JPG 320x240 | png inside jpeg exif, 16bps\nFlir P60 PAL | radiometric JPG 320x240 | png inside jpeg exif, 16bps\nFlir P640 | radiometric JPG 640x480 | tiff inside jpeg exif, 16bps\nFlir P660 | radiometric JPG 640x480 | tiff inside jpeg exif, 16bps\nFlir S65 NTSC | radiometric JPG 320x240 | png inside jpeg exif, 16bps\nFlir SC660 | radiometric JPG 640x480 | tiff inside jpeg exif, 16bps\nFlir T250 Western | radiometric JPG 200x150 | tiff inside jpeg exif, 16bps\nFlir T360 Western | radiometric JPG 320x240 | tiff inside jpeg exif, 16bps\nFlir T400 | radiometric JPG 320x240 | tiff inside jpeg exif, 16bps\nFlir T400 Western | radiometric JPG 320x240 | tiff inside jpeg exif, 16bps\nFlir T420 | radiometric JPG 320x240 | png inside jpeg exif, 16bps\nFlir T425 | radiometric JPG 320x240 | tiff inside jpeg exif, 16bps\nFlir T620bx | radiometric JPG 640x480 | tiff inside jpeg exif, 16bps\nFlir T640 | radiometric JPG 640x480 | tiff inside jpeg exif, 16bps\nFlir Thermacam B-360 Western | radiometric JPG 320x240 | tiff inside jpeg exif, 16bps\nFlir ThermaCAM E25 | radiometric JPG 160x120 | png inside jpeg exif, 16bps\nFlir Thermacam E65 | radiometric JPG 160x120 | png inside jpeg exif, 16bps\nFlir Thermacam E320 | radiometric JPG 320x240 | png inside jpeg exif, 16bps\nFlir Thermacam EX320 | radiometric JPG 320x240 | png inside jpeg exif, 16bps\nFlir ThermaCAM P640 | radiometric JPG 640x480 | tiff inside jpeg exif, 16bps\nFlir ThermaCAM P660 Western | radiometric JPG 640x480 | tiff inside jpeg exif, 16bps\nFlir ThermaCAM SC640 | radiometric JPG 640x480 | tiff inside jpeg exif, 16bps\nFlir ThermaCAM SC660 Western | radiometric JPG 640x480 | tiff inside jpeg exif, 16bps\nFlir ThermaCAM T-400 | radiometric JPG 320x240 | tiff inside jpeg exif, 16bps\nFlir ThermaCAM P660 Western | radiometric JPG 640x480 | tiff inside jpeg exif, 16bps\nFlir ThermaCAM SC660 Western | radiometric JPG 640x480 | tiff inside jpeg exif, 16bps\nFlir Z-CAMERA | radiometric JPG 80x80 | png inside jpeg exif, 16bps\nIrtis 200, 2000+ | ver2, ver3 DTV files, single frame | raw, 8bps 16bps\n\n\nthe images generated by the following cameras can be opened, however a large (over 1dC) temperature delta was observed on the sample images when comparing withthe Flir Thermal Sudio software. this is either due to clipping the temperature limits, applying special calibration coefficients or using a custom formula for calculating the absolute temperature. since all this is done in a black box we might never know, but it would help if you could provide extra sample images.\n\ncamera | image type | problem\n--- | --- | ---\nDJI zenmuse | radiometric JPG 640x512 | temp delta\nFlir ONE Pro| radiometric JPG 640x480 | temp delta\nFlir P25 PAL | radiometric JPG 320x240 | temp delta\nFlir T620 | radiometric JPG 640x480 | unexplained clipping at 160.2dC\nFlir T630sc | radiometric JPG 640x480 | unexplained clipping at -26dC\nFlir Thermacam E2 | radiometric JPG 160x120 | unexplained clipping at -30dC\n\n\ncurrently supported functions:\n\n * export radiometric file to png\n * get the temperature of any pixel of the image\n * select color presentation based on 13 in-built palettes\n * thermal scale\n * rescale image based on custom temperature limits\n * reconfigure camera data (distance to target, emissivity, atmosperic temperature, relative humidity) for temperature compensation\n * zoom image. 'nearest' interpolation is used by default with optional support for real-ESRGAN if that package is installed on the system\n * temperature histogram\n * thumbnail view of all files in a directory in an image library window\n * customizable file properties table\n * initial support for line profile\n\n\nkeybinds for the viewport:\n\n * mouse scrollwheel  - vertical scroll of a large image\n * SHIFT + mouse scrollwheel  - horizontal scroll of a large image\n * CTRL + mouse scrollwheel  - zoom image\n\n### Build requirements\n\nthe code depends on the headers and libraries provided by the following packages:\n\n * compiler with OpenMP support\n * media-libs/glfw-3.3.8 (Portable OpenGL FrameWork)\n\ncompilation is simple, one only needs to\n```\ncd ./src\nmake\n```\n\nbuild scripts are also provided as part of a Gentoo [overlay](https://github.com/rodan/overlay) and a FreeBSD [port](https://github.com/rodan/freebsd-overlay).\n\n### Runtime requirements\n\n * media-libs/exiftool-12.42\n\n optional package used for the image restoration algorithm after a 4x rescale:\n\n * media-gfx/realesrgan-ncnn-vulkan\n\ncomparison between 4x zoom with nearest interpolation (left) vs realsr (on the right):\n\n![screenshot](./img/thpp_realsr_interpolation.png)\n\n### Usage example\n\n```\n./thpp --input ../img/IR_6357.jpg --output /tmp/foo.png -z 4\n```\n\n### Testing\n\nthe code itself is static-scanned by [llvm's scan-build](https://clang-analyzer.llvm.org/), [cppcheck](http://cppcheck.net/) and [coverity](https://scan.coverity.com/projects/rodan-thpp?tab=overview). Dynamic memory allocation in the PC applications is checked with [valgrind](https://valgrind.org/).\n\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frodan%2Fthpp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frodan%2Fthpp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frodan%2Fthpp/lists"}