# cinnapea/rgb_thermal_fusion__c__ architecture

> Architecture diagram of the GitHub repository cinnapea/rgb_thermal_fusion__c__, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/cinnapea/rgb_thermal_fusion__c__
- Repository: https://github.com/cinnapea/rgb_thermal_fusion__c__

## Overview

This repository is a CPU-oriented thermal-image enhancement and optional RGB–thermal fusion application. The main user workflow loads visible and thermal images, checks the pair, runs the proposed fusion, and displays or saves the fused image and intermediate layers. A separate triage workflow compares the proposed method with RGF and MSGF references and evaluates no-reference image metrics. The graph reflects README capabilities and sampled entry points; some GUI wiring and unsampled reference implementations are represented only at the documented subsystem level.

Main entry points: [`src/te_rgf_rgb.cpp`](https://github.com/cinnapea/rgb_thermal_fusion__c__/blob/main/src/te_rgf_rgb.cpp) (Fusion Entry), [`src/run_triage.cpp`](https://github.com/cinnapea/rgb_thermal_fusion__c__/blob/main/src/run_triage.cpp) (Triage Runner), [`apps/gui_qt/MainWindow.cpp`](https://github.com/cinnapea/rgb_thermal_fusion__c__/blob/main/apps/gui_qt/MainWindow.cpp) (Qt GUI), [`apps/cli/main.cpp`](https://github.com/cinnapea/rgb_thermal_fusion__c__/blob/main/apps/cli/main.cpp) (CLI Runner)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_apps["User Applications"]
  node_gui["Qt GUI<br/>[MainWindow.cpp]"]
  node_cli["CLI Runner<br/>[main.cpp]"]
end

subgraph group_fusion["Proposed Fusion"]
  node_fusion_api["Fusion Entry<br/>[te_rgf_rgb.cpp]"]
  node_thermal_scale["Thermal Scaling<br/>[te_rgf_rgb.cpp]"]
  node_decompose["Multiscale RGF<br/>[te_rgf_rgb.cpp]"]
  node_weights["Detail Weights<br/>[te_rgf_rgb.cpp]"]
  node_enhance["Detail Enhancement<br/>[te_rgf_rgb.cpp]"]
  node_base["Base CLAHE<br/>[te_rgf_rgb.cpp]"]
  node_luminance["Luminance Fusion<br/>[te_rgf_rgb.cpp]"]
end

subgraph group_references["Reference Methods"]
  node_rgf["RGF Reference<br/>[rgf.cpp]"]
  node_msgf["MSGF Reference<br/>[msgf.cpp]"]
end

subgraph group_evaluation["Triage Evaluation"]
  node_triage_runner["Triage Runner<br/>[run_triage.cpp]"]
  node_metrics["Image Metrics<br/>[triage_metrics.cpp]"]
end

node_user(("User"))
node_images["Input Images"]
node_triage_data["Frame Dataset"]
node_triage_results["Comparison Results"]

node_user -->|"operates"| node_gui
node_user -->|"runs"| node_cli
node_images -->|"loads"| node_gui
node_images -->|"loads"| node_cli
node_gui -->|"invokes"| node_fusion_api
node_cli -->|"invokes"| node_fusion_api
node_fusion_api -->|"normalizes"| node_thermal_scale
node_fusion_api -->|"decomposes"| node_decompose
node_fusion_api -->|"computes weights"| node_weights
node_fusion_api -->|"enhances details"| node_enhance
node_fusion_api -->|"enhances base"| node_base
node_fusion_api -->|"builds output"| node_luminance
node_fusion_api -->|"returns result"| node_gui
node_fusion_api -->|"returns result"| node_cli
node_user -->|"runs evaluation"| node_triage_runner
node_triage_data -->|"supplies frames"| node_triage_runner
node_triage_runner -->|"evaluates RGF"| node_rgf
node_triage_runner -->|"evaluates MSGF"| node_msgf
node_triage_runner -->|"evaluates proposed"| node_fusion_api
node_triage_runner -->|"measures outputs"| node_metrics
node_triage_runner -->|"writes comparisons"| node_triage_results
node_gui -->|"compares RGF"| node_rgf
node_gui -->|"compares MSGF"| node_msgf
node_gui -->|"evaluates images"| node_metrics

click node_gui "https://github.com/cinnapea/rgb_thermal_fusion__c__/blob/main/apps/gui_qt/MainWindow.cpp"
click node_cli "https://github.com/cinnapea/rgb_thermal_fusion__c__/blob/main/apps/cli/main.cpp"
click node_fusion_api "https://github.com/cinnapea/rgb_thermal_fusion__c__/blob/main/src/te_rgf_rgb.cpp"
click node_thermal_scale "https://github.com/cinnapea/rgb_thermal_fusion__c__/blob/main/src/te_rgf_rgb.cpp"
click node_decompose "https://github.com/cinnapea/rgb_thermal_fusion__c__/blob/main/src/te_rgf_rgb.cpp"
click node_weights "https://github.com/cinnapea/rgb_thermal_fusion__c__/blob/main/src/te_rgf_rgb.cpp"
click node_enhance "https://github.com/cinnapea/rgb_thermal_fusion__c__/blob/main/src/te_rgf_rgb.cpp"
click node_base "https://github.com/cinnapea/rgb_thermal_fusion__c__/blob/main/src/te_rgf_rgb.cpp"
click node_luminance "https://github.com/cinnapea/rgb_thermal_fusion__c__/blob/main/src/te_rgf_rgb.cpp"
click node_rgf "https://github.com/cinnapea/rgb_thermal_fusion__c__/blob/main/src/rgf.cpp"
click node_msgf "https://github.com/cinnapea/rgb_thermal_fusion__c__/blob/main/src/msgf.cpp"
click node_triage_runner "https://github.com/cinnapea/rgb_thermal_fusion__c__/blob/main/src/run_triage.cpp"
click node_metrics "https://github.com/cinnapea/rgb_thermal_fusion__c__/blob/main/src/triage_metrics.cpp"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_gui,node_cli,node_user toneBlue
class node_fusion_api,node_thermal_scale,node_decompose,node_weights,node_enhance,node_base,node_luminance toneAmber
class node_rgf,node_msgf toneMint
class node_triage_runner,node_metrics toneRose
class node_images,node_triage_data,node_triage_results toneIndigo
```

## Components

### User Applications

- [Qt GUI](https://github.com/cinnapea/rgb_thermal_fusion__c__/blob/main/apps/gui_qt/MainWindow.cpp): `apps/gui_qt/MainWindow.cpp`
- [CLI Runner](https://github.com/cinnapea/rgb_thermal_fusion__c__/blob/main/apps/cli/main.cpp): `apps/cli/main.cpp`

### Proposed Fusion

- [Fusion Entry](https://github.com/cinnapea/rgb_thermal_fusion__c__/blob/main/src/te_rgf_rgb.cpp): `src/te_rgf_rgb.cpp`
- [Thermal Scaling](https://github.com/cinnapea/rgb_thermal_fusion__c__/blob/main/src/te_rgf_rgb.cpp): `src/te_rgf_rgb.cpp`
- [Multiscale RGF](https://github.com/cinnapea/rgb_thermal_fusion__c__/blob/main/src/te_rgf_rgb.cpp): `src/te_rgf_rgb.cpp`
- [Detail Weights](https://github.com/cinnapea/rgb_thermal_fusion__c__/blob/main/src/te_rgf_rgb.cpp): `src/te_rgf_rgb.cpp`
- [Detail Enhancement](https://github.com/cinnapea/rgb_thermal_fusion__c__/blob/main/src/te_rgf_rgb.cpp): `src/te_rgf_rgb.cpp`
- [Base CLAHE](https://github.com/cinnapea/rgb_thermal_fusion__c__/blob/main/src/te_rgf_rgb.cpp): `src/te_rgf_rgb.cpp`
- [Luminance Fusion](https://github.com/cinnapea/rgb_thermal_fusion__c__/blob/main/src/te_rgf_rgb.cpp): `src/te_rgf_rgb.cpp`

### Reference Methods

- [RGF Reference](https://github.com/cinnapea/rgb_thermal_fusion__c__/blob/main/src/rgf.cpp): `src/rgf.cpp`
- [MSGF Reference](https://github.com/cinnapea/rgb_thermal_fusion__c__/blob/main/src/msgf.cpp): `src/msgf.cpp`

### Triage Evaluation

- [Triage Runner](https://github.com/cinnapea/rgb_thermal_fusion__c__/blob/main/src/run_triage.cpp): `src/run_triage.cpp`
- [Image Metrics](https://github.com/cinnapea/rgb_thermal_fusion__c__/blob/main/src/triage_metrics.cpp): `src/triage_metrics.cpp`

### Other components

- **User**
- **Input Images**
- **Frame Dataset**
- **Comparison Results**

## Connections

- User → Qt GUI: operates
- User → CLI Runner: runs
- Input Images → Qt GUI: loads
- Input Images → CLI Runner: loads
- Qt GUI → Fusion Entry: invokes
- CLI Runner → Fusion Entry: invokes
- Fusion Entry → Thermal Scaling: normalizes
- Fusion Entry → Multiscale RGF: decomposes
- Fusion Entry → Detail Weights: computes weights
- Fusion Entry → Detail Enhancement: enhances details
- Fusion Entry → Base CLAHE: enhances base
- Fusion Entry → Luminance Fusion: builds output
- Fusion Entry → Qt GUI: returns result
- Fusion Entry → CLI Runner: returns result
- User → Triage Runner: runs evaluation
- Frame Dataset → Triage Runner: supplies frames
- Triage Runner → RGF Reference: evaluates RGF
- Triage Runner → MSGF Reference: evaluates MSGF
- Triage Runner → Fusion Entry: evaluates proposed
- Triage Runner → Image Metrics: measures outputs
- Triage Runner → Comparison Results: writes comparisons
- Qt GUI → RGF Reference: compares RGF
- Qt GUI → MSGF Reference: compares MSGF
- Qt GUI → Image Metrics: evaluates images
