189
198
data_base(icp).skip = 1;
193
double_sub_base = double(sub_base);
195
if (numel(sub_base) < 2) || (std(double_sub_base(:)) == 0)
196
% This check is moved here for normxcorr2
197
eid = sprintf('Images:%s:sameElementsInTemplate',mfilename);
198
msg = 'The values of TEMPLATE cannot all be the same.';
202
local_sum_A = dic_local_sum(double_sub_base,n,n);
203
local_sum_A2 = dic_local_sum(double_sub_base.*double_sub_base,n,n);
205
% Note: diff_local_sums should be nonnegative, but may have negative
206
% values due to round off errors. Below, we use max to ensure the
207
% radicand is nonnegative.
208
denom_A = sqrt( max(( local_sum_A2 - (local_sum_A.^2)/mn ) / (mn-1), 0) );
209
i_nonzero = find(denom_A~=0);
211
202
data_base(icp).skip = 0;
213
204
if (OPTIMIZE > 2)
206
if sum(sub_base(:)) == sub_base(1)*numel(sub_base)
207
eid = sprintf('Images:%s:sameElementsInTemplate',mfilename);
208
msg = 'The values of TEMPLATE cannot all be the same.';
211
normxcorr_hw(hwid, 10, icp, sub_base);
213
double_sub_base = double(sub_base);
214
local_sum_A = dic_local_sum(double_sub_base,n,n);
215
local_sum_A2 = dic_local_sum(double_sub_base.*double_sub_base,n,n);
216
denom_A = sqrt( max(( local_sum_A2 - (local_sum_A.^2)/mn ) / (mn-1), 0) );
217
i_nonzero = find(denom_A~=0);
214
218
normxcorr_hw(hwid, 10, icp, sub_base, single(local_sum_A), single(denom_A), uint16(i_nonzero));
221
double_sub_base = double(sub_base);
223
if (numel(sub_base) < 2) || (std(double_sub_base(:)) == 0)
224
% This check is moved here for normxcorr2
225
eid = sprintf('Images:%s:sameElementsInTemplate',mfilename);
226
msg = 'The values of TEMPLATE cannot all be the same.';
230
local_sum_A = dic_local_sum(double_sub_base,n,n);
231
local_sum_A2 = dic_local_sum(double_sub_base.*double_sub_base,n,n);
233
% Note: diff_local_sums should be nonnegative, but may have negative
234
% values due to round off errors. Below, we use max to ensure the
235
% radicand is nonnegative.
236
denom_A = sqrt( max(( local_sum_A2 - (local_sum_A.^2)/mn ) / (mn-1), 0) );
237
i_nonzero = find(denom_A~=0);
216
239
data_base(icp).denom_A = denom_A;
217
240
data_base(icp).i_nonzero = i_nonzero;