35 #include <vtkPolyData.h> 73 "Centerline Registration"),
75 mRecordTrackingWidget(NULL)
77 mVerticalLayout =
new QVBoxLayout(
this);
82 if (!mRecordTrackingWidget)
88 void CenterlineRegistrationWidget::setup()
90 mOptions =
profile()->getXmlSettings().descend(
"centerlineregistrationwidget");
93 mSelectMeshWidget->setValueName(
"Centerline: ");
100 mRegisterButton =
new QPushButton(
"Register");
101 connect(mRegisterButton, SIGNAL(clicked()),
this, SLOT(registerSlot()));
105 mServices->acquisition(), mServices,
108 mRecordTrackingWidget->
getSessionSelector()->setHelp(
"Select tool path for registration");
111 mVerticalLayout->setMargin(0);
112 mVerticalLayout->addWidget(
new DataSelectWidget(mServices->view(), mServices->patient(),
this, mSelectMeshWidget));
114 this->selectXtranslation(mOptions.
getElement());
115 this->selectYtranslation(mOptions.
getElement());
116 this->selectZtranslation(mOptions.
getElement());
121 mVerticalLayout->addWidget(mRecordTrackingWidget);
122 mVerticalLayout->addWidget(
new CheckBoxWidget(
this, mUseXtranslation));
123 mVerticalLayout->addWidget(
new CheckBoxWidget(
this, mUseYtranslation));
124 mVerticalLayout->addWidget(
new CheckBoxWidget(
this, mUseZtranslation));
125 mVerticalLayout->addWidget(
new CheckBoxWidget(
this, mUseXrotation));
126 mVerticalLayout->addWidget(
new CheckBoxWidget(
this, mUseYrotation));
127 mVerticalLayout->addWidget(
new CheckBoxWidget(
this, mUseZrotation));
128 mVerticalLayout->addWidget(mRegisterButton);
130 mVerticalLayout->addStretch();
138 void CenterlineRegistrationWidget::initializeTrackingService()
145 void CenterlineRegistrationWidget::registerSlot()
148 if(!mSelectMeshWidget->getMesh())
153 vtkPolyDataPtr centerline = mSelectMeshWidget->getMesh()->getVtkPolyData();
154 Transform3D rMd = mSelectMeshWidget->getMesh()->get_rMd();
156 mCenterlineRegistration->UpdateScales(
157 mUseXrotation->getValue(), mUseYrotation->getValue(), mUseZrotation->getValue(),
158 mUseXtranslation->getValue(), mUseYtranslation->getValue(), mUseZtranslation->getValue());
160 Transform3D old_rMpr = mServices->patient()->get_rMpr();
164 if(trackerRecordedData_prMt.empty())
172 new_rMpr = mCenterlineRegistration->runCenterlineRegistration(centerline, rMd, trackerRecordedData_prMt, old_rMpr);
174 std::cout <<
"Running centerline registration." << std::endl;
176 new_rMpr = new_rMpr*old_rMpr;
177 mServices->registration()->addPatientRegistration(new_rMpr,
"Centerline centerline to tracking data");
179 Eigen::Matrix4d display_rMpr = Eigen::Matrix4d::Identity();
180 display_rMpr = new_rMpr*display_rMpr;
181 std::cout <<
"New prMt: " << std::endl;
182 for (
int i = 0; i < 4; i++)
183 std::cout << display_rMpr.row(i) << std::endl;
188 void CenterlineRegistrationWidget::selectXtranslation(QDomElement root)
191 "Select if X translation be used in registration",
true,
195 void CenterlineRegistrationWidget::selectYtranslation(QDomElement root)
198 "Select if Y translation be used in registration",
true,
202 void CenterlineRegistrationWidget::selectZtranslation(QDomElement root)
205 "Select if Z translation be used in registration",
true,
209 void CenterlineRegistrationWidget::selectXrotation(QDomElement root)
212 "Select if X rotation be used in registration",
true,
216 void CenterlineRegistrationWidget::selectYrotation(QDomElement root)
219 "Select if Y rotation be used in registration",
true,
223 void CenterlineRegistrationWidget::selectZrotation(QDomElement root)
226 "Select if Z rotation be used in registration",
true,
232 void CenterlineRegistrationWidget::clearDataOnNewPatient()
cxResource_EXPORT ProfilePtr profile()
static BoolPropertyPtr initialize(const QString &uid, QString name, QString help, bool value, QDomNode root=QDomNode())
void reportError(QString msg)
Transform3D Transform3D
Transform3D is a representation of an affine 3D transform.
QDomElement getElement()
return the current element
boost::shared_ptr< class RegServices > RegServicesPtr
vtkSmartPointer< vtkPolyData > vtkPolyDataPtr
static StringPropertySelectMeshPtr New(PatientModelServicePtr patientModelService)
boost::shared_ptr< class CenterlineRegistration > CenterlineRegistrationPtr
std::map< double, Transform3D > TimedTransformMap
XmlOptionFile descend(QString element) const
step one level down in the xml tree
Namespace for all CustusX production code.