Skip to content
Snippets Groups Projects
Commit 6b00d709 authored by Laura Nervo's avatar Laura Nervo Committed by Nicola Vigano
Browse files

gtINDEXMatchGrains : add last argument 'toBeChecked' with the proper format...

gtINDEXMatchGrains : add last argument 'toBeChecked' with the proper format for found conflicts to be saved in parameters.index.forcemerge if needed

Signed-off-by: default avatarLaura Nervo <laura.nervo@esrf.fr>

git-svn-id: https://svn.code.sf.net/p/dct/code/trunk@801 4c865b51-4357-4376-afb4-474e03ccb993
parent 48d2f655
No related branches found
No related tags found
No related merge requests found
function [match, dev, dcm, drotm, conflicts] = gtINDEXMatchGrains(grain1, grain2, ...
ph1, dc, drot, tol)
% GTINDEXMATCHGRAINS Matches multiple indexed grains between two datasets;
% can also be used to find unmerged grains.
function [match, dev, dcm, drotm, conflicts, toBeChecked] = gtINDEXMatchGrains(...
grain1, grain2, ph1, dc, drot, tol)
% GTINDEXMATCHGRAINS Matches multiple indexed grains between two datasets;
% can also be used to find unmerged grains.
%
% [match, dev, dcm, drotm, conflicts] = gtINDEXMatchGrains(grain1, grain2, ...
% ph1, dc, drot, tol)
% [match, dev, dcm, drotm, conflicts, toBeChecked] = gtINDEXMatchGrains(grain1, grain2, ph1, dc, drot, tol)
% --------------------------------------------------------------------------------------------------------
%
% For each grain in the reference set 'grain1' it tries to find the
% corresponding grain in the set 'grain2'. It uses tolerances in 'tol'
......@@ -47,19 +46,19 @@ function [match, dev, dcm, drotm, conflicts] = gtINDEXMatchGrains(grain1, grain2
% operators.
%
%
% OPTIONAL INPUT
% grain1 - indexed grain data of reference set as output from Indexter
% OPTIONAL INPUT:
% grain1 = indexed grain data of reference set as output from Indexter
% {if undefined, it is loaded for the current dataset}
% grain2 - indexed grain data to be matched as output from Indexter
% grain2 = indexed grain data to be matched as output from Indexter
% {if undefined, it is same as grain1}
% ph1 - phase ID in grain1 {default is 1}
% dc - global translation between datasets from a position given in
% ph1 = phase ID in grain1 {default is 1}
% dc = global translation between datasets from a position given in
% grain2 to the same in grain1 {default is [0 0 0]}
% drot - global rotation around the origin of grain2; the rotation
% drot = global rotation around the origin of grain2; the rotation
% matrix that transforms a position vector given in grain2
% into grain1 (size 3x3 for column vectors); {default is the
% identity matrix}: p1 = drot*p2 + dc;
% tol - tolerances for finding matching grains and their default values
% tol = tolerances for finding matching grains and their default values
% tol.distf = 0.5 - distance between center of mass;
% mult. factor of smaller bounding box size
% toldist = tol.distf * min(bbxs,bbys)
......@@ -69,15 +68,17 @@ function [match, dev, dcm, drotm, conflicts] = gtINDEXMatchGrains(grain1, grain2
% tol.int = 1e10 - max. intensity ratio
%
%
% OUTPUT
% match - array of indices of matching grains [grain_ind1 grain_ind2]
% dev - vectors of deviations of grain properties
% dcm - updated guess for dc
% drotm - updated guess for drot
% conflicts - list of conflicts found (same as printed on command line);
% conflicts{:,1}: grains from set1 for which more than one
% possible matches were found
% conflicts{:,2}: corresponding possible matches from set2
% OUTPUT:
% match = array of indices of matching grains [grain_ind1 grain_ind2]
% dev = vectors of deviations of grain properties
% dcm = updated guess for dc
% drotm = updated guess for drot
% conflicts = list of conflicts found (same as printed on command line);
% conflicts{:,1}: grains from set1 for which more than one
% possible matches were found
% conflicts{:,2}: corresponding possible matches from set2
% toBeChecked = conflicts list formatted to be saved as
% parameters.input.forcemerge
%
% USAGE EXAMPLE
% Revise tolerances; then run:
......@@ -108,7 +109,7 @@ function [match, dev, dcm, drotm, conflicts] = gtINDEXMatchGrains(grain1, grain2
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Initialize
% Initialize
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
......@@ -153,7 +154,7 @@ nof_grains2 = length(grain2);
%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Prepare grain data
% Prepare grain data
%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Sort grains by Z position and only keep one third at the center
......@@ -224,7 +225,7 @@ dev.rot = NaN(3,3,nof_grains1);
%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Reference planes
% Reference planes
%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Extension to Rodrigues fundamental zone
......@@ -279,7 +280,7 @@ end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Grain2 grain centers
% Grain2 grain centers
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if isempty(drot)
......@@ -293,7 +294,7 @@ gr2.center = gr2.center*rotmat' + dc(ones(nof_grains2,1),:);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Grain2 Rodrigues coordinates
% Grain2 Rodrigues coordinates
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Calculate new Rodrigues lines and vectors inside the fundamental zone
% for the new, rotated positions
......@@ -363,7 +364,7 @@ end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Grain1 Rodrigues coordinates
% Grain1 Rodrigues coordinates
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Calculate Rodrigues lines inside the fundamental zone
......@@ -401,7 +402,7 @@ end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Match grains
% Match grains
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
disp('Matching grains ...')
......@@ -460,6 +461,7 @@ end
if isempty(conflicts)
fprintf('\nNo conflicts have been found with the actual tolerances.\n')
toBeChecked = [];
else
if (length([conflicts{:,2}]) == length(unique([conflicts{:,2}])))
fprintf('Match conflict list is unique.\n')
......@@ -467,12 +469,21 @@ else
fprintf('Match conflict list is NOT unique.\n')
fprintf(' Some grain(s) in set2 may be assigned to more than one in set1.\n')
end
tmp = cell2mat(conflicts);
pippo_cc = cell(0,2);
for ii=1:size(tmp,1)
tmp2 = tmp(ii,:);
tmp2 = unique(tmp2);
pippo_cc{ii} = tmp2;
end
tmp = cell2mat(pippo_cc');
toBeChecked = unique(tmp, 'rows');
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Evalute grain match
% Evalute grain match
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
dev.xyz = NaN(nof_grains1,3);
......@@ -557,8 +568,9 @@ fprintf('Number of matching grains found:\n %d \n\n',sum(~isnan(match(:,2))))
end % of main function
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% SUB-FUNCTIONS
% SUB-FUNCTIONS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function tomatch = sfCheckMatching(act, cand, tol, fzone_acc, fzone_ext, pixsize)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment