Download this file

77 lines (77 with data), 4.6 kB

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
tic
files = dir('segmented_nodules/*.dcm');
count = 0;
fid = fopen ('nodules_features.txt', 'wt');
fid2 = fopen ('nodules_many_regions.txt', 'wt');
fprintf(fid,'%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s \n','ImageName','Area','ConvexArea','Circularity','Perimeter','ConvexPerimeter','Roughness','EquivDiameter','MajorAxisLength','MinorAxisLength','Elongation','Compactness','Eccentricity','Solidity','Extent','RadialDistanceSD','MinIntensity','MaxIntensity','MeanIntensity','SDIntensity','MinIntensityBG','MaxIntensityBG','MeanIntensityBG','SDIntensityBG','IntesityDifference');
fprintf(fid2,'%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s \n','ImageName','Area','ConvexArea','Circularity','Perimeter','ConvexPerimeter','Roughness','EquivDiameter','MajorAxisLength','MinorAxisLength','Elongation','Compactness','Eccentricity','Solidity','Extent','RadialDistanceSD','MinIntensity','MaxIntensity','MeanIntensity','SDIntensity','MinIntensityBG','MaxIntensityBG','MeanIntensityBG','SDIntensityBG','IntesityDifference');
for i = 1:size(files,1)
fn = sprintf('%s/%s', 'segmented_nodules', char(files(i).name));
fn2 = sprintf('%s/%s', 'segmented_background', char(files(i).name));
info = dicominfo(fn);
info4 = dicominfo(fn2);
I = dicomread(info);
I4 = dicomread(info4);
BW = (I~=-2000);
L = bwlabel(BW);
a = L;
flag = 0;
if (nanmax(a(:)) > 1)
flag = 1;
end
a(a~=0 & a~=1) = 0;
STATS = regionprops (a,'Area', 'Extent', 'Perimeter', 'Centroid', 'ConvexArea', 'ConvexImage', 'Solidity', 'Eccentricity', 'MajorAxisLength', 'EquivDiameter', 'MinorAxisLength');
STATS.ConvexPerimeter = 2 * (sqrt(pi*STATS.ConvexArea));
STATS.Circularity = (4*pi*STATS.Area)/(STATS.ConvexPerimeter .^ 2);
STATS.Elongation = STATS.MajorAxisLength/STATS.MinorAxisLength;
b = double(I);
b(b==-2000) = NaN;
b4 = double(I4);
b4(b4==-2000) = NaN;
STATS.MinIntensity = nanmin(b(:));
STATS.MaxIntensity = nanmax(b(:));
STATS.MeanIntensity = nanmean(b(:));
STATS.SDIntensity = nanstd(b(:));
STATS.MinIntensityBG = nanmin(b4(:));
STATS.MaxIntensityBG = nanmax(b4(:));
STATS.SDIntensityBG = nanstd(b4(:));
STATS.MeanIntensityBG = nanmean(b4(:));
STATS.IntensityDifference = abs(STATS.MeanIntensity - STATS.MeanIntensityBG);
fprintf(files(i).name,',',STATS(1).Area,',', STATS(1).Extent,',', STATS(1).Perimeter,'\n');
count = count+1
fn2 = sprintf('%s/%s', 'contours', char(files(i).name));
info2 = dicominfo(fn2);
I2 = dicomread(info2);
d = NaN;
j = 0;
for r = 1:size(I2,1)
for c = 1:size(I2,2)
if (I2(r,c) == 1)
j = j + 1;
d(j) = sqrt(double((c-(STATS.Centroid(1)^2))+(r-(STATS.Centroid(2)^2))));
end
end
end
STATS.RadialDistanceSD = nanstd(d(:));
STATS.Perimeter = j;
I3 = bwperim(STATS.ConvexImage);
j = 0;
for r = 1:size(I3,1)
for c = 1:size(I3,2)
if (I3(r,c) == 1)
j = j + 1;
end
end
end
STATS.ConvexPerimeter = j;
STATS.Roughness = STATS.ConvexPerimeter/STATS.Perimeter;
STATS.Compactness = STATS.Perimeter^2/(4*pi*STATS.Area);
if (flag == 0)
fprintf(fid,'%s,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f \n',files(i).name,STATS.Area,STATS.ConvexArea,STATS.Circularity,STATS.Perimeter,STATS.ConvexPerimeter,STATS.Roughness,STATS.EquivDiameter,STATS.MajorAxisLength,STATS.MinorAxisLength,STATS.Elongation,STATS.Compactness,STATS.Eccentricity,STATS.Solidity,STATS.Extent,STATS.RadialDistanceSD,STATS.MinIntensity,STATS.MaxIntensity,STATS.MeanIntensity,STATS.SDIntensity,STATS.MinIntensityBG,STATS.MaxIntensityBG,STATS.MeanIntensityBG,STATS.SDIntensityBG,STATS.IntensityDifference);
else
fprintf(fid2,'%s,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f \n',files(i).name,STATS.Area,STATS.ConvexArea,STATS.Circularity,STATS.Perimeter,STATS.ConvexPerimeter,STATS.Roughness,STATS.EquivDiameter,STATS.MajorAxisLength,STATS.MinorAxisLength,STATS.Elongation,STATS.Compactness,STATS.Eccentricity,STATS.Solidity,STATS.Extent,STATS.RadialDistanceSD,STATS.MinIntensity,STATS.MaxIntensity,STATS.MeanIntensity,STATS.SDIntensity,STATS.MinIntensityBG,STATS.MaxIntensityBG,STATS.MeanIntensityBG,STATS.SDIntensityBG,STATS.IntensityDifference);
end
end
fclose(fid);
fclose(fid2);
toc