Commit ec966667098bcc53f58a96910d310c6a89ed29d7

Authored by Thiago Franco de Moraes
1 parent 95a04f4d

Added the min, mean, lmip and contours

invesalius/data/slice_.py
... ... @@ -488,6 +488,19 @@ class Slice(object):
488 488 elif self._type_projection == const.PROJECTION_MaxIP:
489 489 n_image = numpy.array(self.matrix[slice_number:
490 490 slice_number+number_slices]).max(0)
  491 + elif self._type_projection == const.PROJECTION_MinIP:
  492 + n_image = numpy.array(self.matrix[slice_number:
  493 + slice_number+number_slices]).min(0)
  494 + elif self._type_projection == const.PROJECTION_MeanIP:
  495 + n_image = numpy.array(self.matrix[slice_number:
  496 + slice_number+number_slices]).mean(0)
  497 + elif self._type_projection == const.PROJECTION_LMIP:
  498 + tmp_array = numpy.array(self.matrix[slice_number:
  499 + slice_number + number_slices])
  500 + n_image = numpy.empty(shape=(tmp_array.shape[1],
  501 + tmp_array.shape[2]),
  502 + dtype=tmp_array.dtype)
  503 + mips.lmip(tmp_array, 0, self.window_level, self.window_level, n_image)
491 504 elif self._type_projection == const.PROJECTION_MIDA:
492 505 tmp_array = numpy.array(self.matrix[slice_number:
493 506 slice_number + number_slices])
... ... @@ -495,6 +508,22 @@ class Slice(object):
495 508 tmp_array.shape[2]),
496 509 dtype=tmp_array.dtype)
497 510 mips.mida(tmp_array, 0, self.window_level, self.window_level, n_image)
  511 + elif self._type_projection == const.PROJECTION_CONTOUR_MIP:
  512 + tmp_array = numpy.array(self.matrix[slice_number:
  513 + slice_number + number_slices])
  514 + n_image = numpy.empty(shape=(tmp_array.shape[1],
  515 + tmp_array.shape[2]),
  516 + dtype=tmp_array.dtype)
  517 + mips.fast_countour_mip(tmp_array, 0.2, 0, self.window_level,
  518 + self.window_level, 0, n_image)
  519 + elif self._type_projection == const.PROJECTION_CONTOUR_LMIP:
  520 + tmp_array = numpy.array(self.matrix[slice_number:
  521 + slice_number + number_slices])
  522 + n_image = numpy.empty(shape=(tmp_array.shape[1],
  523 + tmp_array.shape[2]),
  524 + dtype=tmp_array.dtype)
  525 + mips.fast_countour_mip(tmp_array, 0.2, 0, self.window_level,
  526 + self.window_level, 1, n_image)
498 527 elif self._type_projection == const.PROJECTION_CONTOUR_MIDA:
499 528 tmp_array = numpy.array(self.matrix[slice_number:
500 529 slice_number + number_slices])
... ... @@ -512,6 +541,19 @@ class Slice(object):
512 541 elif self._type_projection == const.PROJECTION_MaxIP:
513 542 n_image = numpy.array(self.matrix[..., slice_number:
514 543 slice_number+number_slices, ...]).max(1)
  544 + elif self._type_projection == const.PROJECTION_MinIP:
  545 + n_image = numpy.array(self.matrix[..., slice_number:
  546 + slice_number+number_slices, ...]).min(1)
  547 + elif self._type_projection == const.PROJECTION_MeanIP:
  548 + n_image = numpy.array(self.matrix[..., slice_number:
  549 + slice_number+number_slices, ...]).mean(1)
  550 + elif self._type_projection == const.PROJECTION_LMIP:
  551 + tmp_array = numpy.array(self.matrix[..., slice_number:
  552 + slice_number + number_slices, ...])
  553 + n_image = numpy.empty(shape=(tmp_array.shape[0],
  554 + tmp_array.shape[2]),
  555 + dtype=tmp_array.dtype)
  556 + mips.lmip(tmp_array, 1, self.window_level, self.window_level, n_image)
515 557 elif self._type_projection == const.PROJECTION_MIDA:
516 558 tmp_array = numpy.array(self.matrix[..., slice_number:
517 559 slice_number + number_slices, ...])
... ... @@ -519,6 +561,22 @@ class Slice(object):
519 561 tmp_array.shape[2]),
520 562 dtype=tmp_array.dtype)
521 563 mips.mida(tmp_array, 1, self.window_level, self.window_level, n_image)
  564 + elif self._type_projection == const.PROJECTION_CONTOUR_MIP:
  565 + tmp_array = numpy.array(self.matrix[..., slice_number:
  566 + slice_number + number_slices, ...])
  567 + n_image = numpy.empty(shape=(tmp_array.shape[0],
  568 + tmp_array.shape[2]),
  569 + dtype=tmp_array.dtype)
  570 + mips.fast_countour_mip(tmp_array, 0.2, 1, self.window_level,
  571 + self.window_level, 0, n_image)
  572 + elif self._type_projection == const.PROJECTION_CONTOUR_LMIP:
  573 + tmp_array = numpy.array(self.matrix[..., slice_number:
  574 + slice_number + number_slices, ...])
  575 + n_image = numpy.empty(shape=(tmp_array.shape[0],
  576 + tmp_array.shape[2]),
  577 + dtype=tmp_array.dtype)
  578 + mips.fast_countour_mip(tmp_array, 0.2, 1, self.window_level,
  579 + self.window_level, 1, n_image)
522 580 elif self._type_projection == const.PROJECTION_CONTOUR_MIDA:
523 581 tmp_array = numpy.array(self.matrix[..., slice_number:
524 582 slice_number + number_slices, ...])
... ... @@ -535,6 +593,19 @@ class Slice(object):
535 593 elif self._type_projection == const.PROJECTION_MaxIP:
536 594 n_image = numpy.array(self.matrix[..., ..., slice_number:
537 595 slice_number+number_slices]).max(2)
  596 + elif self._type_projection == const.PROJECTION_MinIP:
  597 + n_image = numpy.array(self.matrix[..., ..., slice_number:
  598 + slice_number+number_slices]).min(2)
  599 + elif self._type_projection == const.PROJECTION_MeanIP:
  600 + n_image = numpy.array(self.matrix[..., ..., slice_number:
  601 + slice_number+number_slices]).mean(2)
  602 + elif self._type_projection == const.PROJECTION_LMIP:
  603 + tmp_array = numpy.array(self.matrix[..., ...,
  604 + slice_number: slice_number + number_slices])
  605 + n_image = numpy.empty(shape=(tmp_array.shape[0],
  606 + tmp_array.shape[1]),
  607 + dtype=tmp_array.dtype)
  608 + mips.lmip(tmp_array, 2, self.window_level, self.window_level, n_image)
538 609 elif self._type_projection == const.PROJECTION_MIDA:
539 610 tmp_array = numpy.array(self.matrix[..., ...,
540 611 slice_number: slice_number + number_slices])
... ... @@ -543,6 +614,22 @@ class Slice(object):
543 614 dtype=tmp_array.dtype)
544 615 mips.mida(tmp_array, 2, self.window_level, self.window_level, n_image)
545 616  
  617 + elif self._type_projection == const.PROJECTION_CONTOUR_MIP:
  618 + tmp_array = numpy.array(self.matrix[..., ...,
  619 + slice_number: slice_number + number_slices])
  620 + n_image = numpy.empty(shape=(tmp_array.shape[0],
  621 + tmp_array.shape[1]),
  622 + dtype=tmp_array.dtype)
  623 + mips.fast_countour_mip(tmp_array, 0.2, 2, self.window_level,
  624 + self.window_level, 0, n_image)
  625 + elif self._type_projection == const.PROJECTION_CONTOUR_LMIP:
  626 + tmp_array = numpy.array(self.matrix[..., ...,
  627 + slice_number: slice_number + number_slices])
  628 + n_image = numpy.empty(shape=(tmp_array.shape[0],
  629 + tmp_array.shape[1]),
  630 + dtype=tmp_array.dtype)
  631 + mips.fast_countour_mip(tmp_array, 0.2, 2, self.window_level,
  632 + self.window_level, 1, n_image)
546 633 elif self._type_projection == const.PROJECTION_CONTOUR_MIDA:
547 634 tmp_array = numpy.array(self.matrix[..., ...,
548 635 slice_number: slice_number + number_slices])
... ...
invesalius/data/viewer_slice.py
... ... @@ -1022,6 +1022,16 @@ class Viewer(wx.Panel):
1022 1022 min = 0
1023 1023 max = self.slice_.GetMaxSliceNumber(self.orientation)
1024 1024  
  1025 + projections = {wx.WXK_NUMPAD0 : const.PROJECTION_NORMAL,
  1026 + wx.WXK_NUMPAD1 : const.PROJECTION_MaxIP,
  1027 + wx.WXK_NUMPAD2 : const.PROJECTION_MinIP,
  1028 + wx.WXK_NUMPAD3 : const.PROJECTION_MeanIP,
  1029 + wx.WXK_NUMPAD4 : const.PROJECTION_LMIP,
  1030 + wx.WXK_NUMPAD5 : const.PROJECTION_MIDA,
  1031 + wx.WXK_NUMPAD6 : const.PROJECTION_CONTOUR_MIP,
  1032 + wx.WXK_NUMPAD7 : const.PROJECTION_CONTOUR_LMIP,
  1033 + wx.WXK_NUMPAD8 : const.PROJECTION_CONTOUR_MIDA,}
  1034 +
1025 1035 if self._flush_buffer:
1026 1036 self.slice_.apply_slice_buffer_to_mask(self.orientation)
1027 1037  
... ... @@ -1044,17 +1054,9 @@ class Viewer(wx.Panel):
1044 1054 print "Subtracting", self.number_slices
1045 1055 self.OnScrollBar()
1046 1056  
1047   - elif (evt.GetKeyCode() == wx.WXK_NUMPAD0):
1048   - self.slice_._type_projection = const.PRJECTION_NORMAL
1049   -
1050   - elif (evt.GetKeyCode() == wx.WXK_NUMPAD1):
1051   - self.slice_._type_projection = const.PROJECTION_MaxIP
1052   -
1053   - elif (evt.GetKeyCode() == wx.WXK_NUMPAD5):
1054   - self.slice_._type_projection = const.PROJECTION_MIDA
1055   -
1056   - elif (evt.GetKeyCode() == wx.WXK_NUMPAD8):
1057   - self.slice_._type_projection = const.PROJECTION_CONTOUR_MIDA
  1057 + elif evt.GetKeyCode() in projections:
  1058 + print "PROJECTION MANOLO!"
  1059 + self.slice_._type_projection = projections[evt.GetKeyCode()]
1058 1060  
1059 1061 self.UpdateSlice3D(pos)
1060 1062 self.interactor.Render()
... ...