$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
Questo studio ha utilizzato esclusivamente set di dati di imaging TC e MRI de-identificati disponibili pubblicamente. Non sono stati coinvolti soggetti umani o animali vivi. Pertanto, non era richiesta l'approvazione di un comitato di revisione istituzionale (IRB) o di un comitato etico.
Panoramica del metodo
Questo protocollo presenta una pipeline riproducibile per il denoising delle immagini mediche ad alta efficienza energetica. Combina tecniche di pre-elaborazione, tra cui filtri di nitidezza e clustering K-means, con un autoencoder basato su rete neurale convoluzionale (CNN) per ridurre il rumore delle immagini. Questo metodo integrato migliora la qualità dell'immagine riducendo al contempo i tempi di formazione e il consumo energetico dell'hardware, supportando una diagnostica medica sostenibile 19,20,21,22,23. Nella Figura 5 viene riepilogato il framework end-to-end.

Figura 5: Proposta di architettura del framework di denoising. Questa figura delinea l'intera pipeline: acquisizione dei dati, pre-elaborazione (nitidezza + segmentazione K-means), seguita dal denoising dell'autoencoder basato su CNN. Sottolinea l'approccio ibrido volto a ridurre il consumo di energia preservando la fedeltà strutturale. Clicca qui per visualizzare una versione più grande di questa figura.
Il flusso di lavoro completo è riassunto nella Figura 5, che mostra la sequenza dall'impostazione del set di dati alla pre-elaborazione (sharpening e K-means) fino al denoising dell'autoencoder CNN fino al test.
Configurazione del software e dell'ambiente
Opzione A - Google Colab (consigliata per la riproducibilità): Andare su colab.research.google.com, fare clic su Nuovo blocco appunti. Selezionare Runtime > Cambia tipo di runtime > Acceleratore hardware: GPU > Salva. Fare clic su File > Carica per caricare il taccuino fornito e il set di dati .zip (oppure connettere Google Drive facendo clic su File > Monta unità). Nella prima cella del codice, installa le dipendenze (già nel notebook): pip install opencv-python scikit-image scikit-learn tensorflow matplotlib numpy pandas. Fare clic su Runtime > Esegui tutto. Verificare che venga visualizzato: (i) riepilogo dell'ambiente con le versioni del pacchetto, (ii) nome della GPU (nell'output della cella) e (iii) creazione di una cartella dell'esperimento runs/YYYY-MM-DD/.
Opzione B - Locale (conda): Apri Anaconda Prompt/Terminal ed esegui:

Posiziona il tuo set di dati in data/raw/ e gli script in code/. Eseguire: codice python/train_autoencoder.py --data_root dati --img_size 256 --k_values 3 5 --epochs 100 --batch 32 --lr 0.001. Confermare per visualizzare: la stampa dell'ambiente, la GPU rilevata e una directory di registro viene eseguita/AAAA-MM-GG/.
Preparazione del dataset
I set di dati disponibili al pubblico di scansioni TC e MRI sono stati reperiti da archivi di imaging medico. Questi set di dati contenevano rumore tipico delle scansioni cliniche del mondo reale e sono stati anonimizzati secondo gli standard istituzionali ed etici 8,9. Ogni immagine è stata ridimensionata a 256 x 256 pixel e memorizzata in formato PNG o DICOM per la compatibilità. I set di dati sono stati suddivisi in modo casuale come segue: 70% per l'addestramento, 15% per la convalida e 15% per i test, garantendo una distribuzione stratificata delle modalità di imaging e dei livelli di rumore". Le statistiche sul rumore sono state misurate utilizzando la varianza media dei pixel prima del denoising.
Organizzare le cartelle: creare una cartella come descritto di seguito:

Per aggiungere immagini, copiare le immagini TC/MRI non identificate in data/raw/CT e data/raw/MRI (PNG, JPG o DICOM). Standardizzare le dimensioni dell'immagine usando Python (consigliato): eseguire la cella del notebook Ridimensiona e converti. Carica ogni immagine, converte la scala di grigi se necessario e si ridimensiona a 256 x 256 .

Un'alternativa consiste nell'utilizzare la GUI (alternativa ImageJ/Fiji) come descritto. Fare clic su File > Importa > sequenza di immagini (o singole immagini), quindi su Tipo di > immagine > 8 bit, > Immagine > Regola dimensioni... > 256 x 256, quindi File > Salva con nome > PNG in data/preproc/.
Crea divisioni: Esegui la divisione della cella del notebook Train/Val/Test (70/15/15); Mescola i nomi dei file e li copia in data/splits/train|val|test/. La console stampa i conteggi (ad esempio, Treno: 700, Val: 150, Test: 150). Checkpoint (osservazione): Apri dati/divide/treno/ e verifica che le immagini siano 256 x 256 e in scala di grigi (1 canale). Mantieni un piccolo manifesto CSV (splits.csv) che elenca il percorso del file, la modalità e l'etichetta divisa.
Pre-elaborazione delle immagini
Usa il nocciolo per affilare 3 x 3. Esegui il miglioramento dell'immagine utilizzando un kernel di nitidezza. Un kernel di convoluzione affilata è stato utilizzato per migliorare i confini anatomici prima della segmentazione:

Questo filtro accentua le strutture importanti potenziando le componenti ad alta frequenza 4,5. Ogni immagine è stata convoluta utilizzando la libreria OpenCV di Python (cv2.filter2D()) per generare l'immagine migliorata. La Figura 6 illustra i confronti tra prima e dopo.

Figura 6: Grafico dell'accuratezza della convalida per diversi valori di k. Grafico a barre che illustra l'accuratezza della convalida raggiunta per vari valori di K utilizzati nella fase di clustering K-means (K=2, 3, 4, 5). La precisione raggiunge il picco di K=3, indicando una separazione ottimale tra le strutture anatomiche e le regioni di rumore. Scala: valori di precisione normalizzati (0-1). Clicca qui per visualizzare una versione più grande di questa figura.
Applica (Python/OpenCV) utilizzando il codice seguente.

In alternativa, utilizzare l'alternativa GUI (ImageJ/Fiji) facendo clic su Elabora > filtri > Convolve. Incolla la matrice 3 x 3 sopra e fai clic su OK > File > Salva con nome > PNG in data/preprocess/enhanced/. Osserva il checkpoint mentre i bordi e i confini degli organi appaiono più nitidi; Se si notano aloni troppo nitidi, ridurre il peso centrale del kernel da 5 a 4,5 e ripetere l'esecuzione. La Figura 7 mostra i risultati prima e dopo la riduzione del rumore. Le immagini precedenti mostrano chiaramente rumore e sfocatura, mentre le immagini successive mostrano una maggiore chiarezza, confini anatomici più nitidi e un contrasto migliorato, dimostrando l'efficacia della pipeline di denoising proposta.

Figura 7: Architettura di rete NAutoencoder a convoluzione. Illustra l'architettura dell'autoencoder: livello di input, encoder (livelli Conv + Pool), collo di bottiglia, decodificatore (Upsampling + livelli Conv trasposti). Ogni strato è etichettato con dimensioni e funzione. Clicca qui per visualizzare una versione più grande di questa figura.
Clustering K-Means per la segmentazione
Le immagini migliorate sono state rimodellate utilizzando NumPy (image.reshape(-1, 1)) e raggruppate utilizzando sklearn.cluster.KMeans(n_clusters=3 o 5). L'output segmentato è stato rimodellato in 2D (np.reshape(clustered_array, image.shape)) per visualizzare le regioni anatomiche rispetto alle zone di rumore14. La tabella 1 elenca le impostazioni di segmentazione.
| Sr No | Valore di k | Accuratezza |
| 1 | 3 | 0.761 |
| 2 | 5 | 0.869 |
| 3 | 7 | 0.75 |
Tabella 1: Valori di k con rispettive precisioni di convalida. Questa tabella presenta le precisioni di convalida ottenute per diversi valori del parametro di clustering k utilizzato nella fase di segmentazione K-medie della pipeline di denoising. I risultati dimostrano che k = 5 produce la massima precisione, guidando la selezione ottimale dei parametri di clustering.
Segmentazione K-Means: rimodella e raggruppa (Python/scikit-learn) utilizzando il codice seguente.

Esegui l'anteprima del colore (opzionale) e mappa le etichette sui colori per il controllo qualità visivo e sovrapponi i bordi dall'immagine nitida. Scegli K correndo con K=3 e K=5; calcolare l'accuratezza della convalida a valle (la tabella 1 elenca le impostazioni; La Figura 6 mostra l'accuratezza rispetto a K). Questo è un posto di blocco; osservare i pixel dominanti di rumore che formano cluster distinti; Le regioni anatomiche dovrebbero rimanere contigue. Se compaiono piccole macchie, applica dei confini anatomici.
Denoising basato su reti neurali
Descrizione dell'architettura: vedere la Figura 8 per lo schema encoder-bottleneck-decoder. Un autoencoder basato su CNN è stato sviluppato utilizzando TensorFlow/Keras. L'architettura includeva: livello di input: immagine in scala di grigi 256 x 256, encoder con tre livelli convoluzionali (kernel: 3 x 3, stride: 1, attivazione ReLU), ciascuno seguito da max-pooling; collo di bottiglia come rappresentazione latente densa, decodificatore con tre strati di sovracampionamento con circonvoluzioni trasposte, output come strato attivato da Sigmoid che produce un'immagine denoizzata. La tabella 2 fornisce i parametri architettonici completi a livello di livello.

Figura 8: Risultati visivi del processo di denoising. Presenta l'immagine disturbata originale, l'immagine pre-elaborata e l'output finale di denoising fianco a fianco per una valutazione qualitativa. Dimostra la conservazione dei bordi e la riduzione degli artefatti. Clicca qui per visualizzare una versione più grande di questa figura.
| Sr No | Attributi di compilazione | Valori degli attributi di compilazione |
| 1 | Ottimizzatore | Adamo |
| 2 | Perdita | Entropia incrociata categoriale |
| 3 | Metriche | Accuratezza |
Tabella 2: Attributi di compilazione della rete neurale. Questa tabella descrive in dettaglio i parametri di compilazione chiave utilizzati per addestrare il modello di autoencoder convoluzionale. Queste impostazioni sono state implementate in TensorFlow e includono l'ottimizzatore, la funzione di perdita, la metrica di valutazione, il numero di epoche e la dimensione del batch.
Configurazione dell'addestramento: i parametri dell'addestramento includevano: funzione di perdita come errore quadratico medio (MSE), ottimizzatore come Adam (tasso di apprendimento = 0,001), dimensione del batch di 32 ed epoche come 100 con arresto anticipato (pazienza = 10).
Di seguito è riportata una breve panoramica della formazione. Avvia la formazione andando su Colab e facendo clic su Runtime > Esegui tutto; verificare che la GPU sia elencata (ad esempio, Tesla T4). Usa python code/train_autoencoder.py --data_root dati --epochs 100 --batch 32 --lr 0.001 --early_stop 10. Il monitoraggio tramite la console stampa l'epoca, l'train_loss, l'val_loss e l'ora/l'epoca. L'arresto anticipato si innesca dopo pazienza=10 epoche senza miglioramenti. Il modello migliore viene salvato in runs/.../checkpoints/best.h5. Questo è un checkpoint, osserva usando il model.summary() che mostra la pila di livelli; il conteggio dei parametri deve corrispondere alla Tabella 2. Se ricevi errori OOM, riduci il batch a 16 o imposta la dimensione dell'input su 224 x 224.
Checkpoint intermedi e risoluzione dei problemi
Dopo la nitidezza e la segmentazione, visualizza l'anteprima di tre immagini per divisione e verifica che (i) i bordi siano migliorati, (ii) le maschere di grappolo siano allineate con l'anatomia. Durante l'addestramento, assicurarsi che la perdita di convalida diminuisca e non diverga. Se l'output denoised appare eccessivamente levigato, ridurre il centro del kernel (4.5) o aumentare le epoche di addestramento di 10 con una velocità di apprendimento inferiore (ad esempio, 5e-4).
Valutazione delle prestazioni: sono state utilizzate le seguenti metriche quantitative: Peak Signal-to-Noise Ratio (PSNR), Structural Similarity Index Measure (SSIM) e Validation Accuracy of denoised image classification.
Il metodo proposto ha migliorato il PSNR da 21,52 a 28,14 dB e il SSIM da 0,76 a 0,86 rispetto ai modelli di base presentati in 7,16. L'efficienza energetica è stata registrata monitorando l'utilizzo della GPU (log NVIDIA-SMI) e il tempo di addestramento. La tabella 3 riassume i risultati della riduzione del rumore.
| Sr No | Metrico | Modello di base |
| 1 | Tempo medio dell'epoca (sec) | 25.8 |
| 2 | Energia totale per l'allenamento (kWh) | 0.52 |
| 3 | Utilizzo GPU (%) | 85% |
| 4 | Tempo di inferenza per immagine (ms) | 18.7 |
| 5 | Precisione di convalida (%) | 76.19% |
| 6 | PSNR (dB) | 21.52 |
| 7 | SSIM | 0.7619 |
Tabella 3: Metriche di valutazione delle prestazioni dello scenario di base rispetto al metodo proposto. Questa tabella confronta la pipeline di riduzione del rumore proposta con un modello di base in diverse metriche delle prestazioni, tra cui il tempo di training, l'utilizzo della GPU e le misure di qualità (PSNR, SSIM e accuratezza della convalida). I risultati indicano un miglioramento dell'efficienza energetica e della qualità dell'immagine con il metodo proposto.
Calcola PSNR/SSIM e consumo energetico. Per PSNR/SSIM (scikit-image), utilizzare il codice seguente.

Per l'energia di calcolo/utilizzo della GPU, eseguire la cella che registra nvidia-smi --query-gpu=power.draw,utilization.gpu --format=csv -l 1 per eseguire/.../gpu_log.csv durante l'addestramento (fornito nel notebook). In un secondo terminale, esegui il seguente codice:

Analizza CSV per calcolare la potenza media (W) e integrarla nel tempo di addestramento per l'energia stimata (Wh = kWh). Il notebook aggrega PSNR, SSIM, accuratezza della convalida, tempo e tempo ed energia in results_table3.csv per l'inclusione diretta.
Valutazione della sostenibilità e simulazione di telemedicina
Per valutare la sostenibilità dell'hardware del dispositivo, abbiamo applicato il rumore gaussiano e di Poisson per simulare il degrado dell'immagine dovuto all'invecchiamento dei dispositivi. Il modello ha ripristinato questi input degradati a una qualità quasi diagnostica, convalidandone la robustezza 27,28,29. Nelle simulazioni di telemedicina, le immagini denoised sono state trasmesse da una larghezza di banda simulata di 256 Kbps utilizzando socket Python. La chiarezza visiva è stata mantenuta, supportando la diagnostica remota 30,31,32.
Per la simulazione dell'invecchiamento del dispositivo, applicare il rumore gaussiano (σ=10-30) e il rumore di Poisson alle immagini pulite (simulazione dell'invecchiamento delle celle) e salvarle in data/simulated/aged/. Eseguire il modello sottoposto a training su input invecchiati/; Salva gli output in Risultati/aged_denoised/. Osservare che la qualità visiva dovrebbe raggiungere una fedeltà quasi diagnostica; confrontare PSNR/SSIM con la linea di base.
Per il test della larghezza di banda della telemedicina, comprimere le immagini denoised in PNG/JPEG all'85%-95% e inviarle su un collegamento simulato a 256 kbps utilizzando il test del socket Python (telemed_sim.py) fornito. Misura il tempo di andata e ritorno e l'hash dell'integrità dei file; Verificare che non siano stati introdotti artefatti diagnostici. Osserva che la chiarezza visiva viene preservata e che le dimensioni dei file sono adatte ai flussi di lavoro con larghezza di banda ridotta.
Endpoint del protocollo
Al termine, dovresti avere: (i) immagini nitide in preproc/enhanced/, (ii) immagini segmentate in preproc/segmented/, (iii) un autoencoder addestrato con best.h5 in runs/.../checkpoints/, (iv) output denoised per immagini di test e invecchiate in results/, (v) un file di metriche compilato (results_table3.csv) che riassume PSNR, SSIM, accuratezza della convalida, tempo dell'epoca ed energia stimata.