Skip to content

Commit db5ef39

Browse files
committed
Refactor threshold value to variable in segmentation
Replaces hardcoded 0.9 threshold with a prob_threshold variable for tissue probability maps to improve maintainability and clarity. This change reduces code duplication and makes it easier to adjust the threshold for partial volume effect correction.
1 parent 7b978e9 commit db5ef39

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

GannetSegment.m

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -165,32 +165,34 @@
165165
T1 = spm_vol(struc);
166166
T1_tmp = T1.private.dat(:,:,:);
167167

168+
prob_threshold = 0.9; % threshold to reduce partial volume effect and improve accuracy
169+
168170
WM_vol_tmp = WM_vol.private.dat(:,:,:);
169-
WM_vol_tmp(WM_vol_tmp < 0.9) = 0; % threshold at 0.9 to avoid partial volume effects
171+
WM_vol_tmp(WM_vol_tmp < prob_threshold) = 0;
170172
T1_WM = WM_vol_tmp .* T1_tmp;
171173
T1_WM = T1_WM(:);
172174
T1_WM = T1_WM(T1_WM > 0); % include only nonzero voxels
173175

174176
GM_vol_tmp = GM_vol.private.dat(:,:,:);
175-
GM_vol_tmp(GM_vol_tmp < 0.9) = 0;
177+
GM_vol_tmp(GM_vol_tmp < prob_threshold) = 0;
176178
T1_GM = GM_vol_tmp .* T1_tmp;
177179
T1_GM = T1_GM(:);
178180
T1_GM = T1_GM(T1_GM > 0);
179181

180182
CSF_vol_tmp = CSF_vol.private.dat(:,:,:);
181-
CSF_vol_tmp(CSF_vol_tmp < 0.9) = 0;
183+
CSF_vol_tmp(CSF_vol_tmp < prob_threshold) = 0;
182184
T1_CSF = CSF_vol_tmp .* T1_tmp;
183185
T1_CSF = T1_CSF(:);
184186
T1_CSF = T1_CSF(T1_CSF > 0);
185187

186188
BG_vol_tmp = BG_vol.private.dat(:,:,:);
187-
BG_vol_tmp(BG_vol_tmp < 0.9) = 0;
189+
BG_vol_tmp(BG_vol_tmp < prob_threshold) = 0;
188190
T1_BG = BG_vol_tmp .* T1_tmp;
189191
T1_BG = T1_BG(:);
190192
T1_BG = T1_BG(T1_BG > 0);
191193

192194
head_vol_tmp = 1 - BG_vol.private.dat(:,:,:);
193-
head_vol_tmp(head_vol_tmp < 0.9) = 0;
195+
head_vol_tmp(head_vol_tmp < prob_threshold) = 0;
194196
T1_head = head_vol_tmp .* T1_tmp;
195197
T1_head = T1_head(:);
196198
T1_head = T1_head(T1_head > 0);
@@ -275,11 +277,11 @@
275277
% 3. Calculate a CSF-corrected i.u. value and output it to the structure
276278

277279
GM_vox_n = GM_vox.private.dat(:,:,:);
278-
GM_sum = sum(GM_vox_n(GM_vox_n > 0.9)); % threshold at 0.9 to improve accuracy
280+
GM_sum = sum(GM_vox_n(GM_vox_n > prob_threshold));
279281
WM_vox_n = WM_vox.private.dat(:,:,:);
280-
WM_sum = sum(WM_vox_n(WM_vox_n > 0.9));
282+
WM_sum = sum(WM_vox_n(WM_vox_n > prob_threshold));
281283
CSF_vox_n = CSF_vox.private.dat(:,:,:);
282-
CSF_sum = sum(CSF_vox_n(CSF_vox_n > 0.9));
284+
CSF_sum = sum(CSF_vox_n(CSF_vox_n > prob_threshold));
283285

284286
fGM = GM_sum / (GM_sum + WM_sum + CSF_sum);
285287
fWM = WM_sum / (GM_sum + WM_sum + CSF_sum);

0 commit comments

Comments
 (0)