У меня вопрос относительно функции изоповерхности MATLAB.Координаты вершин вершин верных точек MATLAB с объемом
Предположим, что у меня есть маска (объем bw), представляющая объект A, и поверхность (вершины и грани), представляющие объект B. Мы знаем, что объект A и объект B представляют собой другое представление одного и того же объекта. Поэтому мы хотим их зарегистрировать.
Теперь алгоритм регистрации возвращает некоторое преобразование T, начиная с начального предположения T '. вручную оценить первоначальное предположение, что я делаю следующее:
[f1,v2] = loadGraphicalTemplate(B);
[f2,v2] = isosurface(mask); % aka object A
v2 = transformPointsForward(InitialGuess,v2);
labels = (zeros(length(v1),1)'; ones(length(v2),1)');
showMesh([f1;f2], [v1;v2], labels);
где начальное предположение является аффинной матрицей, я вручную модифицированным, пока обе поверхности не почти перекрывается. На этом этапе появляется алгоритм регистрации и делает все остальное.
Проблема в том, что когда я применяю преобразование к облаку точек (генерируемому из объекта B, см. Код ниже), результат не имеет никакого смысла! Это похоже на то, что матрица преобразования была случайно сформирована!
%% coordinates of non zero elements
IDX = find(B);
[X,Y,Z] = ind2sub(size(B), IDX);
coords = [X,Y,Z];
%% values of non zero elements
linB = B(:);
vals = linB(IDX);
%% transformation
coords = transformPointsForward(T,coords);