From 2d5b3631dbb64aaf5868d90ac9b1006dd7f4dcef Mon Sep 17 00:00:00 2001 From: tbaudier Date: Tue, 29 Nov 2016 16:16:06 +0100 Subject: [PATCH] Change cursor & mouse value Now the value after registration in pixel line (& co.) is the same than with the version 1.3.0 --- vv/vvSlicer.cxx | 78 +++++++++++++++--------------------------- vv/vvSlicer.h | 2 +- vv/vvSlicerManager.cxx | 11 +++--- 3 files changed, 33 insertions(+), 58 deletions(-) diff --git a/vv/vvSlicer.cxx b/vv/vvSlicer.cxx index 7efaf26..4c5fcfb 100644 --- a/vv/vvSlicer.cxx +++ b/vv/vvSlicer.cxx @@ -1620,17 +1620,16 @@ double vvSlicer::GetScalarComponentAsDouble(vtkImageData *image, double X, doubl image->SetUpdateExtent(ix, ix, iy, iy, iz, iz); image->Update(); #else - if (ix < image->GetInformation()->Get(vtkDataObject::DATA_EXTENT())[0] || - ix > image->GetInformation()->Get(vtkDataObject::DATA_EXTENT())[1] || - iy < image->GetInformation()->Get(vtkDataObject::DATA_EXTENT())[2] || - iy > image->GetInformation()->Get(vtkDataObject::DATA_EXTENT())[3] || - iz < image->GetInformation()->Get(vtkDataObject::DATA_EXTENT())[4] || - iz > image->GetInformation()->Get(vtkDataObject::DATA_EXTENT())[5] ) + if (ix < mImageReslice->GetOutputInformation(0)->Get(vtkStreamingDemandDrivenPipeline::WHOLE_EXTENT())[0] || + ix > mImageReslice->GetOutputInformation(0)->Get(vtkStreamingDemandDrivenPipeline::WHOLE_EXTENT())[1] || + iy < mImageReslice->GetOutputInformation(0)->Get(vtkStreamingDemandDrivenPipeline::WHOLE_EXTENT())[2] || + iy > mImageReslice->GetOutputInformation(0)->Get(vtkStreamingDemandDrivenPipeline::WHOLE_EXTENT())[3] || + iz < mImageReslice->GetOutputInformation(0)->Get(vtkStreamingDemandDrivenPipeline::WHOLE_EXTENT())[4] || + iz > mImageReslice->GetOutputInformation(0)->Get(vtkStreamingDemandDrivenPipeline::WHOLE_EXTENT())[5] ) return std::numeric_limits::quiet_NaN(); //image->SetUpdateExtent(ix, ix, iy, iy, iz, iz); //image->Update(); #endif - return image->GetScalarComponentAsDouble(ix, iy, iz, component); } //---------------------------------------------------------------------------- @@ -1652,54 +1651,34 @@ void vvSlicer::Render() if (ca->GetVisibility()) { std::stringstream worldPos(" "); - double pt[3]; - mConcatenatedTransform->TransformPoint(mCurrent, pt); - double X = (pt[0] - mImage->GetVTKImages()[mCurrentTSlice]->GetOrigin()[0])/mImage->GetVTKImages()[mCurrentTSlice]->GetSpacing()[0]; - double Y = (pt[1] - mImage->GetVTKImages()[mCurrentTSlice]->GetOrigin()[1])/mImage->GetVTKImages()[mCurrentTSlice]->GetSpacing()[1]; - double Z = (pt[2] - mImage->GetVTKImages()[mCurrentTSlice]->GetOrigin()[2])/mImage->GetVTKImages()[mCurrentTSlice]->GetSpacing()[2]; + double X = (mCurrent[0] - this->GetInput()->GetOrigin()[0])/this->GetInput()->GetSpacing()[0]; + double Y = (mCurrent[1] - this->GetInput()->GetOrigin()[1])/this->GetInput()->GetSpacing()[1]; + double Z = (mCurrent[2] - this->GetInput()->GetOrigin()[2])/this->GetInput()->GetSpacing()[2]; #if VTK_MAJOR_VERSION <= 5 - if (X >= mImage->GetVTKImages()[mCurrentTSlice]->GetWholeExtent()[0]-0.5 && - X <= mImage->GetVTKImages()[mCurrentTSlice]->GetWholeExtent()[1]+0.5 && - Y >= mImage->GetVTKImages()[mCurrentTSlice]->GetWholeExtent()[2]-0.5 && - Y <= mImage->GetVTKImages()[mCurrentTSlice]->GetWholeExtent()[3]+0.5 && - Z >= mImage->GetVTKImages()[mCurrentTSlice]->GetWholeExtent()[4]-0.5 && - Z <= mImage->GetVTKImages()[mCurrentTSlice]->GetWholeExtent()[5]+0.5) { - - - int ix, iy, iz; - double value = this->GetScalarComponentAsDouble(mImage->GetVTKImages()[mCurrentTSlice], X, Y, Z, ix, iy, iz); - - if(ImageActor->GetVisibility()) - worldPos << "data value : " << value << std::endl; - - worldPos << "mm : " << lrint(mCurrentBeforeSlicingTransform[0]) << ' ' - << lrint(mCurrentBeforeSlicingTransform[1]) << ' ' - << lrint(mCurrentBeforeSlicingTransform[2]) << ' ' - << mCurrentTSlice - << std::endl; - worldPos << "pixel : " << ix << ' ' - << iy << ' ' - << iz << ' ' - << mCurrentTSlice - << std::endl; - } + if (X >= this->GetInput()->GetWholeExtent()[0]-0.5 && + X <= this->GetInput()->GetWholeExtent()[1]+0.5 && + Y >= this->GetInput()->GetWholeExtent()[2]-0.5 && + Y <= this->GetInput()->GetWholeExtent()[3]+0.5 && + Z >= this->GetInput()->GetWholeExtent()[4]-0.5 && + Z <= this->GetInput()->GetWholeExtent()[5]+0.5) { #else - if (X >= mImage->GetVTKImages()[mCurrentTSlice]->GetInformation()->Get(vtkDataObject::DATA_EXTENT())[0]-0.5 && - X <= mImage->GetVTKImages()[mCurrentTSlice]->GetInformation()->Get(vtkDataObject::DATA_EXTENT())[1]+0.5 && - Y >= mImage->GetVTKImages()[mCurrentTSlice]->GetInformation()->Get(vtkDataObject::DATA_EXTENT())[2]-0.5 && - Y <= mImage->GetVTKImages()[mCurrentTSlice]->GetInformation()->Get(vtkDataObject::DATA_EXTENT())[3]+0.5 && - Z >= mImage->GetVTKImages()[mCurrentTSlice]->GetInformation()->Get(vtkDataObject::DATA_EXTENT())[4]-0.5 && - Z <= mImage->GetVTKImages()[mCurrentTSlice]->GetInformation()->Get(vtkDataObject::DATA_EXTENT())[5]+0.5) { - + int extentImageReslice[6]; + this->GetRegisterExtent(extentImageReslice); + if (X >= extentImageReslice[0]-0.5 && + X <= extentImageReslice[1]+0.5 && + Y >= extentImageReslice[2]-0.5 && + Y <= extentImageReslice[3]+0.5 && + Z >= extentImageReslice[4]-0.5 && + Z <= extentImageReslice[5]+0.5) { +#endif int ix, iy, iz; - double value = this->GetScalarComponentAsDouble(mImage->GetVTKImages()[mCurrentTSlice], X, Y, Z, ix, iy, iz); + double value = this->GetScalarComponentAsDouble(this->GetInput(), X, Y, Z, ix, iy, iz); if(ImageActor->GetVisibility()) worldPos << "data value : " << value << std::endl; - - worldPos << "mm : " << lrint(mCurrentBeforeSlicingTransform[0]) << ' ' - << lrint(mCurrentBeforeSlicingTransform[1]) << ' ' - << lrint(mCurrentBeforeSlicingTransform[2]) << ' ' + worldPos << "mm : " << lrint(mCurrent[0]) << ' ' + << lrint(mCurrent[1]) << ' ' + << lrint(mCurrent[2]) << ' ' << mCurrentTSlice << std::endl; worldPos << "pixel : " << ix << ' ' @@ -1709,7 +1688,6 @@ void vvSlicer::Render() << std::endl; } -#endif ca->SetText(1,worldPos.str().c_str()); std::stringstream slicePos; diff --git a/vv/vvSlicer.h b/vv/vvSlicer.h index 5027d16..30a0d7a 100644 --- a/vv/vvSlicer.h +++ b/vv/vvSlicer.h @@ -123,7 +123,7 @@ public: void SetDisplayMode(bool i); void FlipHorizontalView(); void FlipVerticalView(); - static double GetScalarComponentAsDouble(vtkImageData *image, double X, double Y, double Z, int &ix, int &iy, int &iz, int component=0); + double GetScalarComponentAsDouble(vtkImageData *image, double X, double Y, double Z, int &ix, int &iy, int &iz, int component=0); void Render(); ///Sets the camera to fit the image in the window void ResetCamera(); diff --git a/vv/vvSlicerManager.cxx b/vv/vvSlicerManager.cxx index fc6c6f2..c9966b8 100644 --- a/vv/vvSlicerManager.cxx +++ b/vv/vvSlicerManager.cxx @@ -1107,13 +1107,10 @@ void vvSlicerManager::UpdateInfoOnCursorPosition(int slicer) xyz[0] = x; xyz[1] = y; xyz[2] = z; - mSlicers[slicer]->GetConcatenatedTransform()->TransformPoint(xyz, xyzTransform); - double XTransform = (xyzTransform[0] - mSlicers[slicer]->GetImage()->GetVTKImages()[GetTSlice()]->GetOrigin()[0])/ - mSlicers[slicer]->GetImage()->GetVTKImages()[GetTSlice()]->GetSpacing()[0]; - double YTransform = (xyzTransform[1] - mSlicers[slicer]->GetImage()->GetVTKImages()[GetTSlice()]->GetOrigin()[1])/ - mSlicers[slicer]->GetImage()->GetVTKImages()[GetTSlice()]->GetSpacing()[1]; - double ZTransform = (xyzTransform[2] - mSlicers[slicer]->GetImage()->GetVTKImages()[GetTSlice()]->GetOrigin()[2])/ - mSlicers[slicer]->GetImage()->GetVTKImages()[GetTSlice()]->GetSpacing()[2]; + mSlicers[slicer]->GetSlicingTransform()->GetInverse()->TransformPoint(xyz, xyzTransform); + double XTransform = (xyzTransform[0] - mSlicers[slicer]->GetInput()->GetOrigin()[0])/mSlicers[slicer]->GetInput()->GetSpacing()[0]; + double YTransform = (xyzTransform[1] - mSlicers[slicer]->GetInput()->GetOrigin()[1])/mSlicers[slicer]->GetInput()->GetSpacing()[1]; + double ZTransform = (xyzTransform[2] - mSlicers[slicer]->GetInput()->GetOrigin()[2])/mSlicers[slicer]->GetInput()->GetSpacing()[2]; double value = -VTK_DOUBLE_MAX; int displayVec = 0; double xVec=0, yVec=0, zVec=0, valueVec=0; -- 2.47.1