Commit 4b9df457d854d95c77d8f2fa735e98c35ce9f801

Authored by rmatsuda
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 310 self.obj_reg_status = False
311 311 self.track_obj = False
312 312 self.m_icp = None
  313 + self.fre = None
  314 + self.icp_fre = None
313 315 self.event = threading.Event()
314 316  
315 317 self.coord_queue = QueueCustom(maxsize=1)
... ... @@ -476,7 +478,7 @@ class NeuronavigationPanel(wx.Panel):
476 478 self.checkicp.Enable(True)
477 479 else:
478 480 self.checkicp.Enable(False)
479   - self.checkicp.SetValue(False)
  481 + #self.checkicp.SetValue(False)
480 482  
481 483 #def UpdateImageCoordinates(self, position):
482 484 def UpdateFRE(self, fre):
... ... @@ -686,8 +688,11 @@ class NeuronavigationPanel(wx.Panel):
686 688 Publisher.sendMessage('Create marker', coord=img_coord, marker_id=None, colour=(1,0,0))
687 689 Publisher.sendMessage('Create marker', coord=transf_coord, marker_id=None, colour=(0,0,1))
688 690 self.checkicp.Enable(True)
  691 + self.checkicp.SetValue(True)
  692 + self.icp = True
689 693 else:
690 694 self.m_icp = None
  695 + self.icp = False
691 696  
692 697 return self.m_icp
693 698  
... ... @@ -696,7 +701,13 @@ class NeuronavigationPanel(wx.Panel):
696 701 self.icp = True
697 702 else:
698 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 711 self.icp_queue.put_nowait([self.icp, self.m_icp])
701 712 print(self.icp, self.m_icp)
702 713  
... ... @@ -788,8 +799,9 @@ class NeuronavigationPanel(wx.Panel):
788 799 tracker_mode = self.trk_init, self.tracker_id, self.ref_mode_id
789 800  
790 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 806 if self.track_obj:
795 807 # if object tracking is selected
... ... @@ -849,11 +861,12 @@ class NeuronavigationPanel(wx.Panel):
849 861 jobs.start()
850 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 871 def ResetImageFiducials(self):
859 872 for m in range(0, 3):
... ...