Een abonnement op JoVE is vereist om deze inhoud te bekijken. Log in of start vandaag met uw gratis proefperiode.

Methodenartikel

Geautomatiseerde kwantitatieve analyse van pulmonale vaaten bij aangeboren diafragmatische hernia met behulp van deep learning

118 weergaven

DOI:

10.3791/70428

8 mei 2026

In dit artikel

Samenvatting

Dit protocol beschrijft een volledig geautomatiseerde deep learning-pijplijn voor het segmenteren en analyseren van de longvaaten in neonatale CT-scans. De methode maakt kwantitatieve morfometrische evaluatie van vasculaire ontwikkeling bij aangeboren diafragmatische hernia (CDH) en controlepersonen mogelijk, wat een niet-invasieve karakterisering van pulmonale hypoplasie en vasculaire onderontwikkeling ondersteunt.

Samenvatting

Congenitale diafragmatische hernia (CDH) wordt gekenmerkt door pulmonale hypoplasie en vasculaire onderontwikkeling, wat leidt tot verminderde gasuitwisseling en hoge neonatale sterfte. Nauwkeurige en kwantitatieve beoordeling van pulmonale vaaten is cruciaal voor het begrijpen van de ernst van de ziekte, maar handmatige segmentatie van driedimensionale vasculaire netwerken in medische beelden is tijdrovend en afhankelijk van de operator.

Dit protocol biedt een volledig geautomatiseerde op deep learning gebaseerde methode voor longvatsegmentatie en morfometrische analyse met behulp van postnatale computertomografie (CT)-scans. De pijplijn bevat gestandaardiseerde preprocessing-stappen - conversie naar Hounsfield-eenheden, venstering, isotrope resampling en contrastbeperkte adaptieve histogramequalizing (CLAHE) - om beeldgegevens te normaliseren en de vasculaire zichtbaarheid te verbeteren. Een U-Net convolutioneel neuraal netwerk (CNN) architectuur wordt vervolgens getraind om de pulmonale vasculatuur te segmenteren, gevolgd door een driedimensionaal skelettiseringsalgoritme om morfometrische parameters zoals taknummer, gemiddelde taklengte en generatiediepte te kwantificeren.

Representatieve resultaten tonen aan dat het voorgestelde model een hoge segmentatienauwkeurigheid behaalt, waarbij de transfer learning-configuratie de beste prestaties oplevert. Kwantitatieve morfometrische analyse toont een duidelijk verminderde vasculaire complexiteit in CDH vergeleken met controlelongen, wat overeenkomt met de bekende pathologische kenmerken van pulmonale hypoplasie.

Deze geautomatiseerde aanpak maakt reproduceerbare, kwantitatieve en niet-invasieve evaluatie van pulmonale vasculaire morfologie in CDH mogelijk. De methode kan worden aangepast aan andere beeldvormingsmodaliteiten en toegepast op studies naar de ontwikkeling van foetale en neonatale longen, wat translationeel onderzoek en toekomstige klinische integratie vergemakkelijkt.

Inleiding

Congenitale diafragmatische hernia (CDH) is een levensbedreigende aangeboren afwijking die wordt gekenmerkt door een diafragmadefect, wat leidt tot een hernia van buikviscera naar thorax 1,2. Deze fysieke compressie belemmert de longontwikkeling ernstig, wat leidt tot pulmonale hypoplasie en aanhoudende pulmonale hypertensie (PPHN), die de belangrijkste oorzaken zijn van morbiditeit en sterfte. Naast pulmonale hypoplasie en vasculaire onderontwikkeling is aangetoond dat verminderde hartontwikkeling en ventrikeldisfunctie ook een significante invloed hebben op klinische uitkomsten bij pasgeborenen met CDH. De onderliggende pathofysiologie omvat abnormale ontwikkeling van zowel luchtwegen als het pulmonale vaatbed, wat leidt tot een verminderd aantal vaten, verhoogde spiervorming van arteriolen en daardoor verhoogde vasculaire weerstand 3,4. Objectieve en kwantitatieve biomarkers zijn nodig om het risico nauwkeurig te stratificeren, interventies te sturen en de behandelingsrespons bij CDH-patiënten te monitoren5. Een cruciaal aspect van deze evaluatie is de gedetailleerde analyse van de pulmonale vaat, die inzicht kan geven in de mate van pulmonale hypoplasie en de functionele capaciteit van de longen. Vooruitgang in beeldvormingstechnieken, met name computertomografie (CT), heeft ons vermogen om de longvaaten in detail te visualiseren en te kwantificerenverbeterd 6,7.

Hoewel postnatale computertomografie (CT) hoge resolutie anatomische details van de longen levert, blijft de analyse van de ingewikkelde pulmonale vasculaire boom een uitdaging. Bestaande methoden voor vasculaire segmentatie zijn vaak afhankelijk van traditionele beeldverwerkingstechnieken die aanzienlijke handmatige interventie vereisen, gevoelig zijn voor beeldartefacten en mogelijk niet bestand zijn tegen de ernstige anatomische vervormingen in CDH 7,8,9,10. Deep learning, met name convolutionele neurale netwerken (CNN's) zoals de U-Net-architectuur, heeft opmerkelijk succes geboekt in geautomatiseerde segmentatie van medische beelden. Veel bestaande modellen zijn echter getraind op gezonde proefpersonen of op andere ziektecontexten, waardoor hun toepasbaarheid beperkt wordt op aangeboren afwijkingen zoals CDH10, 11, 12, 13.

Ondanks deze vooruitgang blijven er aanzienlijke hiaten in de literatuur. Veel studies hebben zich gericht op gezonde individuen of specifieke longaandoeningen, met beperkte aandacht voor aangeboren afwijkingen zoals CDH12. Bovendien hebben deep learning-modellen verbeterde prestaties laten zien, maar vereisen ze vaak grote, geannoteerde datasets voor training, die niet altijd beschikbaar zijn voor zeldzame aandoeningen zoals CDH. Bovendien hebben bestaande modellen de uitdaging om verschillende typen longvaten (bijv. slagaders en venen) te onderscheiden bij ernstige anatomische vervormingen veroorzaakt door CDH niet volledig aangepakt. Deze beperking onderstreept de noodzaak van verder onderzoek om robuustere modellen te ontwikkelen die de pulmonale vasculatuur bij CDH-patiënten nauwkeurig kunnen segmenteren en analyseren.

Deze studie heeft als doel deze hiaten aan te pakken door een volledig geautomatiseerd deep learning-framework te ontwikkelen en te valideren om de longvaaten te segmenteren en kwantitatieve morfometrische kenmerken uit CT-scans te extraheren. Een belangrijke innovatie van onze aanpak is het trainen van ons model op een gecombineerde dataset van CDH- en controlepatiënten, waardoor het een robuuste weergave kan leren van zowel normale als pathologische vasculaire patronen. Hoewel CT-beeldvorming ioniserende straling omvat, waardoor het ongeschikt is voor routinematige longitudinale screening, dient deze studie als een cruciaal proof-of-concept. Het primaire doel van deze studie is vaststellen dat geautomatiseerde radiologische kwantificering van de vaatstructuur haalbaar is en CDH-patiënten betrouwbaar kan onderscheiden van controlegroepen. Succes op dit gebied biedt de noodzakelijke validatie om dit kwantitatieve kader aan te passen aan stralingsvrije beeldvormingsmodaliteiten, zoals magnetische resonantiebeeldvorming (MRI), voor toekomstige klinische toepassingen.

Toegang beperkt. Log in of start een proefperiode om deze inhoud te bekijken.

Protocol

Alle procedures waarbij menselijke deelnemers betrokken waren, werden uitgevoerd in overeenstemming met de richtlijnen van de ethische commissie voor institutioneel menselijk onderzoek en goedgekeurd door de Institutional Review Board (IRB #2017-6361). De studie werd uitgevoerd in overeenstemming met de toepasselijke regelgeving. Patiëntgegevens werden retrospectief verzameld en gedeidentificeerd vóór de analyse. Een overzicht van het ontwikkelde systeem is te zien in Figuur 1.

1. Beeldvoorbewerking

  1. Laad ruwe CT-scans van neonatale patiënten in DICOM-formaat in de werkomgeving.
    1. Open de medische beeldanalysesoftware en maak een nieuwe projectwerkruimte aan.
    2. Klik op Bestand > Importeren > DICOM-serie .
    3. Ga naar de map met de neonatale thoracale CT-scan in DICOM-formaat en selecteer de volledige beeldreeks.
    4. Controleer dat alle slices in de serie correct worden gedetecteerd en geordend op basis van acquisitiemetadata (bijv. Instance Number).
    5. Bevestig beeldafmetingen, voxelafstand en slicedikte in het metadatapaneel om consistentie tussen scans te waarborgen.
    6. Laad de serie in de werkruimte en inspecteer visueel axiale, coronale en sagittale beelden om de juiste oriëntatie en het ontbreken van laadfouten te bevestigen.
  2. Converteer DICOM-bestanden naar NIfTI-formaat met open-source software om het manipuleren en analyseren te vergemakkelijken.
    1. Open een terminalvenster binnen de wetenschappelijke computeromgeving.
    2. Navigeer naar de map met de DICOM-imageserie met het cd-commando.
    3. Voer de DICOM-naar-NIfTI-conversietool uit met de volgende commandostructuur: dcm2niix -z y -f output_filename -o /output_directory /input_directory
    4. Zorg ervoor dat compressie (-z y) is ingeschakeld om een gecomprimeerd .nii.gz-bestand te genereren.
    5. Controleer of het uitvoerbestand succesvol is gegenereerd in de opgegeven uitvoermap.
    6. Open het geconverteerde NIfTI-bestand in een medische beeldviewer en inspecteer visueel de axiale, coronale en sagittale vlakken om de correcte ruimtelijke oriëntatie en beeldintegriteit te bevestigen.
    7. Controleer voxelafstand en beeldafmetingen om consistentie te garanderen over alle onderwerpen voordat je voorbewerkingen begint.
  3. Converteer beeldintensiteiten naar Hounsfield-eenheden (HU) met behulp van scanner-specifieke metadata of standaardformules.
    1. Haal de DICOM-metadataparameters Rescale Slope en Rescale Intercept uit de afbeeldingsheader voor elke scan.
    2. Voor elke voxelintensiteitswaarde (I_raw) bereken je de overeenkomstige Hounsfield-eenheid (HU) met de volgende formule: HU = (I_raw × Rescale Slope) + Rescale Intercept.
    3. Pas de conversie toe op het gehele 3D-beeldvolume met behulp van elementgewijze matrixbewerkingen binnen de wetenschappelijke computeromgeving.
    4. Bevestig correcte conversie door te controleren dat luchtgebieden ongeveer −1000 HU hebben en dat zachte weefselgebieden binnen de verwachte fysiologische waarden vallen.
    5. Sla het geconverteerde volume op als een nieuw NIfTI-bestand om de originele data te behouden.
  4. Breng windowing aan om de longen en het zachte weefsel te benadrukken. Stel het raamniveau (WL) in op -400 HU en de vensterbreedte (WW) op 1500 HU.
    1. Open het geconverteerde NIfTI-bestand in de beeldvisualisatiesoftware.
    2. Ga naar het beeldscherm of het intensiteitsinstellingenpaneel.
    3. Selecteer de optie Venster/Niveau-aanpassing .
    4. Stel handmatig de Window Level (WL) waarde in op -400 Hounsfield Units (HU).
    5. Stel de Window Width (WW) waarde in op 1500 HU.
    6. Bevestig en pas de instellingen toe om de beeldvisualisatie bij te werken.
    7. Controleer dat longparenchym en longvaten duidelijk te onderscheiden zijn van bot- en mediastinale structuren voordat u verder gaat met de preprocessing.
  5. Voer isotrope herbemonstering uit om ervoor te zorgen dat de voxelafmetingen uniform zijn (bijvoorbeeld 1 mm × 1 mm × 1 mm) met trilineaire interpolatie.
    1. Laad de NIfTI-image in de Python-omgeving met behulp van een medische beeldverwerkingsbibliotheek.
    2. Haal de originele voxelafstand uit de metadata van de image header.
    3. Definieer de isotrope afstand van het doel als (1,0, 1,0, 1,0) mm.
    4. Bereken de nieuwe afbeeldingsafmetingen met de formule: new_size = original_size × (original_spacing / target_spacing)
    5. Initialiseer een resampling-object.
    6. Stel de interpolatiemethode in op trilineaire interpolatie.
    7. Wijs de voxelafstand van het doel toe (1,0 mm × 1,0 mm × 1,0 mm).
    8. Stel de berekende nieuwe afbeeldingsgrootte in.
    9. Behoud de oorspronkelijke beeldrichting en herkomstmetadata.
    10. Voer de herbemonsteringsoperatie uit.
    11. Bewaar de geresamplede afbeelding in NIfTI-formaat voor latere preprocessingstappen.
    12. Controleer de isotrope afstand door de bijgewerkte voxelafmetingen in de afbeeldingsheader te controleren voordat je verder gaat.
  6. Pas Contrast-Limited Adaptive Histogram Equalization (CLAHE) toe om het contrast te verbeteren en de zichtbaarheid van vasculaire structuren te verbeteren.
    1. Importeer de benodigde beeldverwerkingsbibliotheek in de Python-omgeving.
    2. Converteer indien nodig het opnieuw bemonsterde 3D CT-volume naar 8-bit grijswaardenformaat, waarbij lineaire intensiteitsnormalisatie wordt gebruikt om het geselecteerde HU-bereik toe te wijzen op 0–255.
    3. Verwerk het CT-volume slice voor slice in het axiale vlak om CLAHE in 2D toe te passen.
    4. Initialiseer het CLAHE-object met de volgende parameters: clipLimit = 2.0, tileGridSize = (8, 8).
    5. Voor elke axiale snede past u de CLAHE-functie toe om het lokale contrast te versterken.
    6. Reconstrueer de verwerkte slices terug tot een 3D-volume na CLAHE-toepassing.
    7. Bewaar het contrastversterkte volume in NIfTI-formaat voor latere segmentatie.
    8. Controleer visueel dat longvaten beter te onderscheiden zijn van omringende parenchymen zonder overmatige geluidsversterking voordat je verder gaat.
  7. Inspecteer visueel een subset van voorbewerkte afbeeldingen om kwaliteit en consistentie over de dataset te waarborgen.
    1. Selecteer willekeurig minstens 10% van de totale dataset voor handmatige kwaliteitsbeoordeling.
    2. Open elk geselecteerd voorbewerkt volume in de medische beeldviewer.
    3. Inspecteer axiale, coronale en sagittale vlakken om het volgende te verifiëren: Correcte ruimtelijke oriëntatie; Afwezigheid van afsnauwingsartefacten; Correcte toepassing van vensterparameters; Succesvolle isotrope herbemonstering (uniforme voxelafstand); Voldoende contrastversterking na CLAHE.
    4. Bevestig dat longvaten duidelijk te onderscheiden zijn van aangrenzende parenchymale structuren zonder overmatige geluidsversterking.
    5. Vergelijk voorbewerkte beelden met originele HU-geconverteerde volumes om te verzekeren dat preprocessing-stappen geen vervorming of anatomische inconsistenties introduceren.
    6. Documenteer eventuele preprocessingfouten en herhaal preprocessing indien nodig voor de getroffen zaken.

2. Handmatige annotatie

  1. Selecteer een representatieve subset van CT-scans van zowel controle- als CDH-patiënten die gebruikt worden voor handmatige annotatie. Zorg voor een evenwichtige verdeling van anatomische variabiliteit.
    1. Identificeer alle in aanmerking komende pre-processed CT-scans van zowel controle- als CDH-cohorten.
    2. Sluit scans met ernstige bewegingsartefacten of onvolledige longdekking uit.
    3. Selecteer willekeurig een vooraf bepaald aantal gevallen uit elke groep om een evenwichtige representatie te garanderen.
    4. Zorg voor opname van gevallen die een scala aan anatomische variabiliteit aantonen, waaronder verschillen in longvolume, vasculaire dichtheid en mediastinale verschuiving.
    5. Bevestig dat geselecteerde CDH-gevallen verschillende gradaties van pulmonale hypoplasie vertegenwoordigen, waar beschikbaar.
    6. Documenteer de geselecteerde zaakidentificaties voordat je doorgaat met handmatige annotatie.
  2. Laad de voorbewerkte NIfTI-beelden in een 3D-medisch afbeeldingsannotatietool.
    1. Open de 3D medische afbeeldingsannotatiesoftware.
    2. Maak een nieuw project of segmentatiesessie aan.
    3. Klik op Bestand > Afbeelding openen (of de equivalente importoptie).
    4. Ga naar de map met het vooraf bewerkte NIfTI-bestand (.nii of .nii.gz) en selecteer de afbeelding.
    5. Bevestig succesvolle lading door de correcte beeldoriëntatie in axiale, coronale en sagittale weergaven te verifiëren.
    6. Pas de weergave-instellingen aan indien nodig om de visualisatie te optimaliseren.
    7. Maak een nieuw segmentatielabel of maskerlaag om handmatige vasculaire annotaties op te slaan.
    8. Sla het projectbestand op voordat je handmatig annotatie start.
  3. Met axiale, coronale en sagittale aanzichten segmenteert u handmatig de longvaaten door vaatstructuren in elke relevante snede te omlijnen.
    1. Activeer de segmentatielabellaag die in stap 2.2 is gemaakt.
    2. Selecteer het handmatige teken- of penseelgereedschap binnen de annotatiesoftware.
    3. Pas de penseelgrootte dynamisch aan volgens de diameter van het vat om nauwkeurige grenstekeningen te garanderen.
    4. Met axiale sneden als primair referentievlak omlijnt u handmatig zichtbare pulmonale vaatstructuren, inclusief zowel arteriële als veneuze takken.
    5. Sluit niet-vasculaire structuren zoals bronchiën, luchtwegwanden en mediastinale weefsels uit.
    6. Scroll snee voor schijf door het hele longvolume om een continue annotatie van elke vaattak te garanderen.
    7. Kruisvalideer elk geannoteerd gebied in coronale en sagittale beelden om anatomische consistentie te bevestigen en discontinuïteiten te voorkomen.
    8. Neem vaten op tot aan de kleinste visueel herkenbare takken, terwijl oversegmentatie van geluidsartefacten wordt voorkomen.
    9. Maak periodiek een 3D-preview van de segmentatie om de ruimtelijke continuïteit van de vaatboom te verifiëren.
    10. Bewaar het voltooide segmentatiemasker in NIfTI-formaat voordat je doorgaat met modeltraining.
  4. Noteer alleen de longvaten, met uitzondering van het hart, de bronchiën en belangrijke niet-pulmonale structuren.
    1. Identificeer longslagaders en -aders binnen het longparenchym met axiale sneden als primaire referentie.
    2. Omvatten intraparenchymale vaattakken die uitkomen uit de hoofd-pulmonale slagaders en distaal in de longvelden uitstrekken.
    3. Exclusief de hartkamers, boezem, ventrikels en grote vaten.
    4. Sluit luchtwegstructuren, waaronder bronchiën en bronchiale wanden, uit door ze te onderscheiden van vaten op basis van morfologie en luminale kenmerken.
    5. Vermijd het labelen van mediastinale zachte weefsels, pleura en borstwandstructuren.
    6. Gebruik multiplanaire weergaven (axiale, coronale, sagittale) om te bevestigen dat geannoteerde structuren de verwachte vasculaire continuïteit en vertakkingspatronen volgen.
    7. Wanneer de differentiatie tussen vaten en luchtwegen onzeker is, controleer dan de continuïteit over aangrenzende sneden om de vasculaire baan te bevestigen voordat je labelt.
    8. Voer een definitieve 3D-rendering uit van het gesegmenteerde volume om ervoor te zorgen dat alleen de pulmonale vaatboom is opgenomen.
  5. Indien beschikbaar, raadpleeg klinische beeldvormingsexperts om ambigue gebieden tijdens de annotatie te valideren.
    1. Identificeer gebieden waarin de vatgrenzen onzeker zijn door laag contrast, anatomische vervorming of nabijheid van bronchiën of mediastinale structuren.
    2. Marker deze regio's binnen de annotatiesoftware met een tijdelijke label- of commentaartool.
    3. Presenteer de gemarkeerde gebieden aan een klinisch beeldvormingsexpert.
    4. Bekijk samen de axiale, coronale en sagittale aanzichten om te bepalen of de structuur een pulmonale vasculatuur vertegenwoordigt.
    5. Pas het segmentatiemasker aan op basis van deskundige consensus.
    6. Documenteer eventuele gecorrigeerde gebieden voordat je het grond-waarheid masker definitief maakt.
  6. Voer inter-rater validatie uit door ten minste twee onafhankelijke annotators elke segmentatie te laten beoordelen en te verfijnen. Bij meningsverschillen bereik je consensus via discussie of arbitrage.
    1. Ken elke geselecteerde CT-scan toe aan twee onafhankelijke annotateurs met ervaring in thoracale beeldvorming.
    2. Zorg ervoor dat annotators segmentatie onafhankelijk uitvoeren en blind zijn voor elkaars resultaten.
    3. Na voltooiing van onafhankelijke annotaties wordt de segmentatiemaskers vergeleken met een kwantitatieve overlapmaatstaf (bijv. de gelijkeniscoëfficiënt van dobbelstenen).
    4. Identificeer verschillen door voxel-gewijze verschillen tussen maskers te berekenen.
    5. Bekijk verschillende gebieden gezamenlijk in axiale, coronale en sagittale vlakken.
    6. Bereik consensus via gestructureerde discussie.
    7. Als er onenigheid blijft, schakel dan een derde senior beoordelaar in om de uiteindelijke beslissing te beuren.
    8. Bewaar het consensussegmentatiemasker als het definitieve ground-truth-label voor modeltraining.
  7. Bewaar de geannoteerde vaartuigmaskers in dezelfde resolutie en ruimte als de originele CT-afbeeldingen. Sla ze op in NIfTI-formaat met consistente naamgevingsconventies.
    1. Zorg ervoor dat het uiteindelijke consensussegmentatiemasker wordt opgeslagen als een binaire labelmap, waarbij vasculaire voxels een waarde van 1 krijgen en achtergrondvoxels een waarde van 0.
    2. Bevestig dat het segmentatiemasker dezelfde voxelafstand, beeldafmetingen, oorsprong en oriëntatiematrix behoudt als het bijbehorende voorbewerkte CT-beeld.
    3. Exporteer het segmentatiemasker in NIfTI-formaat (.nii of .nii.gz) met behulp van de exportfunctie van de annotatiesoftware.
    4. Gebruik een consistente naamgevingsconventie die als volgt is opgebouwd: SubjectID_Group_VesselMask.nii.gz; (bijv. CDH_012_VesselMask.nii.gz).
    5. Sla de maskers op in een speciale map parallel aan de afbeeldingsdataset om de paarconsistentie te waarborgen.
    6. Voer een laatste verificatie uit door zowel het CT-beeld als het bijbehorende masker opnieuw te laden om perfecte ruimtelijke uitlijning te bevestigen vóór het modeltraining.
  8. Gebruik deze handmatig gelabelde segmentaties als de basiswaarheid voor modeltraining en -evaluatie.

3. Modeltraining en validatie

  1. Organiseer de dataset in drie subsets: training, validatie en testsets. Gebruik in deze studie 35 controle- en 20 CDH-gevallen voor training, 5 controle- en 10 CDH-gevallen voor validatie, en houd de resterende gevallen voor onafhankelijk testen.
    1. Verzamel alle voorbewerkte CT-beelden en hun bijbehorende consensusvatmaskers in één dataset.
    2. Voer datasetsplitsing uit op patiëntniveau om datalekken tussen subsets te voorkomen.
    3. Wijs willekeurig 35 controlegevallen en 20 CDH-gevallen toe aan de trainingsset.
    4. Wijs willekeurig 5 controlegevallen en 10 CDH-gevallen toe aan de validatieset.
    5. Wijs alle resterende gevallen toe aan een onafhankelijke hold-out testset die niet wordt benaderd tijdens modeltraining of hyperparameterafstemming.
    6. Zorg ervoor dat elk CT-beeld en het bijbehorende segmentatiemasker gedurende het splitsingsproces gepaard blijven.
    7. Controleer de klassenverdeling in elke subset om de representatie van zowel controle- als CDH-gevallen te behouden.
    8. Documenteer de uiteindelijke toewijzing van onderwerpidentificaties voor reproduceerbaarheid.
  2. Normaliseer de intensiteitswaarden van alle beelden tussen 0 en 1 om de convergentie van neurale netwerken tijdens training te verbeteren.
    1. Voor elk CT-volume beperkt u eerst intensiteitswaarden tot een vooraf gedefinieerd Hounsfield-eenheidsbereik om extreme uitschieters te verwijderen.
    2. Pas intensiteitsclipping toe zodat waarden onder −1000 HU worden ingesteld op −1000 HU en waarden boven 500 HU op 500 HU.
    3. Voer de minimum-max-normalisatie onafhankelijk uit voor elk volume met de volgende transformatie: Genormaliseerde waarde = (I − I_min) / (I_max − I_min), waarbij I_min en I_max overeenkomen met de afgeknipte minimum- en maximumintensiteitswaarden van het volume.
    4. Pas de normalisatie toe op het volledige 3D-volume met behulp van elementgewijze bewerkingen binnen de computationele omgeving.
    5. Controleer dat alle voxelintensiteiten binnen het interval [0, 1] liggen voordat je de data in het neurale netwerk invoert.
    6. Zorg ervoor dat normalisatieparameters onafhankelijk worden afgeleid voor elke afbeelding om informatielekkage tussen training, validatie en testsets te voorkomen.
  3. Implementeer een U-Net convolutioneel neuraal netwerkarchitectuur met behulp van een deep learning-framework zoals PyTorch of TensorFlow.
    1. Maak een nieuw project aan in een deep learning-ontwikkelingsomgeving en zet een vaste willekeurige seed voor reproduceerbaarheid.
    2. Definieer een 2D U-Net-architectuur (Figuur 2) voor binaire segmentatie met een encoder-decoderstructuur en sla verbindingen over.
    3. Stel de modelinvoer in als enkelkanaals CT-slices (grijstinten) en stel de modeluitvoer in als een enkelkanaals kanskaart die de kans op het vat weergeeft.
    4. Configureer de laatste laag om een sigmoid-activatiefunctie te gebruiken om waarden in het bereik [0, 1] te produceren.
    5. Definieer de verliesfunctie voor binaire segmentatie (bijv. binaire kruis-entropie) en initialiseer een optimizer.
    6. Specificeer trainingshyperparameters, waaronder batchgrootte, aantal epochs en leersnelheid, en registreer deze waarden voor rapportage.
    7. Bereid dataloaders voor om de trainings- en validatiedatasets in het model te voeren met consistente schuddingen en batching.
    8. Bewaar de volledige modeldefinitie en hyperparameterconfiguratie voor reproduceerbaarheid.
  4. Configureer het model met een encoder-decoder structuur, waarbij skipverbindingen en batchnormalisatielagen worden geïntegreerd om de segmentatienauwkeurigheid te verbeteren.
    1. Definieer een encoder bestaande uit herhaalde convolutionele blokken. Zorg ervoor dat elk blok bevat:
      Twee opeenvolgende 2D-convolutielagen (kerngrootte 3 × 3, opvulling = 1)
      Batchnormalisatie toegepast na elke convolutie
      Rectified Linear Unit (ReLU) activatie
    2. Pas 2 × 2 max pooling toe met een stap van 2 na elk encoderblok om de ruimtelijke resolutie geleidelijk te verminderen.
    3. Verdubbel het aantal featurekanalen na elke downsamplingstap.
    4. Definieer de decoder met behulp van getransponeerde convolutie (2 × 2 kernel, stride 2) voor upsampling.
    5. Verbind feature-afbeeldingen van de overeenkomstige encoderlaag naar de decoderlaag via skipverbindingen om ruimtelijke informatie te behouden.
    6. Pas na elke concatenatiestap twee convolutionele lagen toe met batchnormalisatie en ReLU-activatie.
    7. Gebruik een laatste 1 × 1 convolutielaag om features toe te wijzen op een single-channel output.
    8. Pas een sigmoïde activatiefunctie toe om een voxel-gewijze kanskaart voor de segmentatie van het vat te produceren.
  5. Train drie configuraties van het model:
    1. Basismodel (training vanaf nul)
      1. Initialiseer de U-Net-gewichten willekeurig (bijv. He-initialisatie).
      2. Gebruik alleen de handmatig geannoteerde artery-ven-dataset als invoer.
      3. Verander de grootte van invoerbeelden naar 512 × 512 pixels.
      4. Normaliseer intensiteitswaarden naar het bereik [0,1].
      5. Stel de batchgrootte in op 8 (of maximaal toegestaan door GPU-geheugen).
      6. Gebruik de Adam-optimizer met leersnelheid = 1 × 10⁻4.
      7. Gebruik binaire kruis-entropie (voor binaire segmentatie) of kruis-entropieverlies (voor arterie-ader classificatie).
      8. Train voor 30 epochs.
      9. Houd validatieverlies na elke epoche in de gaten.
      10. Bewaar de modelgewichten die overeenkomen met het laagste validatieverlies.
      11. In PyTorch volgt u stappen 3.5.1.13–3.5.1.14.
      12. Definieer optimizer: torch.optim.Adam(model.parameters(), lr=1e-4)
      13. Definieer verlies: torch.nn.BCEWithLogitsLoss() of torch.nn.CrossEntropyLoss()
      14. Gebruik model.train() tijdens training en model.eval() tijdens validatie.
    2. Segmentatie-invoermodel (hulpvatmasker-invoer)
      1. Pas de invoerlaag aan om twee kanalen te accepteren:
        Kanaal 1: CT-afbeelding
        Kanaal 2: Segmentatiemasker voor binaire vaten
      2. Verbind het CT-beeld en het vatmasker langs de kanaaldimensie voordat je ze in het netwerk voert.
      3. Houd de architectuur identiek aan het basismodel.
      4. Gebruik dezelfde optimizer, leersnelheid, batchgrootte en epochnummer als in stap 3.5.1.
      5. Sla de best presterende gewichten op op basis van validatie F1-score.
    3. Transfer learning model (vooraf getrainde initialisatie)
      1. Laad voorgetrainde U-Net-gewichten getraind op een generieke schipsegmentatiedataset (zoals beschreven in het voortgangsrapport).
      2. Bevries encoderlagen voor de eerste 5 epochs (optionele stabilisatiestap).
      3. Ontdooi alle lagen en blijf fijn afstellen voor de resterende tijdperken.
      4. Gebruik een verminderde leersnelheid = 5 × 10⁻5 tijdens het fijn afstellen.
      5. Train in totaal 30 epochs.
      6. Pas horizontale flipping toe als data-augmentatie tijdens de training.
      7. Sla het model met de hoogste validatie F1-score op.
  6. Gebruik binaire cross-entropie verlies en de Adam-optimizer met een initiële leersnelheid van 0,001. Verlaag de leersnelheid adaptief als validatieverlies stagneert.
    1. Het definiëren van de verliesfunctie
      1. Voor binaire vatsegmentatie gebruik je Binair Cross-Entropy loss met logits.
      2. In PyTorch, definieer: criterion = torch.nn.BCEWithLogitsLoss()
      3. Bij het uitvoeren van multiklasse arterie-veneclassificatie, gebruik: criterium = torch.nn.CrossEntropyLoss()
    2. Het definiëren van de optimizer
      1. Gebruik de Adam-optimizer met een initiële leersnelheid van 0,001.
      2. In PyTorch: optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
    3. Het mogelijk maken van het verminderen van adaptieve leersnelheid
      1. Implementeer een learning rate scheduler om de learning rate te verlagen wanneer validatieverlies stopt met verbeteren.
      2. Gebruik de ReduceLROnPlateau scheduler.
      3. In PyTorch: scheduler = torch.optim.lr_scheduler. ReduceLROnPlateau(
        optimizer,
        mode='min',
        factor=0,5,
        Geduld=5,
        verbose=Waar
        )
      4. Na elke validatiefase roep je scheduler.step(validation_loss)
    4. Configuratie van de trainingslus.
      1. Volg voor elk tijdperk stappen 3.6.4.2–3.6.4.7:
      2. Zet model op trainingsmodus: model.train()
      3. Voer een voorwaartse pass uit.
      4. Rekenverlies.
      5. Backpropagate: verlies.backward()
      6. Updategewichten: optimizer.step()
      7. Nul gradiënten vóór de volgende iteratie: optimizer.zero_grad()
      8. Na de trainingsfase schakel je over naar evaluatiemodus met model.eval() en bereken je validatieverlies.
    5. Vroeg stoppen (optioneel maar aanbevolen)
      1. Als validatieverlies 10 opeenvolgende epochs niet verbetert, stop dan met trainen om overfitting te voorkomen.
  7. Pas data-augmentatietechnieken toe zoals willekeurige rotaties, flips en elastische vervormingen om de robuustheid te verhogen en overfitting te verminderen.
    1. Een augmentatiepijplijn definiëren
      1. Pas alleen augmentaties toe op de trainingsdataset.
      2. Pas identieke ruimtelijke transformaties toe op zowel het CT-beeld als het bijbehorende segmentatiemasker.
    2. Willekeurige rotaties.
      1. Pas willekeurige rotaties in het vlak toe tussen -15° en +15°.
      2. In PyTorch (met torchvision of albumentaties): RandomRotation (degrees=15)
    3. Horizontale en verticale flips.
      1. Pas een horizontale flip toe met kans p = 0,5.
      2. Pas een verticale flip toe met kans p = 0,5 (indien anatomisch acceptabel).
    4. Elastische vervorming.
      1. Pas een elastische transformatie toe om anatomische variabiliteit te simuleren.
      2. Gebruik kleine vervormingsparameters om onrealistische vervorming te voorkomen.
    5. Implementatievoorbeeld (PyTorch + Albumentaties)
      1. Definieer de transformatiepijplijn vóór de training:
        transform = A.Compose([
        A. Roteren(limiet=15, p=0,5),
        A.HorizontalFlip(p=0.5),
        A.ElasticTransform(alpha=1, sigma=50, alpha_affine=10, p=0.3)
        ])
      2. Pas transformatie toe binnen de dataset __getitem__()-methode om een gesynchroniseerde transformatie van afbeelding en masker te garanderen.
    6. Validatie en testsets
      1. Pas augmentatie niet toe op validatie- of testdatasets.
      2. Gebruik alleen normalisatie en grootteaanpassing voor deze sets.
    7. Kwaliteitscontrole.
      1. Inspecteer visuele versterkte monsters vóór training om anatomische plausibiliteit te waarborgen.
      2. Controleer of maskers uitgelijnd blijven met de getransformeerde beelden.
  8. Train het model voor een vast aantal epochs of tot convergentie, waarbij je de prestaties op de validatieset na elke epoche monitort.
    1. Definitieve trainingsduur
      1. Stel het maximale aantal trainingsperiodes in op 30.
      2. Alternatief kun je doorgaan met trainen totdat aan de convergentiecriteria is voldaan (zie Vroege Stopping hieronder).
    2. Trainingslus
      1. Volg voor elk tijdperk stappen 3.8.2.2–3.8.2.10:
      2. Zet het model op trainingsmodus: model.train()
      3. Itereer over alle mini-batches in de trainingsset.
      4. Laad een batch CT-beelden en bijbehorende maskers.
      5. Voer een voorwaartse pass uit.
      6. Bereken verlies met behulp van de gedefinieerde verliesfunctie.
      7. Backpropagate-gradiënten: verlies.backward()
      8. Modelgewichten bijwerken: optimizer.step()
      9. Reset gradiënten voor de volgende batch: optimizer.zero_grad()
      10. Bereken het gemiddelde trainingsverlies voor het tijdperk.
    3. Validatiestap (na elk tijdperk)
      1. Schakel model over naar evaluatiemodus: model.eval()
      2. Schakel gradiëntberekening uit: met torch.no_grad():
      3. Iterera over de validatiedataset.
      4. Voer een voorwaartse pass uit.
      5. Verlies van computevalidatie.
      6. Bereken prestatie-indicatoren (F1-score, precisie, gevoeligheid, DICE-score).
      7. Verlies van registratievalidatie en metrics.
    4. Aanpassing van leersnelheid
      1. Update scheduler na validatiestap: scheduler.step(validation_loss)
    5. Convergentiecriteria
      1. Stop met trainen als validatieverlies niet verbetert gedurende 10 opeenvolgende epochs (vroegtijdig stoppen), of als prestatiestatistieken stagneren.
    6. Model checkpointing
      1. Sla modelgewichten op wanneer de validatie F1-score verbetert.
      2. Behou het best presterende model voor de uiteindelijke evaluatie op de testset.
    7. Houtkap
      1. Sla trainings- en validatieverlieswaarden per epoch op.
      2. Plot leercurves (verlies versus epoch) om convergentiegedrag te verifiëren.
  9. Kies het best presterende model op basis van de hoogste F1-score op de validatiedataset.
    1. Tracking van validatiemetrieken
      1. Bereken na elk tijdperk de F1-score op de validatiedataset.
      2. Sla de F1-score op samen met het bijbehorende epochnummer.
    2. Modelvergelijking
      1. Vergelijk validatie F1-scores over alle tijdperken.
      2. Identificeer het tijdperk waarin de hoogste validatie F1-score is behaald.
    3. Model checkpointing
      1. Sla tijdens de training modelgewichten op telkens wanneer de validatie F1-score verbetert.
    4. Definitieve modelkeuze
      1. Na afronding van de training laad je de gewichten die overeenkomen met de hoogste validatie F1-score:
        model.load_state_dict(torch.load("best_model.pth"))
    5. Onafhankelijk testen
      1. Evalueer het geselecteerde model slechts één keer op de onafhankelijke testdataset.
      2. Gebruik de testsetprestaties niet voor modelselectie.
    6. Reproduceerbaarheid
      1. Noteer het geselecteerde epochnummer en de bijbehorende validatiemetrics.
      2. Herstel willekeurige zaadjes om reproduceerbaarheid te garanderen.
  10. Bewaar de gewichten en configuraties van het getrainde model voor segmentatietaken stroomafwaarts.

4. Segmentatie en skelettisering

  1. Laad het getrainde U-Net-model en pas het toe op de voorbewerkte CT-scans in de onafhankelijke testset.
  2. Genereer voor elke scan een binair segmentatiemasker van de longvaat door een drempel toe te passen op de probabilistische output van het model.
  3. Bekijk visueel de segmentatieresultaten om de anatomische plausibiliteit te bevestigen, vooral in gebieden die getroffen zijn door CDH-geïnduceerde vervorming.
  4. Zet de gesegmenteerde 3D-binaire maskers om in skeletweergaven met behulp van een 3D-verdunningsalgoritme dat in software is geïmplementeerd.
  5. Label het vasculaire skelet met een breedte-eerst zoekalgoritme, waarbij de longstam als wortelknoop wordt aangewezen en generatieniveaus worden toegekend aan elke tak op basis van connectiviteit.
  6. Verwijder kleine, losstaande componenten of onduidelijke takken die waarschijnlijk door ruis of segmentatiefouten worden veroorzaakt, met een minimale voxelgrootte of taklengtedrempel.
  7. Bewaar de geskelettiseerde structuren in 3D-mesh- of grafcompatibele formaten (bijv. VTK of SWC) voor verdere morfometrische analyse.

5. Morfometrische feature-extractie

  1. Laad de geskelettiseerde vasculaire grafieken die zijn gegenereerd uit de gesegmenteerde CT-beelden.
  2. Identificeer alle afzonderlijke takken door de grafiekstructuur te doorlopen tussen bifurcatiepunten en terminale knooppunten.
  3. Bereken het totale aantal takken door alle geïdentificeerde segmenten binnen de vasculaire grafiek op te tellen.
  4. Bereken de lengte van elke tak door de Euclidische afstanden tussen verbonden voxels langs het skelet op te tellen.
  5. Bepaal de gemiddelde lengte van de tak door het gemiddelde van de lengtes van alle takken in het skelet van elk proefpersoon te berekenen.
  6. Ken generatieniveaus toe aan elke tak, beginnend bij de hoofd-longslagader als generatie 0 en verhoog met één bij elke bifurcatie met breedte-eerst traverseel.
  7. Bereken het maximale aantal distale generaties door het langste pad van de wortelknoop naar een eindtak te identificeren.
  8. Bereken het maximale aantal proximale generaties door het langste pad te identificeren van een perifere tak terug naar de wortel.
  9. Sla alle morfometrische kenmerken op in een gestructureerd spreadsheet- of databaseformaat (bijv. CSV of SQL) met subjectidentificaties, diagnosegroep en geëxtraheerde metrics.
  10. Inspecteer visueel een subset van skeletgrafieken en bijbehorende morfometrische kenmerken om nauwkeurigheid en biologische plausibiliteit te bevestigen.

6. Classificatieanalyse

  1. Importeer de gestructureerde dataset met morfometrische kenmerken (bijv. totaal aantal takken, gemiddelde taklengte, distale en proximale generatiediepte) en bijbehorende diagnostische labels (CDH of controle).
  2. Splits de dataset op in trainings- en testsets met behulp van gestratificeerde steekproeven om de klassenverdeling te behouden.
  3. Implementeer Random Forest- en Decision Tree-classifiers met behulp van een standaard machine learning-bibliotheek.
  4. Configureer modelparameters zoals het aantal schatters (bijv. 100 bomen voor Random Forest) en maximale diepte op basis van crossvalidatieprestaties.
  5. Train elke classifier met behulp van de trainingssubset van de data.
  6. Evalueer de classificatieprestaties op de hold-out testset met nauwkeurigheid als primaire maatstaf.
  7. Genereer verwarringsmatrices om de werkelijke positieve, echte negatieve, valse positieve en valse negatieve percentages voor CDH-detectie te beoordelen.
  8. Vergelijk de prestaties van Random Forest- en Decision Tree-classifiers en selecteer het model met de hoogste nauwkeurigheid voor het rapporteren van representatieve resultaten.
  9. Visualiseer classificatieresultaten met behulp van staafdiagrammen, ROC-curves of beslissingsbomen indien van toepassing, en bewaar de output voor opname in figuren.
  10. Documenteer alle modelparameters, prestatie-indicatoren en eventuele preprocessing die op de data wordt toegepast om reproduceerbaarheid te waarborgen.

Toegang beperkt. Log in of start een proefperiode om deze inhoud te bekijken.

Resultaten

Het deep learning-model getraind met transfer learning behaalde de hoogste segmentatieprestaties van alle configuraties, met een precisie van 0,714, gevoeligheid van 0,706 en een F1-score van 0,672 op de onafhankelijke testset. Het vanaf nul getrainde basismodel liet verminderde prestaties zien (precisie: 0,703, gevoeligheid: 0,589, F1-score: 0,551), terwijl het segmentatie-inputmodel matig presteerde (F1-score: 0,630).

Na segmentatie toonde morfometrische ana...

Toegang beperkt. Log in of start een proefperiode om deze inhoud te bekijken.

Discussie

Verschillende stappen in dit protocol zijn cruciaal om nauwkeurige en reproduceerbare resultaten te bereiken. De beeldvoorbewerkingsfase moet zorgvuldig worden uitgevoerd, met name de omzetting naar Hounsfield-eenheden en de toepassing van windowing (WL = -400 HU, WW = 1500 HU), aangezien deze parameters de zichtbaarheid van vaatstructurenbepalen 14,15,16,17. S...

Toegang beperkt. Log in of start een proefperiode om deze inhoud te bekijken.

Openbaarmakingen

De auteurs hebben geen financiële verklaringen om op te geven.

Dankbetuigingen

Emrah Aydin werd ondersteund door het Wetenschappelijke en Technologische Onderzoeksraad van Turkije (TÜBİTAK) 2219 International Postdoctoral Research Fellowship Program for Turkish Citizens (1059B191501313). Aslıgül Aksan en Mustafa Ekrem Erkan werden ondersteund door de Wetenschappelijke en Technologische Onderzoeksraad van Turkije (TÜBİTAK) 2209-A - Onderzoeksproject Ondersteuningsprogramma voor bachelorstudenten.

Toegang beperkt. Log in of start een proefperiode om deze inhoud te bekijken.

Materialen

Lijst van materialen gebruikt in dit artikel
NaamBedrijfCatalogusnummerOpmerkingen
Analyze 12.0AnalyzeDirecthttps://analyzedirect.com/Gebruikt voor CT-beeldbeoordeling, bewerking en metingen
CT Scan Data (postnatal thoracic scans)Institutioneel archiefN/ARetrospectieve dataset van CDH en controle-neonaten
dcm2niixOpen-source (GitHub)https://github.com/rordenlab/dcm2niixConverteert DICOM naar NIfTI-formaat
ITK-SNAPOpen-source (http://www.itksnap.org)http://www.itksnap.org3D medische beeldannotatietool
NetworkXOpen-sourcehttps://networkx.orgGebaat voor grafiekgebaseerde vasculaire boomanalyse
OpenCV (CLAHE-functie)Open-sourcehttps://opencv.orgGebaat voor beeldcontrastverbetering
Pandas, NumpyOpen-sourcehttps://pandas.pydata.org, https://numpy.orgGegevensbeheer en numerieke bewerkingen
Python 3.8+Python Software Foundationhttps://www.python.orgProgrammeertaal voor analyse en modelontwikkeling
PyTorch 1.13+Meta AIhttps://pytorch.orgDeep learning-framework voor U-Net-implementatie
Scikit-imageOpen-sourcehttps://scikit-image.orgBeeldverwerkingsbibliotheek gebruikt voor skeletisering
Scikit-learnOpen-sourcehttps://scikit-learn.orgMachine learningbibliotheek voor classificatie
Ubuntu 20.04 LTSCanonicalhttps://ubuntu.comBesturingssysteem gebruikt voor alle verwerking
Workstation met NVIDIA RTX 3090 GPUNVIDIAhttps://www.nvidia.comVereist voor het trainen van deep learning-modellen

Referenties

  1. Keijzer, R., et al. Dual-hit hypothesis explains pulmonary hypoplasia in the nitrofen model of congenital diaphragmatic hernia. Am J Pathol. 156 (4), 1299-1306 (2000).
  2. Aydin, E., et al. The survivorship bias in congenital diaphragmatic hernia. Children. 9 (2), 218(2022).
  3. Harting, M. T. Congenital diaphragmatic hernia-associated pulmonary hypertension. Semin Pediatr Surg. 26 (3), 147-153 (2017).
  4. Kool, H., et al. Pulmonary vascular development goes awry in congenital lung abnormalities. Birth Defects Res C Embryo Today. 102 (4), 343-358 (2014).
  5. Leeuwen, L., Fitzgerald, D. A. Congenital diaphragmatic hernia. J Paediatr Child Health. 50 (9), 667-673 (2014).
  6. Aydin, E., et al. Optimization of pulmonary vasculature tridimensional phenotyping in the rat fetus. Sci Rep. 9 (1), 1244(2019).
  7. Aydin, E., et al. Pulmonary vasculature development in congenital diaphragmatic hernia: a novel automated quantitative imaging analysis. Pediatr Surg Int. 40 (1), 1244(2024).
  8. Memon, N. A., Mirza, A. M., Gilani, S. A. M. Segmentation of lungs from CT scan images for early diagnosis of lung cancer. World Acad Sci Eng Technol. 20, 1050-1055 (2008).
  9. Fetita, C., Brillet, P. Y., Preteux, F. J. Morpho-geometrical approach for 3D segmentation of pulmonary vascular tree in multi-slice CT. Proceedings of SPIE - The International Society for Optical Engineering. , (2009).
  10. Orkisz, M., et al. Segmentation of the pulmonary vascular trees in 3D CT images using variational region-growing. IRBM. 35 (1), 11-19 (2014).
  11. Fabijanska, A. Segmentation of pulmonary vascular tree from 3D CT thorax scans. Biocybern Biomed Eng. 35 (2), 106-119 (2015).
  12. Zhai, Z., Staring, M., Stoel, B. C. Lung vessel segmentation in CT images using graph-cuts. , SPIE Medical Imaging. San Diego, California, United States. (2016).
  13. Khanna, A., Londhe, N. D., Gupta, S. Detection of pulmonary vessels in 3D lung CT using improved graph cut. 2018 5th International Conference on Signal Processing and Integrated Networks (SPIN), Noida, India, , (1109).
  14. DenOtter, T. D., Schubert, J. Hounsfield Unit. , StatPearls Publishing. Treasure Island, FL. (2023).
  15. Detection and classification of brain hemorrhage based on Hounsfield values and convolution neural network technique. Phan, A. C., Nguyen, T. M. N., Phan, T. C. 2019 IEEE-RIVF International Conference on Computing and Communication Technologies (RIVF), Danang, Vietnam, , (2019).
  16. Xue, Z., et al. Window classification of brain CT images in biomedical articles. AMIA Annu Symp Proc. 2012, 1023-1029 (2012).
  17. Contrast-limited adaptive histogram equalization: speed and effectiveness. Pizer, S. M., et al. Proceedings of the First Conference on Visualization in Biomedical Computing, Atlanta, GA, USA, , (1990).
  18. Moccia, S., De Momi, E., El Hadji, S., Mattos, L. S. Blood vessel segmentation algorithms – Review of methods, datasets and evaluation metrics. Comput Methods Programs Biomed. 158, 71-91 (2018).

Toegang beperkt. Log in of start een proefperiode om deze inhoud te bekijken.

Herprints en machtigingen

Trefwoorden

Segmentatie van longvatenmorfometrische analysecomputertomografieU Net architectuurtransfer learningvasculaire morfologieskeletonisatie algoritme
Video binnenkort beschikbaar