$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
Deze studie maakte uitsluitend gebruik van openbaar beschikbare, geanonimiseerde CT- en MRI-beeldvormingsdatasets. Er waren geen levende menselijke of dierlijke proefpersonen bij betrokken. Daarom was er geen goedkeuring van de institutionele beoordelingsraad (IRB) of ethische commissie vereist.
Overzicht van de methode
Dit protocol presenteert een reproduceerbare pijplijn voor energie-efficiënte medische beeldruisonderdrukking. Het combineert voorbewerkingstechnieken, waaronder verscherpingsfilters en K-means clustering, met een op convolutionele neurale netwerken (CNN) gebaseerde autoencoder om beelden te denoisen. Deze geïntegreerde methode verbetert de beeldkwaliteit en vermindert de trainingstijd en het energieverbruik van de hardware, ter ondersteuning van duurzame medische diagnostiek 19,20,21,22,23. Figuur 5 geeft een overzicht van het end-to-end framework.

Figuur 5: Voorgestelde architectuur van het denoising framework. Deze figuur schetst de volledige pijplijn: data-acquisitie, voorverwerking (verscherping + K-means segmentatie), gevolgd door op CNN gebaseerde autoencoder-ruisonderdrukking. Het benadrukt de hybride aanpak die gericht is op het verminderen van het energieverbruik met behoud van structurele getrouwheid. Klik hier om een grotere versie van deze figuur te bekijken.
De volledige workflow is samengevat in Figuur 5, die de volgorde toont van het instellen van de dataset tot voorverwerking (verscherping en K-middelen) tot CNN autoencoder denoising tot testen.
Instellen van software en omgeving
Optie A - Google Colab (aanbevolen voor reproduceerbaarheid): Ga naar colab.research.google.com, klik op Nieuw notitieblok. Selecteer Runtime > Runtimetype wijzigen > Hardwareversneller: GPU > Opslaan. Klik op Bestand > Uploaden om het meegeleverde notitieblok en de gegevensset .zip te uploaden (of maak verbinding met Google Drive door te klikken op Bestanden > Drive koppelen). Installeer in de eerste codecel afhankelijkheden (al in het notebook): pip install opencv-python scikit-image scikit-learn tensorflow matplotlib numpy pandas. Klik op Runtime > Alles uitvoeren. Controleer of u het volgende ziet: (i) omgevingsoverzicht met pakketversies, (ii) GPU-naam (in celuitvoer) en (iii) het maken van een experimentmap die wordt uitgevoerd/JJJJ-MM-DD/.
Optie B - Lokaal (conda): Open Anaconda Prompt/Terminal en voer het volgende uit:

Plaats je dataset onder data/raw/ en scripts onder code/. Uitvoeren: python code/train_autoencoder.py --data_root data --img_size 256 --k_values 3 5 --epochs 100 --batch 32 --lr 0.001. Bevestig om te zien: omgevingsafdruk, gedetecteerde GPU en een logmap voert /JJJJ-MM-DD/ uit.
Voorbereiding van datasets
Openbaar beschikbare datasets van CT- en MRI-scans zijn afkomstig uit opslagplaatsen voor medische beeldvorming. Deze datasets bevatten ruis die typisch is voor klinische scans in de echte wereld en werden geanonimiseerd volgens institutionele en ethische normen 8,9. Elke afbeelding werd verkleind tot 256 x 256 pixels en opgeslagen in PNG- of DICOM-indeling voor compatibiliteit. De datasets werden willekeurig als volgt verdeeld: 70% voor training, 15% voor validatie en 15% voor testen, wat zorgde voor een gestratificeerde verdeling van beeldvormingsmodaliteiten en ruisniveaus'. Ruisstatistieken werden gemeten aan de hand van de gemiddelde pixelvariantie voorafgaand aan het verwijderen van ruis.
Mappen ordenen: Maak een map zoals hieronder beschreven:

Als u afbeeldingen wilt toevoegen, kopieert u geanonimiseerde CT/MRI-afbeeldingen naar data/raw/CT en data/raw/MRI (PNG, JPG of DICOM). Standaardiseer de afbeeldingsgrootte met Python (aanbevolen): Voer de notebookcel uit Formaat wijzigen en converteren. Het laadt elke afbeelding, converteert grijswaarden indien nodig en wijzigt het formaat naar 256 x 256 .

Een alternatief is om GUI (ImageJ/Fiji alternatief) te gebruiken zoals beschreven. Klik op Bestand > Importeren > Afbeeldingsreeks (of afzonderlijke afbeeldingen) en vervolgens op Afbeelding > Type > 8-bits, Afbeelding > Aanpassen > Grootte... > 256 x 256 en vervolgens Bestand > Opslaan als PNG > in data/preproc/.
Splitsingen maken: Voer de splitsing van de notebookcel Train/Val/Test uit (70/15/15); Het schudt bestandsnamen en kopieert ze naar data/splits/train|val|test/. De console drukt de tellingen af (bijv. Trein: 700, Val: 150, Test: 150). Checkpoint (observeren): Open data/splits/train/ en controleer of afbeeldingen 256 x 256 en grijstinten (1 kanaal) zijn. Bewaar een klein CSV-manifest (splits.csv) met het bestandspad, de modaliteit en het gesplitste label.
Voorbewerking van afbeeldingen
Gebruik de 3 x 3 slijpkern. Voer beeldverbetering uit met behulp van een verscherpingskernel. Een verscherpende convolutiekern werd gebruikt om anatomische grenzen te verbeteren voorafgaand aan segmentatie:

Dit filter accentueert belangrijke structuren door hoogfrequente componenten te versterken 4,5. Elke afbeelding werd geconpliceerd met behulp van de OpenCV-bibliotheek van Python (cv2.filter2D()) om de verbeterde afbeelding te genereren. Figuur 6 illustreert voor-en-na vergelijkingen.

Figuur 6: Validatienauwkeurigheidsgrafiek voor verschillende waarden van k. Staafdiagram ter illustratie van de validatienauwkeurigheid die is bereikt voor verschillende waarden van K die worden gebruikt in de K-means clusteringstap (K = 2, 3, 4, 5). De nauwkeurigheid piekt bij K=3, wat wijst op een optimale scheiding tussen anatomische structuren en ruisgebieden. Schaal: Genormaliseerde nauwkeurigheidswaarden (0-1). Klik hier om een grotere versie van deze figuur te bekijken.
Solliciteer (Python/OpenCV) met behulp van de onderstaande code.

Of gebruik GUI-alternatief (ImageJ/Fiji) door te klikken op Proces > Filters > Convolve. Plak de 3 x 3 matrix hierboven en klik op OK > bestand > Opslaan als > PNG in data/preproc/enhanced/. Observeer het controlepunt als de randen en orgaangrenzen scherper lijken; Als er te verscherpte halo's worden gezien, verlaag dan het centrale gewicht van de kernel van 5 naar 4,5 en voer het opnieuw uit. Figuur 7 toont de resultaten van voor en na het denoisen. De voorbeelden vertonen duidelijk ruis en vervaging, terwijl de nabeelden een verbeterde helderheid, scherpere anatomische grenzen en een verbeterd contrast vertonen, wat de effectiviteit van de voorgestelde ruisonderdrukkingspijplijn aantoont.

Afbeelding 7: Convolution NAutoencoder netwerkarchitectuur. Illustreert de auto-encoderarchitectuur: invoerlaag, encoder (Conv + Pool-lagen), bottleneck, decoder (Upsampling + Transposed Conv-lagen). Elke laag is gelabeld met grootte en functie. Klik hier om een grotere versie van deze figuur te bekijken.
K-Means clustering voor segmentatie
De vorm van verbeterde afbeeldingen is gewijzigd met behulp van NumPy (image.reshape(-1, 1)) en geclusterd met sklearn.cluster.KMeans(n_clusters=3 of 5). De gesegmenteerde uitvoer werd teruggevormd naar 2D (np.reshape(clustered_array, image.shape)) om anatomische regio's te visualiseren versus ruiszones14. Tabel 1 geeft een overzicht van de segmentatie-instellingen.
| Sr Nee | Waarde van k | Nauwkeurigheid |
| 1 | 3 | 0.761 |
| 2 | 5 | 0.869 |
| 3 | 7 | 0.75 |
Tabel 1: Waarden van k met respectievelijke validatienauwkeurigheid. Deze tabel geeft de validatienauwkeurigheid weer die is verkregen voor verschillende waarden van de clusterparameter k die wordt gebruikt in de segmentatiestap K-means van de ruisonderdrukkingspijplijn. De resultaten tonen aan dat k = 5 de hoogste nauwkeurigheid oplevert, wat leidt tot een optimale selectie van clusterparameters.
K-Means Segmentatie: Hervormen en clusteren (Python/scikit-learn) met behulp van de onderstaande code.

Voer een kleurvoorbeeld uit (optioneel) en wijs labels toe aan kleuren voor visuele QC en overlappende randen van de verscherpte afbeelding. Kies K door te rennen met K=3 en K=5; bereken de nauwkeurigheid van de validatie downstream (Tabel 1 geeft een overzicht van instellingen; Figuur 6 toont de nauwkeurigheid versus K). Dit is een controlepost; observeer op ruisdominante pixels die afzonderlijke clusters vormen; Anatomische gebieden moeten aaneengesloten blijven. Als er kleine spikkels verschijnen, pas dan anatomische grenzen toe.
Denoising op basis van neurale netwerken
Beschrijving van de architectuur: Zie Figuur 8 voor het schema van de encoder-bottleneck-decoder. Een op CNN gebaseerde auto-encoder werd ontwikkeld met behulp van TensorFlow/Keras. De architectuur omvatte: invoerlaag: 256 x 256 grijswaardenafbeelding, encoder met drie convolutionele lagen (kernel: 3 x 3, stride: 1, ReLU-activering), elk gevolgd door max-pooling; bottleneck als dichte latente representatie, decoder met drie up-sampling lagen met getransponeerde convoluties, uitvoer als Sigmoid-geactiveerde laag die een ruisvrij beeld produceert. Tabel 2 geeft volledige architecturale parameters per laag.

Figuur 8: Visuele resultaten van het denoisingproces. Presenteert het originele beeld met ruis, het voorbewerkte beeld en de uiteindelijke uitvoer zonder ruis naast elkaar voor kwalitatieve evaluatie. Demonstreert randbehoud en artefactreductie. Klik hier om een grotere versie van deze figuur te bekijken.
| Sr Nee | Compilatie attributen | Waarden van compilatiekenmerken |
| 1 | Optimizer | Adam |
| 2 | Verlies | Categorische kruis-entropie |
| 3 | Statistieken | Nauwkeurigheid |
Tabel 2: Compilatiekenmerken van het neurale netwerk. In deze tabel worden de belangrijkste compilatieparameters beschreven die zijn gebruikt om het convolutionele auto-encodermodel te trainen. Deze instellingen zijn geïmplementeerd in TensorFlow en omvatten de optimizer, verliesfunctie, evaluatiemetriek, aantal epochs en batchgrootte.
Trainingsconfiguratie: De trainingsparameters omvatten: verliesfunctie als Mean Squared Error (MSE), optimizer als Adam (leersnelheid = 0,001), batchgrootte van 32 en epochs als 100 met vroeg stoppen (geduld = 10).
Een kort overzicht van de training is als volgt. Start de training door naar Colab te gaan en op Runtime > Alles uitvoeren te klikken; controleer of de GPU in de lijst staat (bijv. Tesla T4). Gebruik python code/train_autoencoder.py --data_root data --epochs 100 --batch 32 --lr 0.001 --early_stop 10. Monitor met behulp van de console drukt epoch, train_loss, val_loss en tijd/epoch af. Vroegtijdig stoppen triggert na geduld=10 tijdperken zonder verbetering. Het beste model wordt opgeslagen in runs/.../checkpoints/best.h5. Dit is een controlepunt, observeer met behulp van het model.summary() dat de laagstapel toont; Het aantal parameters moet overeenkomen met tabel 2. Als u OOM-fouten krijgt, verkleint u de batch tot 16 of stelt u de invoergrootte in op 224 x 224.
Tussentijdse controlepunten en probleemoplossing
Bekijk na het verscherpen en segmenteren een voorbeeld van drie afbeeldingen per splitsing en controleer of (i) de randen zijn verbeterd, (ii) clustermaskers zijn uitgelijnd met de anatomie. Zorg er tijdens de training voor dat het validatieverlies afneemt en niet uiteenloopt. Als de uitvoer zonder ruis te veel afgevlakt lijkt, verlaag dan het kernelcentrum (4,5) of verhoog de trainingsepochs met 10 met een lagere leersnelheid (bijv. 5e-4).
Prestatie-evaluatie: De volgende kwantitatieve maatstaven werden gebruikt: Peak Signal-to-Noise Ratio (PSNR), Structural Similarity Index Measure (SSIM) en Validation Accuracy of denoised image classification.
De voorgestelde methode verbeterde PSNR van 21,52 naar 28,14 dB en SSIM van 0,76 naar 0,86 in vergelijking met basismodellen die in 7,16 werden gepresenteerd. De energie-efficiëntie werd geregistreerd door het GPU-gebruik (NVIDIA-SMI-logboeken) en de trainingstijd te monitoren. Tabel 3 geeft een overzicht van de resultaten van ruisonderdrukking.
| Sr Nee | Metriek | Basislijnmodel |
| 1 | Gemiddelde epochetijd (sec) | 25.8 |
| 2 | Totale trainingsenergie (kWh) | 0.52 |
| 3 | GPU-gebruik (%) | 85% |
| 4 | Deductietijd per afbeelding (ms) | 18.7 |
| 5 | Nauwkeurigheid validatie (%) | 76.19% |
| 6 | PSNR (dB) | 21.52 |
| 7 | SSIM | 0.7619 |
Tabel 3: Prestatie-evaluatiemaatstaven van de basislijn versus de voorgestelde methode. In deze tabel wordt de voorgestelde denoising-pijplijn vergeleken met een basislijnmodel voor verschillende prestatiestatistieken, waaronder trainingstijd, GPU-gebruik en kwaliteitsmetingen (PSNR, SSIM en validatienauwkeurigheid). De resultaten duiden op een verbeterde energie-efficiëntie en beeldkwaliteit met de voorgestelde methode.
Bereken PSNR/SSIM en energieverbruik. Voor PSNR/SSIM (scikit-image), gebruik de onderstaande code.

Voor het berekenen van energie/GPU-gebruik, Voer de cel uit die nvidia-smi --query-gpu=power.draw,utilization.gpu --format=csv -l 1 registreert om /.../gpu_log.csv uit te voeren tijdens de training (geleverd in notebook). Voer in een tweede terminal de volgende code uit:

Parseer CSV om het gemiddelde vermogen (W) te berekenen en gedurende de trainingstijd te integreren voor geschatte energie (Wh = kWh). De notebook voegt PSNR, SSIM, validatienauwkeurigheid, epoch-tijd en energie samen tot results_table3.csv voor directe opname.
Duurzaamheidsevaluatie en simulatie van telegeneeskunde
Om de duurzaamheid van de hardware van apparaten te beoordelen, hebben we Gaussiaanse en Poisson-ruis toegepast om beelddegradatie door verouderde apparaten te simuleren. Het model herstelde deze gedegradeerde inputs tot bijna-diagnostische kwaliteit en valideerde de robuustheid ervan 27,28,29. In telegeneeskundesimulaties werden beelden zonder ruis verzonden door een gesimuleerde bandbreedte van 256 Kbps met behulp van Python-sockets. De visuele helderheid bleef behouden en ondersteunde diagnose op afstand 30,31,32.
Voor simulatie van apparaatveroudering past u Gaussiaanse ruis (σ=10-30) en Poisson-ruis toe op schone afbeeldingen (celverouderingssimulatie) en slaat u deze op in data/simulated/aged/. Voer het getrainde model uit op leeftijd/-invoer; Sla uitvoer op in Results/aged_denoised/. Merk op dat de visuele kwaliteit bijna diagnostische getrouwheid moet bereiken; vergelijk PSNR/SSIM met baseline.
Voor de bandbreedtetest voor telegeneeskunde comprimeer u afbeeldingen zonder ruis naar PNG/JPEG met 85%-95% en verzendt u een gesimuleerde 256 kbps-link met behulp van de meegeleverde Python-sockettest (telemed_sim.py). Meet de retourtijd en de hash van de bestandsintegriteit; Controleer of er geen diagnostische artefacten worden geïntroduceerd. Merk op dat de visuele helderheid behouden blijft en dat de bestandsgrootte geschikt is voor workflows met een lage bandbreedte.
Protocol eindpunt
Na voltooiing moet u beschikken over: (i) verscherpte afbeeldingen in preproc/enhanced/, (ii) gesegmenteerde afbeeldingen in preproc/segmented/, (iii) een getrainde auto-encoder met best.h5 in runs/.../checkpoints/, (iv) uitvoer met weinig ruis voor test- en verouderde afbeeldingen in results/, (v) een gecompileerd metrisch bestand (results_table3.csv) met een samenvatting van PSNR, SSIM, validatienauwkeurigheid, epoch-tijd en geschatte energie.