Skip to content

Commit 3ae1dac

Browse files
committed
Fix #2426 - Groom: Alignment should be performed on groomed surfaces, not original
1 parent 44ea9d7 commit 3ae1dac

File tree

2 files changed

+7
-8
lines changed

2 files changed

+7
-8
lines changed

Libs/Groom/Groom.cpp

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,6 @@ bool Groom::image_pipeline(std::shared_ptr<Subject> subject, size_t domain) {
216216

217217
//---------------------------------------------------------------------------
218218
bool Groom::run_image_pipeline(Image& image, GroomParameters params) {
219-
220219
// ensure axis aligned
221220
image.toAxisAligned();
222221

@@ -572,9 +571,9 @@ bool Groom::run_alignment() {
572571
std::vector<Mesh> meshes;
573572

574573
for (size_t i = 0; i < subjects.size(); i++) {
575-
Mesh mesh = get_mesh(i, 0, true);
574+
Mesh mesh = get_mesh(i, 0, true /* combine */, MeshSource::Groomed);
576575
for (size_t domain = 1; domain < num_domains; domain++) {
577-
mesh += get_mesh(i, domain, true); // combine
576+
mesh += get_mesh(i, domain, true /* combine */, MeshSource::Groomed);
578577
}
579578

580579
// grab the first domain's initial transform (e.g. potentially reflect) and use before ICP
@@ -607,9 +606,9 @@ bool Groom::run_alignment() {
607606
}
608607
reference_mesh = reference_meshes[reference_index];
609608
} else {
610-
reference_mesh = get_mesh(reference_index, 0, true);
609+
reference_mesh = get_mesh(reference_index, 0, true /* combine */, MeshSource::Groomed);
611610
for (size_t domain = 1; domain < num_domains; domain++) {
612-
reference_mesh += get_mesh(reference_index, domain, true); // combine
611+
reference_mesh += get_mesh(reference_index, domain, true /* combine */, MeshSource::Groomed);
613612
}
614613
}
615614
auto transforms = Groom::get_icp_transforms(meshes, reference_mesh);
@@ -656,7 +655,7 @@ bool Groom::run_alignment() {
656655
std::vector<Mesh> meshes;
657656
for (size_t i = 0; i < subjects.size(); i++) {
658657
if (!subjects[i]->is_excluded()) {
659-
Mesh mesh = get_mesh(i, domain, true);
658+
Mesh mesh = get_mesh(i, domain, true /* combine */, MeshSource::Groomed);
660659
// if fixed subjects are present, only add the fixed subjects
661660
if (subjects[i]->is_fixed() || !project_->get_fixed_subjects_present()) {
662661
reference_meshes.push_back(mesh);
@@ -678,7 +677,7 @@ bool Groom::run_alignment() {
678677
reference_index = MeshUtils::findReferenceMesh(reference_meshes, subset_size);
679678
reference_index = reference_meshes[reference_index].get_id();
680679
}
681-
reference_mesh = get_mesh(reference_index, domain, true);
680+
reference_mesh = get_mesh(reference_index, domain, true /* combine */, MeshSource::Groomed);
682681

683682
params.set_alignment_reference_chosen(reference_index);
684683
params.save_to_project();

Libs/Groom/Groom.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ class Groom {
8585

8686
std::vector<vtkSmartPointer<vtkPoints>> get_combined_points();
8787

88-
Mesh get_mesh(int subject, int domain, bool transformed = false, MeshSource source = MeshSource::Original);
88+
Mesh get_mesh(int subject, int domain, bool transformed = false, MeshSource source = MeshSource::Groomed);
8989

9090

9191
vtkSmartPointer<vtkPoints> get_landmarks(int subject, int domain);

0 commit comments

Comments
 (0)