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