I denne øvelse skal I lave et script (dvs. ingen function header), opdelt i celler, som skal indlæse et dicom billede af en patient med en hjernesvulst eller tumor. Denne skal detekteres med en threshold funktion, som skal finde pixel-værdier, som er lysere end et reference område. Til slut beregnes størrelsen af det markerede areal som et mål for tumorens størrelse.
Instruktioner:
- Hent Tumor.dcm
- Lav en celle med flg. overskrift:
- %% Indlæs dicom billede + info
- Gem dicom billedet i variablen im - brug dicomread funktionen
- Gem dicom info i variablen info - brug dicominfo funktionen
- Beregn voxel størrelsen som produktet af info.PixelSpacing(1) og (2) samt info.SliceThickness
- Lav im om til en double med værdierne 0 til 1
- im = double(im)./max(max(double(im)));
- Lav en celle med flg. overskrift:
- %% Skær hjernen ud
- Lav først en maske, som indeholder hjernen
- Lav en nulfyldt matrix med samme størrelse som im - brug funktionen zeros og size(im)
- Find index på de pixler, som har en gråtoneværdi på over 0.2 og gem dem som idx
- Sæt bw(idx) til 1. Plot bw med imshow.
- Brug en open funktion til at fjerne hjerneskallen:
- Lav et string element kaldet sel og sæt det til en skive med diameteren 7:
- sel = strel('disk',7);
- Udfør en open operation på bw med imopen funktionen:
- hjernemaske = imopen(bw,sel);
- Plot hjernemasken med imshow - iagttag forskellen på bw og hjernemasken
- Lav et string element kaldet sel og sæt det til en skive med diameteren 7:
- Sæt hjerne til at indholde element produktet (.*) af im og hjernemaske
- Lav en celle med flg. overskrift:
- %% Marker raskt område med et ROI og udregn middel + sd i dette område
- Vis hjerne med imshow
- Dan en roi, kaldet normalt, med funktionen impoly
- Klik punkt for punkt. Afslut ved dobbeltklikke.
- Lav roi'en om til en maske med funktionen createMask og gem den i variablen normalmaske
- Sæt idx til at indeholde de pixels i normalmaske, som overstiger nul:
- idx = find(normalmaske);
- Beregn middelværdi (m) og standard deviation (sd) med hhv. mean og std funktionerne på im(idx).
- Lav en celle med flg. overskrift:
- %% Find pixelværdier over m + 4*sd
- Sæt idx til at indeholde pixelværdier i hjerne variablen med en pixelværdi på over m+4*sd
- Sæt variblen tumor til at være lig im
- Sæt tumor(idx) til at være 1.
- Vis tumor med imshow
- Beregn tumor størrelsen ved at gange længden af idx variablen med VoxelSize. Dette giver størrelsen i kubikmillimeter - den konverteres til det mere anvendte ml ved at dividere med 1000.
- Sæt titlen på billedet til Tumorstørrelse = xx.xx ml:
- title(sprintf('Tumorsize = %2.2f ml',TumorSize));
- Gem scriptet som Tumor.m