-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCBMS_2015_2D_assessments.m
120 lines (94 loc) · 3.72 KB
/
CBMS_2015_2D_assessments.m
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
% ------------------------------------------------------------------------------
%
% Author: Helder C. R. Oliveira
%
% Copyright (c) Helder Oliveira, 2015
% Email: [email protected]
%
% ------------------------------------------------------------------------------
clear all;
close all;
clc;
folder_list = {'50perc/', ...
'70perc/', ...
'85perc/', ...
'100perc/'};
dose_list = {50, 70, 85, 100};
rls_list = {1, 2, 3, 4, 5};
% Esse esquema eh bom para pegar uma realizacao de uma determinada projecao %%%%%%%%%%%%%
% folder_list = {'Dose 85 Percent (Anthro)/'};
%
% dose_list = {85};
% rls_list = {1};
%%%%%%%%%%%%%%%
tipo = 'Raw';
salvar_raw = 0;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% COORDENADAS (Observar o cluster a ser usado!):
%
% 1a maiores: (2709:3108, 117:516)
% 2a maiores: (2123:2634, 141:652) (512x512)
%
% Mama inteira: (380:3628, 13:1029)
%
% do [r]ecorte: (r_i_l:r_f_l, r_i_c:r_f_c)
r_i_l = 2123; r_f_l = 2634;
r_i_c = 141; r_f_c = 652;
% Medida p/ equipamento Hologic
offset_eqp = 43;
% ajuste dos niveis de cinza de uma imagem
% IDEAL - O fator eh baseado na dose
% ajuste = @(img, dose) (((img - offset_hologic) * (100/dose)) + offset_hologic);
% GAMBI - O fator eh baseado na media das duas imagens, GT e IMG
ajuste = @(img, fator) (((img - offset_eqp) * (fator)) + offset_eqp);
% o grountruth é sempre o mesmo para todos,
% entao pode ser carregado antes
img_gt = double(imread('SPIE2015_2D_GT.tif'));
% Loop nas pastas de cada 'dose'
for i = 1:length(dose_list),
% Nome fixo que ficara no inicio de todo arquivo
canonical_name = sprintf('SPIE2015_2D_%dperc', dose_list{i});
% folder = 'Full Dose (Anthro)/';
folder = folder_list{i};
% Salvando info da 'dose' e 'realizacao'
r = [dose_list{i}];
dlmwrite('assessments.csv', r, '-append', 'delimiter', ';');
% Loop na lista de 'realizacoes' (rls)
for j = 1:length(rls_list),
% valor da j-esima realizacao
rls = rls_list{j};
% Nome do arquivo
% ex: SPIE2015_2D_85perc_rls01_Raw.dcm
file_name = sprintf('%s_rls%02d_%s.dcm', canonical_name, rls, tipo);
% montagem do path completo
% ex: 50perc/SPIE2015_2D_50perc_rls01_Raw.dcm
path = sprintf('%s%s', folder, file_name);
% leitura da:
% j-esima realizacao da,
% i-esima dose
img = double(dicomread(path));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% SALVANDO A IMAGEM COMO .tif
%novo_nome = strcat(path(1:length(path)-3), 'tif');
%imwrite(uint16(img), novo_nome);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Pega o recorte APENAS PARA AJUSTAR
img_gt_rec = img_gt(r_i_l:r_f_l, r_i_c:r_f_c);
img_rec = img(r_i_l:r_f_l, r_i_c:r_f_c);
% AJUSTA ANTES!!!!!!!!!!!!!!!!
% Ajuste dos niveis e compensacao da maquina
% O ajuste deve ser feito apenas para imagens RAW, as PROC ja
% estao ajustadas
if (strcmp('Raw', tipo)),
fator = mean(img_gt_rec(:)-offset_eqp) / mean(img_rec(:)-offset_eqp);
img = ajuste(img, fator);
end
% Só processa o recorte
img_gt_rec = img_gt(r_i_l:r_f_l, r_i_c:r_f_c);
img_rec = img(r_i_l:r_f_l, r_i_c:r_f_c);
fprintf('[Dose: %d; Rls: %02d; Media: %f] >> %s\n', dose_list{i}, rls, mean(img_rec(:)), file_name);
[~, r] = evaluation6(img_rec, img_gt_rec);
% salvando no csv
dlmwrite('assessments.csv', r, '-append', 'precision', '%f', 'delimiter', ';');
end
end
fprintf('\n\nFinished!\n');