Inhoudsopgave:
- Stap 1: Mammogramgegevens ordenen
- Stap 2: Beeldverwerking
- Stap 3: Drempelcode
- Stap 4: Afwijkingen zoeken voor elke binaire afbeelding
- Stap 5: De gediagnosticeerde massalocatie en -grootte uitzetten voor visuele vergelijking
- Stap 6: De tweede vergelijkingsmethode implementeren
- Stap 7: Verzamelde gegevens analyseren
- Stap 8: Maak je eigen classifier
- Stap 9: Verbeteringen? Nog ideeën?
Video: Met behulp van variërende grijswaarden intensiteitsdrempels om afwijkingen in mammogramafbeeldingen te visualiseren en te identificeren - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:17
Het doel van dit project was om een parameter te identificeren en te gebruiken om grijswaardenmammogrambeelden van verschillende achtergrondweefselclassificaties te verwerken: vet, vetklierweefsel en dicht weefsel. Deze classificatie wordt gebruikt wanneer radiologen mammogrammen analyseren en moeten overwegen of weefseldichtheid afwijkingen zoals laesies of tumoren zal verdoezelen. Dit komt omdat zowel normale fysiologische structuren zoals klierweefsel als fibreus bindweefsel. en abnormale morfologieën zoals calcificaties en tumoren zullen zeer helder op het mammogram verschijnen, terwijl minder dicht vetweefsel zwart zal lijken. Daarom was het passend om een classifier te programmeren die pixelintensiteitsniveaus kan manipuleren om massa's het best te visualiseren en te identificeren.
Stap 1: Mammogramgegevens ordenen
Een van de eerste dingen die ik me realiseerde dat ik ermee moest omgaan, was het organiseren van de gegevens op een zeer duidelijke, beknopte en toegankelijke manier. Dit zijn de variabelen die ik heb geëxtraheerd uit de mini-MIAS-database met mammogrammen. Ik heb twee arrays gemaakt. Een met 4 kolommen:
- Afbeeldingsnummer:
- x-coördinaat van massa
- y-coördinaat van massa
- Massastraal: (Dit definieerde een geschatte grootte voor de massa)
De tweede array bevat classificatie-informatie:
- Type achtergrondweefsel: vet (F), vet klierweefsel (G), dicht (D)
- Beschrijving van massa: goed gedefinieerd (CIRC), gespiculeerd (SPIC), slecht gedefinieerde andere (MISC) Architecturale vervorming (ARCH), asymmetrie (ASYM), normaal (NORM)
- Diagnoses: goedaardig (B), kwaadaardig (M)
Aangezien het doel van dit project was om voor elk type achtergrondweefsel de beste drempel te bepalen, was niet alle informatie nodig. U kunt uw project echter uitbreiden met textuuranalyse en uw classificatie testen aan de hand van de bekende massabeschrijvingen.
Kanttekening: de database waaruit ik de gediagnosticeerde mammogramafbeeldingen kreeg, organiseerde de informatie over elk mammogram in een tekstbestand dat gescheiden was van de afbeeldingen. Het was een beetje moeilijk voor mij om de gegevens uit een tekstbestand te extraheren en in array-formulieren te ordenen, maar de volgende link was erg handig om dat allemaal uit te zoeken. U kunt ook de code aanpassen die ik hierboven heb geplakt voor uw doeleinden.
Mammogram Bestandsformaat:mdb001 G CIRC B 535 425 197
mdb002 G CIRC B 522 280 69
TextScan Help: https://www.mathworks.com/help/matlab/ref/textsca…Mammogram Database:
Stap 2: Beeldverwerking
Welnu, het tweede dat opkwam toen ik aan het uitzoeken was hoe ik massa's kon identificeren, was dat ik voor veel abnormale mammogrammen niet visueel kon zien waar de afwijking was of hoe groot deze was. Aangezien ik geen ervaren radioloog ben, was dit natuurlijk te verwachten. De eenvoudigste manier om afwijkingen te vinden (volgens mijn lange Google-zoekopdrachten) was echter te kijken naar concentraties van lichte en donkere gebieden. Ik heb voornamelijk de adapthisteq-functie gebruikt om het beeldcontrast te verbeteren en vervolgens te imbinariseren om het beeld om te zetten in een binair beeld om met verschillende drempelniveaus te experimenteren.
- adapthisteq: deze functie transformeert intensiteitswaarden van grijswaarden- en rgb-afbeeldingen met behulp van contrastbeperkte adaptieve histogramvereffening. Met andere woorden, het past het histogram van intensiteitswaarden aan een gespecificeerd type distributie aan. De mathworks-link voor deze functie is hieronder bijgevoegd voor verder lezen.
- imbinarize: maakt een binaire afbeelding van een grijsschaalafbeelding door alle pixels boven een bepaalde intensiteit toe te wijzen aan 1s en de pixels onder die waarde een 0. Ik heb deze functie gebruikt om de optimale drempel te testen om achtergrondweefselruis te verminderen.
Stap 3: Drempelcode
Een for-lus wordt gebruikt om het mammogram binair te maken met verschillende drempels. Om een groter beeld te geven, bevat de for-lus de code van stap 3 tot stap 7. Dus elke binaire afbeelding wordt geanalyseerd op afwijkingen. Bovendien is deze for-lus ingekapseld in een andere for-lus die in elke iteratie een nieuw mammogrambeeld uit de database importeert.
Stap 4: Afwijkingen zoeken voor elke binaire afbeelding
Ik heb de binaire afbeeldingen verder verwerkt met behulp van de strel-functie in combinatie met imopen om achtergrondruis te verwijderen. Het binaire beeld van de vorige stap wordt omgekeerd en gefilterd met behulp van de buurt gedefinieerd door SE. Daarna gebruikte ik bwlabel om alle gebieden te labelen die ten minste 8 verbonden pixels hadden.
De regio-rekwisietenfunctie werd gebruikt om de zwaartepunt- en gebiedseigenschappen van elke door bwlabel geïdentificeerde plek te vinden.
Vervolgens werden alle spots groter dan 500 pixels geïdentificeerd met ismember. De zwaartepunten voor de geïdentificeerde vlekken zijn uitgezet op een afbeelding die alleen de vlekken weergeeft die groter zijn in een gebied dan 500. Geïdentificeerd gebied = ismember(Labeled, indicies(sortedAreas>500)); Vlekken = Geïdentificeerd>0;
Stap 5: De gediagnosticeerde massalocatie en -grootte uitzetten voor visuele vergelijking
Ik wilde kijken of de door bwlabel gevonden plekken klopten. Ik deed dit op twee manieren. Ik heb eerst de nauwkeurigheid van mijn classifier geanalyseerd door een visuele vergelijking te maken. Ik heb eenvoudig de werkelijke grootte en locatie van de afwijking (rode cirkel) en de locatie bepaald door de code (blauwe x) op het voorbewerkte mammogrambeeld uitgezet. De zes afbeeldingen hierboven tonen de effecten van het verhogen van de grijswaardendrempelwaarde.
Stap 6: De tweede vergelijkingsmethode implementeren
De tweede manier waarop ik de classifier en de drempelwaarden heb getest, was door te bepalen of de door de classifier gevonden locaties zich binnen een bepaalde afstand van de gediagnosticeerde afwijkingscoördinaten bevonden. Ik heb de drempels waarvoor ten minste één van de geïdentificeerde punten binnen 1,5*r van de bekende afwijking lag, opgeslagen in een apart tekstbestand met de naam Mammogramgegevens. Het doel hiervan was om de minimumdrempel te vinden die nodig was voor mijn classifier om de afwijking te identificeren.
Stap 7: Verzamelde gegevens analyseren
Ik liet het programma draaien op alle abnormale mammogrambeelden en ik bleef achter met een enorm tekstbestand met gegevens. Om de beste drempel voor elk type weefsel te vinden, heb ik de gegevens per weefseltype geordend en een histogram van de drempelwaarden voor elk weefseltype uitgezet. De juiste drempelwaarde werd bepaald op basis van welke drempel de meest nauwkeurige resultaten opleverde voor elk weefseltype. Ik heb deze gegevens opgeslagen om te uploaden naar mijn classifier.
Stap 8: Maak je eigen classifier
Nadat ik de meest geschikte drempelwaarden voor elk weefseltype had gevonden, bewerkte ik mijn oorspronkelijke code om een gebruiker het afbeeldingsnummer en weefseltype te laten invoeren om de drempel voor het mammogrambeeld te kiezen. Vervolgens heb ik de gediagnosticeerde mammogramlocatie uitgezet met de gevonden locaties op de originele mammogrambeelden. Ik wilde dit leuker maken, dus programmeerde ik een functie om een cirkelvormig gebied rond ROI bij te snijden. De gebruiker zou worden geïnstrueerd om een middelpunt te kiezen en verschillende punten die de ROI het beste omvatten. Ik heb beide matlab-bestanden hier bijgevoegd.
Stap 9: Verbeteringen? Nog ideeën?
Terwijl ik deze instructable aan het schrijven was, begon ik veel verbeteringen te zien die ik in de classifier kon aanbrengen, zoals het vinden van manieren om onderscheid te maken tussen verschillende soorten massa's die zijn geïdentificeerd op basis van textuuranalyse of het verbeteren van mijn tests voor nauwkeurigheid van het SandBoxProject. het dossier. Aangezien dit een project met een deadline was, moest ik ergens stoppen, maar ik hoop dat ik de beeldverwerkingsvaardigheden die ik heb geleerd in andere toepassingen kan gebruiken. Ik heb ook het bestand bijgevoegd dat werd gebruikt om alle abnormale mammogramafbeeldingen batchgewijs te verwerken.
Aanbevolen:
Gegevens van Magicbit in AWS visualiseren: 5 stappen
Gegevens van Magicbit in AWS visualiseren: gegevens die zijn verzameld van sensoren die zijn aangesloten op Magicbit, worden via MQTT naar de AWS IOT-kern gepubliceerd om in realtime grafisch te worden gevisualiseerd. We gebruiken magicbit als ontwikkelbord in dit project dat is gebaseerd op ESP32. Daarom is elke ESP32 d
Meting van versnelling met behulp van ADXL345 en Particle Photon: 4 stappen
Meting van versnelling met behulp van ADXL345 en deeltjesfoton: De ADXL345 is een kleine, dunne, ultralaagvermogen, 3-assige versnellingsmeter met hoge resolutie (13-bits) meting tot ±16 g. Digitale uitvoergegevens zijn geformatteerd als 16-bits tweetallen en zijn toegankelijk via de digitale I2 C-interface. Het meet de
Digitale klok met netwerktijd met behulp van de ESP8266: 4 stappen (met afbeeldingen)
Digitale netwerkklok met de ESP8266: we leren hoe we een schattige kleine digitale klok kunnen bouwen die communiceert met NTP-servers en de netwerk- of internettijd weergeeft. We gebruiken de WeMos D1 mini om verbinding te maken met een wifi-netwerk, de NTP-tijd te verkrijgen en deze weer te geven op een OLED-module. De video hierboven
Draadloze sensorgegevens visualiseren met Google Charts: 6 stappen
Visualiseren van draadloze sensorgegevens met behulp van Google Charts: Voorspellende analyse van de machines is zeer noodzakelijk om de uitvaltijd van de machine tot een minimum te beperken. Regelmatige controle helpt bij het verlengen van de werktijd van de machine en verbetert op zijn beurt de fouttolerantie. Draadloze trillings- en temperatuursen
Hoe u gebruikersniveaus van NUMA toevoegt aan uw exemplaar van N met behulp van NumADD Firefox AddOn: 4 stappen
Gebruikersniveaus van NUMA toevoegen aan uw exemplaar van N NumADD Firefox-add-on gebruiken: Elke gebruiker van Metanet's N-database op gebruikersniveau NUMA weet hoe onhandig de interface is voor het kopiëren van door gebruikers gemaakte niveaus naar uw exemplaar van het spel. NumADD, elimineert de noodzaak van kopiëren en plakken en maakt het overzetten van niveaus het werk van één muisklik