component_filter[i]->Update();
coefficient_images[i] = component_filter[i]->GetOutput();
}
+
#if ITK_VERSION_MAJOR >= 4
- m_ITKTransform->SetCoefficientImages(coefficient_images);
+ // RP: 16/01/2013
+ // ATTENTION: Apparently, there's a bug in the SetCoefficientImages function of ITK 4.x
+ // I needed to use SetParametersByValue instead.
+ //
+ typename ITKTransformType::ParametersType params(input->GetPixelContainer()->Size() * BLUTCoefficientImageType::ImageDimension);
+ for (unsigned int i=0; i < BLUTCoefficientImageType::ImageDimension; i++) {
+ for (unsigned int j=0; j < coefficient_images[i]->GetPixelContainer()->Size(); j++)
+ params[input->GetPixelContainer()->Size() * i + j] = coefficient_images[i]->GetPixelContainer()->GetBufferPointer()[j];
+ }
+
+ m_ITKTransform->SetGridOrigin(input->GetOrigin());
+ m_ITKTransform->SetGridDirection(input->GetDirection());
+ m_ITKTransform->SetGridRegion(input->GetLargestPossibleRegion());
+ m_ITKTransform->SetGridSpacing(input->GetSpacing());
+ m_ITKTransform->SetParametersByValue(params);
#else
m_ITKTransform->SetCoefficientImage(coefficient_images);
#endif
TARGET_LINK_LIBRARIES(clitkVFResample clitkCommon ${ITK_LIBRARIES})
SET(TOOLS_INSTALL ${TOOLS_INSTALL} clitkVFResample)
+ WRAP_GGO(clitkVFInterpolate_GGO_C clitkVFInterpolate.ggo)
+ ADD_EXECUTABLE(clitkVFInterpolate clitkVFInterpolate.cxx clitkVFInterpolateGenericFilter.cxx ${clitkVFInterpolate_GGO_C})
+ TARGET_LINK_LIBRARIES(clitkVFInterpolate clitkCommon ${ITK_LIBRARIES})
+ SET(TOOLS_INSTALL ${TOOLS_INSTALL} clitkVFInterpolate)
+
WRAP_GGO(clitkImageCreate_GGO_C clitkImageCreate.ggo)
ADD_EXECUTABLE(clitkImageCreate clitkImageCreate.cxx ${clitkImageCreate_GGO_C})
TARGET_LINK_LIBRARIES(clitkImageCreate clitkCommon ${ITK_LIBRARIES})
--- /dev/null
+/*=========================================================================
+ Program: vv http://www.creatis.insa-lyon.fr/rio/vv
+
+ Authors belong to:
+ - University of LYON http://www.universite-lyon.fr/
+ - Léon Bérard cancer center http://www.centreleonberard.fr
+ - CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr
+
+ This software is distributed WITHOUT ANY WARRANTY; without even
+ the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ PURPOSE. See the copyright notices for more information.
+
+ It is distributed under dual licence
+
+ - BSD See included LICENSE.txt file
+ - CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+===========================================================================**/
+#ifndef CLITKVFRESAMPLE_CXX
+#define CLITKVFRESAMPLE_CXX
+
+// clitk
+#include "clitkVFInterpolate_ggo.h"
+#include "clitkIO.h"
+#include "clitkVFInterpolateGenericFilter.h"
+
+//--------------------------------------------------------------------
+int main(int argc, char * argv[])
+{
+
+ // Init command line
+ GGO(clitkVFInterpolate, args_info);
+ CLITK_INIT;
+
+ // Read input image header to check image dimension
+ itk::ImageIOBase::Pointer header = clitk::readImageHeader(args_info.input1_arg);
+ unsigned int dim = header->GetNumberOfDimensions();
+ std::string pixelTypeName = header->GetComponentTypeAsString(header->GetComponentType());
+
+ // Print image info if verbose
+ if (args_info.verbose_flag) {
+ std::cout << "Input image <" << args_info.input1_arg << "> is ";
+ clitk::printImageHeader(header, std::cout);
+ std::cout << std::endl;
+ }
+
+ // Get input size/spacing
+ std::vector<int> inputSize;
+ std::vector<double> inputSpacing;
+ inputSize.resize(dim);
+ inputSpacing.resize(dim);
+ for (unsigned int i=0; i<dim; i++) {
+ inputSpacing[i] = header->GetSpacing(i);
+ inputSize[i] = header->GetDimensions(i);
+ }
+
+ if (args_info.verbose_flag) {
+ std::cout << "Output image will be : " << std::endl;
+ }
+
+ // Create a filter
+ clitk::VFInterpolateGenericFilter::Pointer filter = clitk::VFInterpolateGenericFilter::New();
+ filter->SetInputFilename(args_info.input1_arg);
+ filter->SetInputFilename2(args_info.input2_arg);
+ filter->SetInterpolationName(args_info.interp_arg);
+ filter->SetDistance(args_info.distance_arg);
+// filter->SetBSplineOrder(args_info.order_arg);
+// filter->SetBLUTSampling(args_info.sampling_arg);
+ filter->SetOutputFilename(args_info.output_arg);
+
+ // Go !
+ filter->Update();
+
+ // this is the end my friend
+ return 0;
+}// end main
+//--------------------------------------------------------------------
+
+#endif /* end #define CLITKVFRESAMPLE_CXX */
--- /dev/null
+#File clitkImageInterpolate.ggo
+package "clitkImageInterpolate"
+version "1.0"
+purpose "Interpolate an image. You can specify the interpolation, you can apply a Gaussian filter before."
+
+option "config" - "Config file" string no
+option "input1" i "Input image filename" string yes
+option "input2" j "Input image filename" string yes
+option "output" o "Output image filename" string yes
+option "distance" d "Distance (d in [0,1])" float yes
+option "verbose" v "Verbose" flag off
+option "interp" - "Interpolation type: {nn, linear}" string no default="nn"
+#option "order" b "BSpline ordre (range 0-5)" int no default="3"
+#option "sampling" s "BLUT sampling value" int no default="30"
+
--- /dev/null
+/*=========================================================================
+ Program: vv http://www.creatis.insa-lyon.fr/rio/vv
+
+ Authors belong to:
+ - University of LYON http://www.universite-lyon.fr/
+ - Léon Bérard cancer center http://www.centreleonberard.fr
+ - CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr
+
+ This software is distributed WITHOUT ANY WARRANTY; without even
+ the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ PURPOSE. See the copyright notices for more information.
+
+ It is distributed under dual licence
+
+ - BSD See included LICENSE.txt file
+ - CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+===========================================================================**/
+#ifndef CLITKVFRESAMPLEGENERICFILTER_CXX
+#define CLITKVFRESAMPLEGENERICFILTER_CXX
+
+#include "clitkVFInterpolateGenericFilter.h"
+#include "itkInterpolateImageFilter.h"
+#include "itkLinearInterpolateImageFunction.h"
+#include "itkNearestNeighborInterpolateImageFunction.h"
+#include "itkNthElementImageAdaptor.h"
+
+//--------------------------------------------------------------------
+clitk::VFInterpolateGenericFilter::VFInterpolateGenericFilter():
+ clitk::ImageToImageGenericFilter<Self>("VFInterpolate")
+{
+ //InitializeImageType<2>();
+ InitializeImageType<3>();
+ // InitializeImageType<4>();
+ mInterpolatorName = "nn";
+ mBSplineOrder=3;
+ mDistance=0;
+}
+//--------------------------------------------------------------------
+
+
+//--------------------------------------------------------------------
+template<unsigned int Dim>
+void clitk::VFInterpolateGenericFilter::InitializeImageType()
+{
+ //typedef itk::Vector<float,Dim> v3f;
+ //ADD_IMAGE_TYPE(Dim, v3f);
+// ADD_VEC_IMAGE_TYPE(Dim,2,double)
+ ADD_VEC_IMAGE_TYPE(Dim,3,float)
+ ADD_VEC_IMAGE_TYPE(Dim,3,double)
+
+}
+//--------------------------------------------------------------------
+
+
+//--------------------------------------------------------------------
+template<class ImageType>
+void clitk::VFInterpolateGenericFilter::UpdateWithInputImageType()
+{
+
+ if (m_NbOfComponents == 1) {
+ std::cerr << "Error, only one components ? Use clitkImageInterpolate instead." << std::endl;
+ exit(0);
+ }
+ typedef typename ImageType::PixelType PixelType;
+// if (m_NbOfComponents == 2) Update_WithDimAndPixelTypeAndComponent<ImageType::ImageDimension,PixelType,2>();
+ if (m_NbOfComponents == 3) Update_WithDimAndPixelTypeAndComponent<ImageType::ImageDimension,PixelType,3>();
+}
+//--------------------------------------------------------------------
+
+
+//--------------------------------------------------------------------
+template<unsigned int Dim, class PixelType, unsigned int DimCompo>
+void clitk::VFInterpolateGenericFilter::Update_WithDimAndPixelTypeAndComponent()
+{
+ // Reading input
+ // typedef itk::Vector<PixelType, DimCompo> DisplacementType;
+ typedef PixelType DisplacementType;
+ typedef itk::Image< DisplacementType, Dim > ImageType;
+
+ typename ImageType::Pointer input1 = clitk::readImage<ImageType>(m_InputFilenames[0], m_IOVerbose);
+ typename ImageType::Pointer input2 = clitk::readImage<ImageType>(mInputFilename2, m_IOVerbose);
+
+ // Main filter
+ typename ImageType::Pointer outputImage = ComputeImage<ImageType>(input1, input2);
+
+ // Write results
+ SetNextOutput<ImageType>(outputImage);
+}
+//--------------------------------------------------------------------
+
+//--------------------------------------------------------------------
+template<class ImageType>
+typename ImageType::Pointer
+clitk::VFInterpolateGenericFilter::ComputeImage(typename ImageType::Pointer inputImage1, typename ImageType::Pointer inputImage2)
+{
+
+ // Some typedefs
+ typedef itk::Image<typename ImageType::PixelType::ValueType, ImageType::ImageDimension> ScalarImageType;
+ typedef itk::Image<typename ImageType::PixelType::ValueType, ImageType::ImageDimension + 1> InterpolationImageType;
+ typedef itk::NthElementImageAdaptor<ImageType, typename ImageType::PixelType::ValueType> ImageAdaptorType;
+ typename ImageAdaptorType::Pointer adaptor1 = ImageAdaptorType::New();
+ typename ImageAdaptorType::Pointer adaptor2 = ImageAdaptorType::New();
+ adaptor1->SetImage(inputImage1);
+ adaptor2->SetImage(inputImage2);
+
+ // Create Image Filter
+ typedef itk::InterpolateImageFilter<ImageAdaptorType, ScalarImageType> FilterType;
+ typename FilterType::Pointer filter = FilterType::New();
+ filter->SetInput1(adaptor1);
+ filter->SetInput2(adaptor2);
+ filter->SetDistance(mDistance);
+
+ // Select interpolator
+ if (mInterpolatorName == "nn") {
+ typedef itk::NearestNeighborInterpolateImageFunction<InterpolationImageType> InterpolatorType;
+ typename InterpolatorType::Pointer interpolator = InterpolatorType::New();
+ filter->SetInterpolator(interpolator);
+ } else {
+ if (mInterpolatorName == "linear") {
+ typedef itk::LinearInterpolateImageFunction<InterpolationImageType> InterpolatorType;
+ typename InterpolatorType::Pointer interpolator = InterpolatorType::New();
+ filter->SetInterpolator(interpolator);
+ } else {
+ std::cerr << "Sorry, I do not know the interpolator (for vector field) '" << mInterpolatorName
+ << "'. Known interpolators are : nn, linear" << std::endl;
+ exit(0);
+ }
+ }
+
+ typename ImageType::Pointer output = ImageType::New();
+ typename ImageAdaptorType::Pointer adaptorOutput = ImageAdaptorType::New();
+ output->CopyInformation(inputImage1);
+ output->SetRegions(inputImage1->GetLargestPossibleRegion());
+ output->Allocate();
+
+ typedef itk::ImageRegionIterator<ScalarImageType> IteratorType1;
+ typedef itk::ImageRegionIterator<ImageAdaptorType> IteratorType2;
+
+ for (unsigned int i = 0; i < ImageType::PixelType::Dimension; i++) {
+ adaptor1->SelectNthElement(i);
+ adaptor2->SelectNthElement(i);
+
+ // Go !
+ try {
+ filter->Update();
+ } catch( itk::ExceptionObject & err ) {
+ std::cerr << "Error while filtering " << m_InputFilenames[0].c_str()
+ << " " << err << std::endl;
+ exit(0);
+ }
+
+ adaptorOutput->SelectNthElement(i);
+ adaptorOutput->SetImage(output);
+
+ IteratorType1 it1(filter->GetOutput(), filter->GetOutput()->GetLargestPossibleRegion());
+ IteratorType2 it2(adaptorOutput, adaptorOutput->GetLargestPossibleRegion());
+
+ it1.GoToBegin();
+ it2.GoToBegin();
+ while ( ! it1.IsAtEnd() ) {
+ it2.Set(it1.Get());
+ ++it1;
+ ++it2;
+ }
+ }
+
+ // Return result
+ return output;
+
+}
+//--------------------------------------------------------------------
+
+//--------------------------------------------------------------------
+void clitk::VFInterpolateGenericFilter::SetInterpolationName(const std::string & inter)
+{
+ mInterpolatorName = inter;
+}
+//--------------------------------------------------------------------
+
+#endif
+
--- /dev/null
+/*=========================================================================
+ Program: vv http://www.creatis.insa-lyon.fr/rio/vv
+
+ Authors belong to:
+ - University of LYON http://www.universite-lyon.fr/
+ - Léon Bérard cancer center http://www.centreleonberard.fr
+ - CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr
+
+ This software is distributed WITHOUT ANY WARRANTY; without even
+ the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ PURPOSE. See the copyright notices for more information.
+
+ It is distributed under dual licence
+
+ - BSD See included LICENSE.txt file
+ - CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+===========================================================================**/
+#ifndef CLITKIMAGERESAMPLEGENERICFILTER_H
+#define CLITKIMAGERESAMPLEGENERICFILTER_H
+/**
+ -------------------------------------------------------------------
+ * @file clitkVFInterpolateGenericFilter.h
+ * @author David Sarrut <David.Sarrut@creatis.insa-lyon.fr>
+ * @date 23 Feb 2008 08:37:53
+
+ * @brief
+ -------------------------------------------------------------------*/
+
+// clitk include
+#include "clitkCommon.h"
+#include "clitkImageCommon.h"
+#include "clitkImageToImageGenericFilter.h"
+
+// itk include
+#include "itkImage.h"
+#include "itkVectorImage.h"
+#include "itkFixedArray.h"
+#include "itkImageFileReader.h"
+#include "itkImageSeriesReader.h"
+#include "itkImageFileWriter.h"
+#include "itkRecursiveGaussianImageFilter.h"
+#include "itkInterpolateImageFilter.h"
+#include "itkAffineTransform.h"
+#include "itkVectorNearestNeighborInterpolateImageFunction.h"
+#include "itkVectorLinearInterpolateImageFunction.h"
+#include "itkBSplineInterpolateImageFunction.h"
+#include "itkBSplineInterpolateImageFunctionWithLUT.h"
+#include "itkCommand.h"
+
+namespace clitk {
+
+ //--------------------------------------------------------------------
+ class VFInterpolateGenericFilter:
+ public clitk::ImageToImageGenericFilter<VFInterpolateGenericFilter> {
+
+ public:
+ // constructor
+ VFInterpolateGenericFilter();
+
+ // Types
+ typedef VFInterpolateGenericFilter Self;
+ typedef itk::SmartPointer<Self> Pointer;
+ typedef itk::SmartPointer<const Self> ConstPointer;
+
+ // New
+ itkNewMacro(Self);
+
+ void SetInputFilename1(const std::string& file) { mInputFilename1 = file; }
+ void SetInputFilename2(const std::string& file) { mInputFilename2 = file; }
+ void SetInterpolationName(const std::string & inter);
+ void SetDistance(double distance) { mDistance = distance; }
+ void SetBSplineOrder(int o) { mBSplineOrder = o; }
+ void SetBLUTSampling(int b) { mSamplingFactors.resize(1); mSamplingFactors[0] = b; }
+
+ //--------------------------------------------------------------------
+ // Main function called each time the filter is updated
+ template<class InputImageType>
+ void UpdateWithInputImageType();
+
+ protected:
+ template<unsigned int Dim> void InitializeImageType();
+ //--------------------------------------------------------------------
+ std::string mInputFilename1, mInputFilename2;
+ std::string mInterpolatorName;
+ int mBSplineOrder;
+ std::vector<int> mSamplingFactors;
+ double mDistance;
+
+ //--------------------------------------------------------------------
+ template<unsigned int Dim, class PixelType, unsigned int DimCompo>
+ void Update_WithDimAndPixelTypeAndComponent();
+ template<class ImageType>
+ typename ImageType::Pointer ComputeImage(typename ImageType::Pointer inputImage1, typename ImageType::Pointer inputImage2);
+
+ }; // end class VFInterpolateGenericFilter
+ //--------------------------------------------------------------------
+
+} // end namespace
+//--------------------------------------------------------------------
+
+#endif /* end #define CLITKIMAGERESAMPLEGENERICFILTER_H */
+
--- /dev/null
+/*=========================================================================
+ Program: vv http://www.creatis.insa-lyon.fr/rio/vv
+
+ Authors belong to:
+ - University of LYON http://www.universite-lyon.fr/
+ - Léon Bérard cancer center http://www.centreleonberard.fr
+ - CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr
+
+ This software is distributed WITHOUT ANY WARRANTY; without even
+ the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ PURPOSE. See the copyright notices for more information.
+
+ It is distributed under dual licence
+
+ - BSD See included LICENSE.txt file
+ - CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+===========================================================================**/
+#ifndef CLITKVFRESAMPLEGENERICFILTER_TXX
+#define CLITKVFRESAMPLEGENERICFILTER_TXX
+/**
+ ------------------------------------------------=
+ * @file clitkVFInterpolateGenericFilter.txx
+ * @author David Sarrut <david.sarrut@creatis.insa-lyon.fr>
+ * @date 23 Feb 2008 08:40:11
+ *
+ * @brief
+ *
+ *
+ ------------------------------------------------=*/
+
+//--------------------------------------------------------------------
+
+#endif /* end #define CLITKVFRESAMPLEGENERICFILTER_TXX */
+
<string>Bones</string>
</property>
</item>
+ <item>
+ <property name="text">
+ <string>Head/Brain</string>
+ </property>
+ </item>
<item>
<property name="text">
<string>[0,1] Scale</string>
<x>0</x>
<y>0</y>
<width>1008</width>
- <height>29</height>
+ <height>18</height>
</rect>
</property>
<property name="defaultUp">
double range[2];
mSlicerManagers.back()->GetImage()->GetFirstVTKImageData()->GetScalarRange(range);
if ((range[0] == 0) && (range[1] == 1)) {
- presetComboBox->setCurrentIndex(5);// binary
+ presetComboBox->setCurrentIndex(WL_BINARY);// binary
} else {
// TODO
}
//------------------------------------------------------------------------------
void vvMainWindow::WindowLevelEdited()
{
- presetComboBox->setCurrentIndex(6);
+ presetComboBox->setCurrentIndex(WL_USER);
UpdateWindowLevel();
}
//------------------------------------------------------------------------------
{
windowSpinBox->setValue(w);
levelSpinBox->setValue(l);
- presetComboBox->setCurrentIndex(6);
+ presetComboBox->setCurrentIndex(WL_USER);
colorMapComboBox->setCurrentIndex(0);
UpdateWindowLevel();
}
void vvMainWindow::UpdateWindowLevel()
{
if (DataTree->selectedItems().size()) {
- if (presetComboBox->currentIndex() == 7) //For ventilation
+ if (presetComboBox->currentIndex() == WL_VENTILATION) //For ventilation
colorMapComboBox->setCurrentIndex(5);
int index = GetSlicerIndexFromItem(DataTree->selectedItems()[0]);
mSlicerManagers[index]->SetColorWindow(windowSpinBox->value());
{
int index = GetSlicerIndexFromItem(DataTree->selectedItems()[0]);
int window = mSlicerManagers[index]->GetColorWindow();
- presetComboBox->setCurrentIndex(6);
+ presetComboBox->setCurrentIndex(WL_USER);
windowSpinBox->setValue(-window);
UpdateWindowLevel();
}
continue;
mSlicerManagers[i]->SetColorWindow(window);
mSlicerManagers[i]->SetColorLevel(level);
- mSlicerManagers[i]->SetPreset(6);
+ mSlicerManagers[i]->SetPreset(WL_USER);
mSlicerManagers[i]->Render();
}
}
if (mSlicerManagers[i] == NULL)
continue;
mSlicerManagers[i]->SetColorWindow(window);
- mSlicerManagers[i]->SetPreset(6);
+ mSlicerManagers[i]->SetPreset(WL_USER);
mSlicerManagers[i]->Render();
}
}
if (mSlicerManagers[i] == NULL)
continue;
mSlicerManagers[i]->SetColorLevel(level);
- mSlicerManagers[i]->SetPreset(6);
+ mSlicerManagers[i]->SetPreset(WL_USER);
mSlicerManagers[i]->Render();
}
}
//----------------------------------------------------------------------------\r
void vvSlicerManager::SetPreset(int preset)\r
{\r
+\r
//vtkLookupTable* LUT = static_cast<vtkLookupTable*>(mSlicers[0]->GetWindowLevel()->GetLookupTable());\r
double window = mSlicers[0]->GetColorWindow();\r
double level = mSlicers[0]->GetColorLevel();\r
\r
std::string component_type=mImage->GetScalarTypeAsITKString();\r
switch (preset) {\r
- case 0:\r
+ case WL_AUTO:\r
double range[2];\r
mImage->GetScalarRange(range);\r
window = range[1] - range[0];\r
level = (range[1] + range[0])* 0.5;\r
break;\r
- case 1:\r
+ case WL_HOUNSFIELD:\r
window = 2000;\r
level = 0;\r
break;\r
- case 2:\r
+ case WL_SOFTTISSUE:\r
window = 400;\r
level = 20;\r
break;\r
- case 3: // lungs (same as FOCAL)\r
+ case WL_LUNGS: // lungs (same as FOCAL)\r
window = 1700;\r
level = -300;\r
break;\r
- case 4:\r
+ case WL_BONES:\r
window = 1000;\r
level = 500;\r
break;\r
- case 5:\r
+ case WL_HEAD:\r
+ window = 200;\r
+ level = 70;\r
+ break;\r
+ case WL_BINARY:\r
window = 1;\r
level = 0.5;\r
break;\r
- case 6:\r
+ case WL_USER:\r
break;\r
- case 7:\r
+ case WL_VENTILATION:\r
window=1.;\r
level=0.;\r
break;\r
this->mSlicers[slicer]->GetConcatenatedTransform());\r
this->SetColorWindow(max-min);\r
this->SetColorLevel(0.5*(min+max));\r
- this->SetPreset(6);\r
+ this->SetPreset(WL_USER);\r
}\r
this->Render();\r
this->UpdateWindowLevel();\r
class vvImageReader;
class vvLandmarks;
+enum WindowLevelPreset {
+ WL_AUTO,
+ WL_HOUNSFIELD,
+ WL_SOFTTISSUE,
+ WL_LUNGS,
+ WL_BONES,
+ WL_HEAD,
+ WL_BINARY,
+ WL_USER,
+ WL_VENTILATION
+};
+
//------------------------------------------------------------------------------
class vvSlicerManager : public QObject {
Q_OBJECT
return;
}
if (KeyPress == "0") {
- this->SM->SetPreset(0);
+ this->SM->SetPreset(WL_AUTO);
this->SM->UpdateWindowLevel();
return;
}
if (KeyPress == "1") {
- this->SM->SetPreset(1);
+ this->SM->SetPreset(WL_HOUNSFIELD);
this->SM->UpdateWindowLevel();
return;
}
if (KeyPress == "2") {
- this->SM->SetPreset(2);
+ this->SM->SetPreset(WL_SOFTTISSUE);
this->SM->UpdateWindowLevel();
return;
}
if (KeyPress == "3") {
- this->SM->SetPreset(3);
+ this->SM->SetPreset(WL_LUNGS);
this->SM->UpdateWindowLevel();
return;
}
if (KeyPress == "4") {
- this->SM->SetPreset(4);
+ this->SM->SetPreset(WL_BONES);
this->SM->UpdateWindowLevel();
return;
}
if (KeyPress == "5") {
- this->SM->SetPreset(5);
+ this->SM->SetPreset(WL_HEAD);
this->SM->UpdateWindowLevel();
return;
}
return;
}
if (KeyPress == "equal") { //keycodes are in vtkWin32RenderWindowInteractor
- this->SM->SetPreset(7);
+ this->SM->SetPreset(WL_VENTILATION);
//this->SM->SetColorMap(1);
this->SM->UpdateWindowLevel();
return;
this->SM->SetColorWindow(window*dx);
this->SM->SetColorLevel(level-dy);
- this->SM->SetPreset(6);
+ this->SM->SetPreset(WL_USER);
this->SM->Render();
this->SM->UpdateWindowLevel();
return;