Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
mitkTransferFunctionInitializer.cpp
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
14 
15 static const char *presetNames[] = {"choose an internal transferfunction preset",
16  "CT Generic",
17  "CT Black & White",
18  "CT Thorax large",
19  "CT Thorax small",
20  "CT Bone",
21  "CT Bone (with Gradient)",
22  "CT Cardiac",
23  "MR Generic"};
24 
25 static int numPresetNames = sizeof(presetNames) / sizeof(char *);
26 
27 namespace mitk
28 {
30  {
31  if (transferFunction.IsNotNull())
32  {
33  m_transferFunction = transferFunction;
34  }
35  }
36 
38  void TransferFunctionInitializer::GetPresetNames(std::vector<std::string> &names)
39  {
40  for (int i = 0; i < numPresetNames; ++i)
41  {
42  names.push_back(presetNames[i]);
43  }
44  }
45 
47  {
48  m_transferFunction = transferFunction;
49  }
50 
52  {
53  if (m_transferFunction)
54  {
55  m_Mode = mode;
57  }
58  }
59 
60  void TransferFunctionInitializer::RemoveAllPoints()
61  {
62  m_transferFunction->GetScalarOpacityFunction()->RemoveAllPoints();
63  m_transferFunction->GetColorTransferFunction()->RemoveAllPoints();
64  m_transferFunction->GetGradientOpacityFunction()->RemoveAllPoints();
65  }
66 
67  void TransferFunctionInitializer::SetModified()
68  {
69  m_transferFunction->GetScalarOpacityFunction()->Modified();
70  m_transferFunction->GetColorTransferFunction()->Modified();
71  m_transferFunction->GetGradientOpacityFunction()->Modified();
72  }
73 
75  {
76  if (m_transferFunction)
77  {
78  this->RemoveAllPoints();
79  switch (this->m_Mode)
80  {
81  case TF_CT_DEFAULT:
82  this->SetCtDefaultMode();
83  break;
84 
85  case TF_CT_BLACK_WHITE:
86  this->SetCtBlackWhiteMode();
87  break;
88 
89  case TF_CT_THORAX_LARGE:
90  this->SetCtThoraxLargeMode();
91  break;
92 
93  case TF_CT_THORAX_SMALL:
94  this->SetCtThoraxSmallMode();
95  break;
96 
97  case TF_CT_BONE:
98  this->SetCtBoneMode();
99  break;
100 
101  case TF_CT_BONE_GRADIENT:
102  this->SetCtBoneGradientMode();
103  break;
104 
105  case TF_CT_CARDIAC:
106  this->SetCtCardiacMode();
107  break;
108 
109  case TF_MR_GENERIC:
110  this->SetMrGenericMode();
111  break;
112 
113  default:
114  itkExceptionMacro(<< "No Mode set!");
115  break;
116  }
117 
118  this->SetModified();
119  }
120  else
121  {
122  itkExceptionMacro(<< "No Transferfunction set!");
123  }
124  }
125 
126  void TransferFunctionInitializer::SetCtDefaultMode()
127  {
128  // grayvalue->opacity
129  m_transferFunction->GetScalarOpacityFunction()->AddPoint(132.108911, 0.000000);
130  m_transferFunction->GetScalarOpacityFunction()->AddPoint(197.063492, 0.041333);
131  m_transferFunction->GetScalarOpacityFunction()->AddPoint(1087.917989, 0.700000);
132 
133  // gradient at grayvalue->opacity
134  m_transferFunction->GetGradientOpacityFunction()->AddPoint(560.695000, 1.000000);
135 
136  // grayvalue->color
137  m_transferFunction->GetColorTransferFunction()->AddRGBPoint(176.881890, 0.650980, 0.000000, 0.000000);
138  m_transferFunction->GetColorTransferFunction()->AddRGBPoint(239.427822, 0.933333, 0.000000, 0.000000);
139  m_transferFunction->GetColorTransferFunction()->AddRGBPoint(301.973753, 1.000000, 0.800000, 0.062745);
140  m_transferFunction->GetColorTransferFunction()->AddRGBPoint(495.866142, 1.000000, 0.905882, 0.666667);
141  m_transferFunction->GetColorTransferFunction()->AddRGBPoint(677.249344, 1.000000, 0.882353, 0.215686);
142  m_transferFunction->GetColorTransferFunction()->AddRGBPoint(808.595801, 1.000000, 1.000000, 1.000000);
143  }
144 
145  void TransferFunctionInitializer::SetCtBlackWhiteMode()
146  {
147  // Set Opacity
148  m_transferFunction->GetScalarOpacityFunction()->AddPoint(135.063521, 0.0);
149  m_transferFunction->GetScalarOpacityFunction()->AddPoint(948.137931, 1.0);
150 
151  // Set Color
152  m_transferFunction->GetColorTransferFunction()->AddRGBPoint(122.088929, 0.352941, 0.352941, 0.352941);
153  m_transferFunction->GetColorTransferFunction()->AddRGBPoint(372.931034, 1.000000, 1.000000, 1.000000);
154 
155  // Set Gradient
156  m_transferFunction->GetGradientOpacityFunction()->Initialize();
157  m_transferFunction->GetGradientOpacityFunction()->AddPoint(560.695000, 1);
158  }
159 
160  void TransferFunctionInitializer::SetCtThoraxLargeMode()
161  {
162  // grayvalue->opacity
163 
164  m_transferFunction->GetScalarOpacityFunction()->AddPoint(76.721239, 0.000000);
165  m_transferFunction->GetScalarOpacityFunction()->AddPoint(139.524336, 0.000000);
166  m_transferFunction->GetScalarOpacityFunction()->AddPoint(274.458333, 0.228650);
167  m_transferFunction->GetScalarOpacityFunction()->AddPoint(638.420139, 0.721763);
168 
169  // gradient at grayvalue->opacity
170  m_transferFunction->GetGradientOpacityFunction()->AddPoint(560.695000, 1.000000);
171 
172  // grayvalue->color
173  m_transferFunction->GetColorTransferFunction()->AddRGBPoint(85.382743, 0.478431, 0.000000, 0.000000);
174  m_transferFunction->GetColorTransferFunction()->AddRGBPoint(198.201327, 0.933333, 0.000000, 0.000000);
175  m_transferFunction->GetColorTransferFunction()->AddRGBPoint(254.610619, 1.000000, 0.800000, 0.062745);
176  m_transferFunction->GetColorTransferFunction()->AddRGBPoint(336.0907085, 1.000000, 0.905882, 0.666667);
177  m_transferFunction->GetColorTransferFunction()->AddRGBPoint(630.672566, 1.000000, 1.000000, 1.000000);
178  }
179 
180  void TransferFunctionInitializer::SetCtThoraxSmallMode()
181  {
182  // grayvalue->opacity
183  m_transferFunction->GetScalarOpacityFunction()->AddPoint(147.216912, 0.000000);
184  m_transferFunction->GetScalarOpacityFunction()->AddPoint(274.458333, 0.228650);
185  m_transferFunction->GetScalarOpacityFunction()->AddPoint(430.330882, 0.675532);
186 
187  // gradient at grayvalue->opacity
188  m_transferFunction->GetGradientOpacityFunction()->AddPoint(560.695000, 1.000000);
189 
190  // grayvalue->color
191  m_transferFunction->GetColorTransferFunction()->AddRGBPoint(129.607774, 0.478431, 0.000000, 0.000000);
192  m_transferFunction->GetColorTransferFunction()->AddRGBPoint(213.812721, 0.933333, 0.000000, 0.000000);
193  m_transferFunction->GetColorTransferFunction()->AddRGBPoint(348.540636, 1.000000, 0.800000, 0.062745);
194  m_transferFunction->GetColorTransferFunction()->AddRGBPoint(500.419118, 1.000000, 0.898039, 0.776471);
195  m_transferFunction->GetColorTransferFunction()->AddRGBPoint(579.268382, 1.000000, 1.000000, 1.000000);
196  }
197 
198  void TransferFunctionInitializer::SetCtBoneMode()
199  {
200  // grayvalue->opacity
201  m_transferFunction->GetScalarOpacityFunction()->AddPoint(126.413793, 0.000000);
202  m_transferFunction->GetScalarOpacityFunction()->AddPoint(178.312160, 0.014663);
203  m_transferFunction->GetScalarOpacityFunction()->AddPoint(247.509982, 0.000000);
204  m_transferFunction->GetScalarOpacityFunction()->AddPoint(1013.010889, 1.000000);
205 
206  // gradient at grayvalue->opacity
207  m_transferFunction->GetGradientOpacityFunction()->AddPoint(485.377495, 1.000000);
208 
209  // grayvalue->color
210  m_transferFunction->GetColorTransferFunction()->AddRGBPoint(312.382940, 1.000000, 0.564706, 0.274510);
211  m_transferFunction->GetColorTransferFunction()->AddRGBPoint(455.103448, 1.000000, 0.945098, 0.768627);
212  m_transferFunction->GetColorTransferFunction()->AddRGBPoint(623.773140, 1.000000, 0.800000, 0.333333);
213  m_transferFunction->GetColorTransferFunction()->AddRGBPoint(796.767695, 1.000000, 0.901961, 0.815686);
214  m_transferFunction->GetColorTransferFunction()->AddRGBPoint(930.838475, 1.000000, 1.000000, 1.000000);
215  m_transferFunction->GetColorTransferFunction()->AddRGBPoint(1073.558984, 1.000000, 0.839216, 0.423529);
216  m_transferFunction->GetColorTransferFunction()->AddRGBPoint(1220.604356, 1.000000, 0.772549, 0.490196);
217  }
218 
219  void TransferFunctionInitializer::SetCtBoneGradientMode()
220  {
221  // grayvalue->opacity
222  m_transferFunction->GetScalarOpacityFunction()->AddPoint(126.413793, 0.000000);
223  m_transferFunction->GetScalarOpacityFunction()->AddPoint(186.961887, 0.146628);
224  m_transferFunction->GetScalarOpacityFunction()->AddPoint(247.509982, 0.000000);
225  m_transferFunction->GetScalarOpacityFunction()->AddPoint(1013.010889, 1.000000);
226 
227  // gradient at grayvalue->opacity
228  m_transferFunction->GetGradientOpacityFunction()->AddPoint(22.617060, 0.000000);
229  m_transferFunction->GetGradientOpacityFunction()->AddPoint(65.865699, 1.000000);
230 
231  // grayvalue->color
232  m_transferFunction->GetColorTransferFunction()->AddRGBPoint(312.382940, 1.000000, 0.564706, 0.274510);
233  m_transferFunction->GetColorTransferFunction()->AddRGBPoint(455.103448, 1.000000, 0.945098, 0.768627);
234  m_transferFunction->GetColorTransferFunction()->AddRGBPoint(623.773140, 1.000000, 0.800000, 0.333333);
235  m_transferFunction->GetColorTransferFunction()->AddRGBPoint(796.767695, 1.000000, 0.901961, 0.815686);
236  m_transferFunction->GetColorTransferFunction()->AddRGBPoint(930.838475, 1.000000, 1.000000, 1.000000);
237  m_transferFunction->GetColorTransferFunction()->AddRGBPoint(1073.558984, 1.000000, 0.839216, 0.423529);
238  m_transferFunction->GetColorTransferFunction()->AddRGBPoint(1220.604356, 1.000000, 0.772549, 0.490196);
239  }
240 
241  void TransferFunctionInitializer::SetCtCardiacMode()
242  {
243  // Set Opacity
244  m_transferFunction->GetScalarOpacityFunction()->AddPoint(150.246824, 0.000000);
245  m_transferFunction->GetScalarOpacityFunction()->AddPoint(179.974592, 0.202346);
246  m_transferFunction->GetScalarOpacityFunction()->AddPoint(276.589837, 0.000000);
247  m_transferFunction->GetScalarOpacityFunction()->AddPoint(781.961887, 1.000000);
248 
249  // Set Color
250  m_transferFunction->GetColorTransferFunction()->AddRGBPoint(395.500907, 1.000000, 0.000000, 0.000000);
251  m_transferFunction->GetColorTransferFunction()->AddRGBPoint(410.364791, 1.000000, 0.749020, 0.000000);
252  m_transferFunction->GetColorTransferFunction()->AddRGBPoint(484.684211, 1.000000, 0.878431, 0.662745);
253  m_transferFunction->GetColorTransferFunction()->AddRGBPoint(588.731397, 1.000000, 0.784314, 0.482353);
254 
255  // Set Gradient
256  m_transferFunction->GetGradientOpacityFunction()->AddPoint(246.862069, 0.215827);
257  }
258 
259  void TransferFunctionInitializer::SetMrGenericMode()
260  {
261  // Set Opacity
262  m_transferFunction->GetScalarOpacityFunction()->AddPoint(0, 0);
263  m_transferFunction->GetScalarOpacityFunction()->AddPoint(20, 0);
264  m_transferFunction->GetScalarOpacityFunction()->AddPoint(40, 0.15);
265  m_transferFunction->GetScalarOpacityFunction()->AddPoint(120, 0.3);
266  m_transferFunction->GetScalarOpacityFunction()->AddPoint(220, 0.375);
267  m_transferFunction->GetScalarOpacityFunction()->AddPoint(1024, 0.5);
268 
269  // Set Color
270  m_transferFunction->GetColorTransferFunction()->AddRGBPoint(0, 0, 0, 0);
271  m_transferFunction->GetColorTransferFunction()->AddRGBPoint(20, 0.168627, 0, 0);
272  m_transferFunction->GetColorTransferFunction()->AddRGBPoint(40, 0.403922, 0.145098, 0.0784314);
273  m_transferFunction->GetColorTransferFunction()->AddRGBPoint(120, 0.780392, 0.607843, 0.380392);
274  m_transferFunction->GetColorTransferFunction()->AddRGBPoint(220, 0.847059, 0.835294, 0.788235);
275  m_transferFunction->GetColorTransferFunction()->AddRGBPoint(1024, 1, 1, 1);
276 
277  // Set Gradient
278  m_transferFunction->GetGradientOpacityFunction()->AddPoint(0, 1);
279  m_transferFunction->GetGradientOpacityFunction()->AddPoint(255, 1);
280  }
281 
283 } // namespace
static void GetPresetNames(std::vector< std::string > &presetNames)
TransferFunctionInitializer(TransferFunction::Pointer transferFunction=nullptr)
static const char * presetNames[]
DataCollection - Class to facilitate loading/accessing structured data.
void SetTransferFunction(TransferFunction::Pointer transferFunction)
mitk::TransferFunction::Pointer GetTransferFunction()
static int numPresetNames