Innholdsfortegnelse:

Bruke varierende gråskalaintensitetsgrenser for å visualisere og identifisere unormaliteter i mammogrambilder: 9 trinn
Bruke varierende gråskalaintensitetsgrenser for å visualisere og identifisere unormaliteter i mammogrambilder: 9 trinn

Video: Bruke varierende gråskalaintensitetsgrenser for å visualisere og identifisere unormaliteter i mammogrambilder: 9 trinn

Video: Bruke varierende gråskalaintensitetsgrenser for å visualisere og identifisere unormaliteter i mammogrambilder: 9 trinn
Video: Врачи не переставали кричать, когда увидели, кого родила эта женщина! 2024, November
Anonim
Bruke varierende gråskalaintensitetsterskler for å visualisere og identifisere abnormiteter i mammogrambilder
Bruke varierende gråskalaintensitetsterskler for å visualisere og identifisere abnormiteter i mammogrambilder

Formålet med dette prosjektet var å identifisere og bruke en parameter for å behandle gråtonemammogrammer av forskjellige bakgrunnsvevsklassifiseringer: Fatty, Fatty Glandular, & Dense Tissue. Denne klassifiseringen brukes når radiologer analyserer mammogrammer og må vurdere om vevstetthet vil skjule eventuelle abnormiteter som lesjoner eller svulster. Dette er fordi både normale fysiologiske strukturer som kjertelvev og fibrøst bindevev. og unormale morfologier som forkalkninger og svulster vil se veldig lyse ut på mammogrammet, mens mindre tett fettvev vil se svart ut. Derfor var det hensiktsmessig å programmere en klassifikator som kan manipulere pikselintensitetsnivåer for best å visualisere og identifisere masser.

Trinn 1: Organisering av mammogramdata

Organisering av mammogramdata
Organisering av mammogramdata

En av de første tingene jeg innså at jeg trengte å håndtere var å organisere dataene på en veldig tydelig, kortfattet og tilgjengelig måte. Dette er variablene jeg hentet fra mini-MIAS-databasen for mammogrammer. Jeg opprettet to matriser. En som inneholder 4 kolonner:

  1. Bilde nummer:
  2. x massekoordinat
  3. y massekoordinat
  4. Masseradius: (Dette definerte en omtrentlig størrelse for massen

Den andre serien inneholdt klassifiseringsinformasjon:

  1. Type bakgrunnsvev: Fett (F), Fettkirtel (G), Tett (D)
  2. Beskrivelse av masse: Veldefinert (CIRC), spikulert (SPIC), dårlig definert annen (MISC) Arkitektonisk forvrengning (ARCH), Asymmetri (ASYM), Normal (NORM)
  3. Diagnoser: Godartet (B), ondartet (M)

Siden målet med dette prosjektet var å bestemme den beste terskelen for hver type bakgrunnsvev, var ikke all informasjon nødvendig. Imidlertid kan du utvide prosjektet ditt til å inkludere teksturanalyse og teste klassifikatoren mot de kjente massebeskrivelsene.

Sidebemerkning: Databasen som jeg fikk diagnostiserte mammogrambilder fra, organiserte informasjonen om hvert mammogram i en tekstfil atskilt fra bildene. Det var mildt sagt vanskelig for meg å trekke ut dataene fra en tekstfil og organisere i matriseskjemaer, men følgende lenke var veldig nyttig for å finne ut av alt det. Alternativt kan du bare justere koden jeg limte inn ovenfor for dine formål.

Mammogramfilformat: 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:

Trinn 2: Bildebehandling

Bildebehandling
Bildebehandling

Den andre tingen som dukket opp da jeg fant ut hvordan jeg identifiserte masser var at jeg for mange unormale mammogrammer ikke visuelt kunne se hvor abnormiteten var eller hvor stor den var. Selvfølgelig, ettersom jeg ikke er en erfaren radiolog, var det forventet. Imidlertid var den mest enkle måten å finne abnormiteter (i henhold til mine lange google -søk) å se på konsentrasjoner av lyse og mørke områder. Jeg brukte først og fremst adapthisteq -funksjonen for å forbedre bildekontrasten og deretter imbinarisere for å konvertere bildet til et binært bilde for å eksperimentere med forskjellige terskelnivåer.

  1. adapthisteq: Denne funksjonen transformerer intensitetsverdier for gråtoner og rgb -bilder ved hjelp av kontrastbegrenset adaptiv histogramutjevning. Med andre ord, det justerer histogrammet for intensitetsverdier til en spesifisert distribusjonstype. Matematikklinken for denne funksjonen er vedlagt nedenfor for videre lesing.
  2. imbinarize: lager et binært bilde fra et gråtonebilde ved å tilordne alle piksler over en viss intenisti til 1s og pikslene under den verdien a 0. Jeg brukte denne funksjonen til å teste den optimale terskelen for å redusere bakgrunnsvevstøy.

Trinn 3: Terskelkode

Terskelkode
Terskelkode

En for sløyfe brukes til å binærisere mammogrammet med varierende terskler. For å gi et større bilde, inneholder for -løkken koden fra trinn 3 til trinn 7. Så hvert binære bilde vil bli analysert for abnormiteter. I tillegg er dette for loop innkapslet i et annet for loop som importerer et nytt mammogrambilde fra databasen i hver iterasjon.

Trinn 4: Finne abnormiteter for hvert binært bilde

Finne abnormiteter for hvert binært bilde
Finne abnormiteter for hvert binært bilde
Finne abnormiteter for hvert binært bilde
Finne abnormiteter for hvert binært bilde

Jeg behandlet de binære bildene videre ved hjelp av strel -funksjonen i forbindelse med imopen for å fjerne bakgrunnsstøy. Det binære bildet fra forrige trinn inverteres og filtreres ved hjelp av nabolaget definert av SE. Deretter brukte jeg bwlabel til å merke alle områder som hadde minst 8 tilkoblede piksler.

Regionstøttefunksjonen ble brukt til å finne sentroidene og egenskapene til hvert sted identifisert av bwlabel.

Da ble alle flekker større enn 500 piksler identifisert ved hjelp av ismember. Sentroidene for de identifiserte flekkene ble plottet på et bilde som bare viste flekkene større i areal enn 500. Area Identified = ismember (Labeled, indicies (sortedAreas> 500)); Flekker = identifisert> 0;

Trinn 5: Plotte den diagnostiserte masseposisjonen og størrelsen for visuell sammenligning

Plotte den diagnostiserte masseposisjonen og størrelsen for visuell sammenligning
Plotte den diagnostiserte masseposisjonen og størrelsen for visuell sammenligning
Plotte den diagnostiserte masseposisjonen og størrelsen for visuell sammenligning
Plotte den diagnostiserte masseposisjonen og størrelsen for visuell sammenligning
Plotte den diagnostiserte masseposisjonen og størrelsen for visuell sammenligning
Plotte den diagnostiserte masseposisjonen og størrelsen for visuell sammenligning

Jeg ønsket å se om flekkene funnet av bwlabel var riktige. Jeg gjorde dette på to måter. Jeg analyserte først nøyaktigheten til klassifisereren min ved å gjøre en visuell sammenligning. Jeg tegnet ganske enkelt den faktiske størrelsen og plasseringen av abnormiteten (rød sirkel) og plasseringen bestemt av koden (blå x) på det forhåndsbehandlede mammogrambildet. De seks bildene ovenfor viser effekten av å øke grenseverdien.

Trinn 6: Implementering av den andre sammenligningsmetoden

Implementering av den andre sammenligningsmetoden
Implementering av den andre sammenligningsmetoden

Den andre måten jeg testet klassifisereren og terskelverdiene på var ved å bestemme om stedene som ble funnet av klassifisereren var innenfor en viss avstand fra de diagnostiserte abnormitetskoordinatene. Jeg lagret tersklene som minst ett av de identifiserte punktene var innenfor 1,5*r fra den kjente abnormiteten til en egen tekstfil som heter Mammogram Data. Hensikten med dette var å finne minimumsterskelen som trengs for at klassifisereren min kan identifisere abnormiteten.

Trinn 7: Analyse av innsamlede data

Analyse av innsamlede data
Analyse av innsamlede data
Analyse av innsamlede data
Analyse av innsamlede data

Jeg kjørte programmet på alle de unormale mammogrambildene, og jeg satt igjen med en enorm tekstfil med data. For å finne den beste terskelen for hver type vev, organiserte jeg dataene etter vevstype og tegnet et histogram over terskelverdiene for hver vevstype. Den riktige terskelverdien ble bestemt på hvilken terskel som ga de mest nøyaktige resultatene for hver vevstype. Jeg lagret disse dataene for å laste opp til klassifisereren min.

Trinn 8: Lag din egen klassifisering

Lag din egen klassifisering!
Lag din egen klassifisering!
Lag din egen klassifisering!
Lag din egen klassifisering!
Lag din egen klassifisering!
Lag din egen klassifisering!
Lag din egen klassifisering!
Lag din egen klassifisering!

Etter at jeg fant de mest passende terskelverdiene for hver vevstype, redigerte jeg min originalkode for å få en bruker til å angi bildetall og vevstype for å velge terskelen for mammogrambildet. Jeg plottet deretter det diagnostiserte mammogramstedet med de funnet stedene på de originale mammogrambildene. Jeg ønsket å gjøre dette morsommere, så jeg programmerte en funksjon for å beskjære et sirkulært område rundt ROI. Brukeren vil bli bedt om å velge et midtpunkt og flere punkter som best omfatter ROI. Jeg har lagt ved begge matlab -filene her.

Trinn 9: Forbedringer? Noen tanker?

Da jeg skrev dette instruerbare, begynte jeg å se mange forbedringer jeg kunne gjøre i klassifiseringen, for eksempel å finne måter å skille mellom forskjellige typer masser identifisert basert på teksturanalyse eller forbedre testingen min for nøyaktighetsdel av SandBoxProject. fil. Siden dette var et prosjekt med en frist, måtte jeg stoppe et sted, men jeg håper at jeg kan bruke bildebehandlingsferdighetene jeg lærte i andre applikasjoner. Jeg har også vedlagt filen som ble brukt til å batchbehandle alle de unormale mammogrambildene.

Anbefalt: