Commit 4b9df457d854d95c77d8f2fa735e98c35ce9f801
1 parent
ea678bdb
Exists in
master
Update FRE using icp matrix
Showing
1 changed file
with
21 additions
and
8 deletions
Show diff stats
invesalius/gui/task_navigator.py
@@ -310,6 +310,8 @@ class NeuronavigationPanel(wx.Panel): | @@ -310,6 +310,8 @@ class NeuronavigationPanel(wx.Panel): | ||
310 | self.obj_reg_status = False | 310 | self.obj_reg_status = False |
311 | self.track_obj = False | 311 | self.track_obj = False |
312 | self.m_icp = None | 312 | self.m_icp = None |
313 | + self.fre = None | ||
314 | + self.icp_fre = None | ||
313 | self.event = threading.Event() | 315 | self.event = threading.Event() |
314 | 316 | ||
315 | self.coord_queue = QueueCustom(maxsize=1) | 317 | self.coord_queue = QueueCustom(maxsize=1) |
@@ -476,7 +478,7 @@ class NeuronavigationPanel(wx.Panel): | @@ -476,7 +478,7 @@ class NeuronavigationPanel(wx.Panel): | ||
476 | self.checkicp.Enable(True) | 478 | self.checkicp.Enable(True) |
477 | else: | 479 | else: |
478 | self.checkicp.Enable(False) | 480 | self.checkicp.Enable(False) |
479 | - self.checkicp.SetValue(False) | 481 | + #self.checkicp.SetValue(False) |
480 | 482 | ||
481 | #def UpdateImageCoordinates(self, position): | 483 | #def UpdateImageCoordinates(self, position): |
482 | def UpdateFRE(self, fre): | 484 | def UpdateFRE(self, fre): |
@@ -686,8 +688,11 @@ class NeuronavigationPanel(wx.Panel): | @@ -686,8 +688,11 @@ class NeuronavigationPanel(wx.Panel): | ||
686 | Publisher.sendMessage('Create marker', coord=img_coord, marker_id=None, colour=(1,0,0)) | 688 | Publisher.sendMessage('Create marker', coord=img_coord, marker_id=None, colour=(1,0,0)) |
687 | Publisher.sendMessage('Create marker', coord=transf_coord, marker_id=None, colour=(0,0,1)) | 689 | Publisher.sendMessage('Create marker', coord=transf_coord, marker_id=None, colour=(0,0,1)) |
688 | self.checkicp.Enable(True) | 690 | self.checkicp.Enable(True) |
691 | + self.checkicp.SetValue(True) | ||
692 | + self.icp = True | ||
689 | else: | 693 | else: |
690 | self.m_icp = None | 694 | self.m_icp = None |
695 | + self.icp = False | ||
691 | 696 | ||
692 | return self.m_icp | 697 | return self.m_icp |
693 | 698 | ||
@@ -696,7 +701,13 @@ class NeuronavigationPanel(wx.Panel): | @@ -696,7 +701,13 @@ class NeuronavigationPanel(wx.Panel): | ||
696 | self.icp = True | 701 | self.icp = True |
697 | else: | 702 | else: |
698 | self.icp = False | 703 | self.icp = False |
704 | + self.ctrl_icp() | ||
699 | 705 | ||
706 | + def ctrl_icp(self): | ||
707 | + if self.icp: | ||
708 | + self.UpdateFRE(self.icp_fre) | ||
709 | + else: | ||
710 | + self.UpdateFRE(self.fre) | ||
700 | self.icp_queue.put_nowait([self.icp, self.m_icp]) | 711 | self.icp_queue.put_nowait([self.icp, self.m_icp]) |
701 | print(self.icp, self.m_icp) | 712 | print(self.icp, self.m_icp) |
702 | 713 | ||
@@ -788,8 +799,9 @@ class NeuronavigationPanel(wx.Panel): | @@ -788,8 +799,9 @@ class NeuronavigationPanel(wx.Panel): | ||
788 | tracker_mode = self.trk_init, self.tracker_id, self.ref_mode_id | 799 | tracker_mode = self.trk_init, self.tracker_id, self.ref_mode_id |
789 | 800 | ||
790 | # compute fiducial registration error (FRE) | 801 | # compute fiducial registration error (FRE) |
791 | - fre = db.calculate_fre(self.fiducials_raw, self.fiducials, self.ref_mode_id, m_change) | ||
792 | - self.UpdateFRE(fre) | 802 | + if not self.icp_fre: |
803 | + self.fre = db.calculate_fre(self.fiducials_raw, self.fiducials, self.ref_mode_id, m_change) | ||
804 | + self.UpdateFRE(self.fre) | ||
793 | 805 | ||
794 | if self.track_obj: | 806 | if self.track_obj: |
795 | # if object tracking is selected | 807 | # if object tracking is selected |
@@ -849,11 +861,12 @@ class NeuronavigationPanel(wx.Panel): | @@ -849,11 +861,12 @@ class NeuronavigationPanel(wx.Panel): | ||
849 | jobs.start() | 861 | jobs.start() |
850 | # del jobs | 862 | # del jobs |
851 | 863 | ||
852 | - if dlg.ICPcorregistration(fre): | ||
853 | - m_icp = self.OnICP() | ||
854 | - # calculate the FRE after ICP make no sense. Is there a way to quantify the new error? | ||
855 | - #fre = db.calculate_fre(self.fiducials_raw, self.fiducials, self.ref_mode_id, m_change, m_icp) | ||
856 | - #self.UpdateFRE(fre) | 864 | + if not self.checkicp.GetValue(): |
865 | + if dlg.ICPcorregistration(self.fre): | ||
866 | + m_icp = self.OnICP() | ||
867 | + self.icp_fre = db.calculate_fre(self.fiducials_raw, self.fiducials, self.ref_mode_id, | ||
868 | + m_change, m_icp) | ||
869 | + self.ctrl_icp() | ||
857 | 870 | ||
858 | def ResetImageFiducials(self): | 871 | def ResetImageFiducials(self): |
859 | for m in range(0, 3): | 872 | for m in range(0, 3): |