00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "mitkTransferFunctionInitializer.h"
00019
00020
00021 namespace mitk
00022 {
00023
00024 TransferFunctionInitializer::TransferFunctionInitializer(mitk::TransferFunction::Pointer transferFunction)
00025 {
00026 if (transferFunction.IsNotNull())
00027 {
00028 m_transferFunction = transferFunction;
00029 }
00030 }
00031
00032 TransferFunctionInitializer::~TransferFunctionInitializer()
00033 {
00034
00035 }
00036
00037 void TransferFunctionInitializer::SetTransferFunction(mitk::TransferFunction::Pointer transferFunction)
00038 {
00039 m_transferFunction = transferFunction;
00040 }
00041
00042 void TransferFunctionInitializer::SetTransferFunctionMode( int mode )
00043 {
00044 if(m_transferFunction)
00045 {
00046 m_Mode = mode;
00047 this->InitTransferFunctionMode();
00048 }
00049 }
00050
00051 void TransferFunctionInitializer::RemoveAllPoints()
00052 {
00053 m_transferFunction->GetScalarOpacityFunction()->RemoveAllPoints();
00054 m_transferFunction->GetColorTransferFunction()->RemoveAllPoints();
00055 m_transferFunction->GetGradientOpacityFunction()->RemoveAllPoints();
00056 }
00057
00058 void TransferFunctionInitializer::SetModified()
00059 {
00060 m_transferFunction->GetScalarOpacityFunction()->Modified();
00061 m_transferFunction->GetColorTransferFunction()->Modified();
00062 m_transferFunction->GetGradientOpacityFunction()->Modified();
00063 }
00064
00065 void TransferFunctionInitializer::InitTransferFunctionMode()
00066 {
00067 if(m_transferFunction)
00068 {
00069 this->RemoveAllPoints();
00070 switch( this->m_Mode )
00071 {
00072 case TF_CT_DEFAULT:
00073 this->SetCtDefaultMode();
00074 break;
00075
00076 case TF_CT_BLACK_WHITE:
00077 this->SetCtBlackWhiteMode();
00078 break;
00079
00080 case TF_CT_THORAX_LARGE:
00081 this->SetCtThoraxLargeMode();
00082 break;
00083
00084 case TF_CT_THORAX_SMALL:
00085 this->SetCtThoraxSmallMode();
00086 break;
00087
00088 case TF_CT_BONE:
00089 this->SetCtBoneMode();
00090 break;
00091
00092 case TF_CT_BONE_GRADIENT:
00093 this->SetCtBoneGradientMode();
00094 break;
00095
00096 case TF_CT_CARDIAC:
00097 this->SetCtCardiacMode();
00098 break;
00099
00100 case TF_MR_GENERIC:
00101 this->SetMrGenericMode();
00102 break;
00103
00104 default:
00105 itkExceptionMacro(<< "No Mode set!");
00106 break;
00107 }
00108
00109 this->SetModified();
00110 } else {
00111 itkExceptionMacro(<< "No Transferfunction set!");
00112 }
00113 }
00114
00115 void TransferFunctionInitializer::SetCtDefaultMode()
00116 {
00117
00118 m_transferFunction->GetScalarOpacityFunction()->AddPoint(132.108911,0.000000);
00119 m_transferFunction->GetScalarOpacityFunction()->AddPoint(197.063492,0.041333);
00120 m_transferFunction->GetScalarOpacityFunction()->AddPoint(1087.917989,0.700000);
00121
00122
00123 m_transferFunction->GetGradientOpacityFunction()->AddPoint(560.695000,1.000000);
00124
00125
00126 m_transferFunction->GetColorTransferFunction()->AddRGBPoint(176.881890,0.650980,0.000000,0.000000);
00127 m_transferFunction->GetColorTransferFunction()->AddRGBPoint(239.427822,0.933333,0.000000,0.000000);
00128 m_transferFunction->GetColorTransferFunction()->AddRGBPoint(301.973753,1.000000,0.800000,0.062745);
00129 m_transferFunction->GetColorTransferFunction()->AddRGBPoint(495.866142,1.000000,0.905882,0.666667);
00130 m_transferFunction->GetColorTransferFunction()->AddRGBPoint(677.249344,1.000000,0.882353,0.215686);
00131 m_transferFunction->GetColorTransferFunction()->AddRGBPoint(808.595801,1.000000,1.000000,1.000000);
00132 }
00133
00134 void TransferFunctionInitializer::SetCtBlackWhiteMode()
00135 {
00136
00137 m_transferFunction->GetScalarOpacityFunction()->AddPoint( 135.063521, 0.0 );
00138 m_transferFunction->GetScalarOpacityFunction()->AddPoint( 948.137931, 1.0 );
00139
00140
00141
00142 m_transferFunction->GetColorTransferFunction()->AddRGBPoint( 122.088929, 0.352941, 0.352941, 0.352941);
00143 m_transferFunction->GetColorTransferFunction()->AddRGBPoint( 372.931034, 1.000000, 1.000000, 1.000000 );
00144
00145
00146 m_transferFunction->GetGradientOpacityFunction()->Initialize();
00147 m_transferFunction->GetGradientOpacityFunction()->AddPoint( 560.695000, 1);
00148
00149 }
00150
00151 void TransferFunctionInitializer::SetCtThoraxLargeMode()
00152 {
00153
00154
00155 m_transferFunction->GetScalarOpacityFunction()->AddPoint(76.721239,0.000000);
00156 m_transferFunction->GetScalarOpacityFunction()->AddPoint(139.524336,0.000000);
00157 m_transferFunction->GetScalarOpacityFunction()->AddPoint(274.458333,0.228650);
00158 m_transferFunction->GetScalarOpacityFunction()->AddPoint(638.420139,0.721763);
00159
00160
00161
00162 m_transferFunction->GetGradientOpacityFunction()->AddPoint(560.695000,1.000000);
00163
00164
00165 m_transferFunction->GetColorTransferFunction()->AddRGBPoint( 85.382743,0.478431,0.000000,0.000000);
00166 m_transferFunction->GetColorTransferFunction()->AddRGBPoint( 198.201327,0.933333,0.000000,0.000000);
00167 m_transferFunction->GetColorTransferFunction()->AddRGBPoint( 254.610619,1.000000,0.800000,0.062745);
00168 m_transferFunction->GetColorTransferFunction()->AddRGBPoint( 336.0907085,1.000000,0.905882,0.666667);
00169 m_transferFunction->GetColorTransferFunction()->AddRGBPoint( 630.672566,1.000000,1.000000,1.000000);
00170 }
00171
00172 void TransferFunctionInitializer::SetCtThoraxSmallMode()
00173 {
00174
00175 m_transferFunction->GetScalarOpacityFunction()->AddPoint(147.216912,0.000000);
00176 m_transferFunction->GetScalarOpacityFunction()->AddPoint(274.458333,0.228650);
00177 m_transferFunction->GetScalarOpacityFunction()->AddPoint(430.330882,0.675532);
00178
00179
00180
00181 m_transferFunction->GetGradientOpacityFunction()->AddPoint(560.695000,1.000000);
00182
00183
00184
00185 m_transferFunction->GetColorTransferFunction()->AddRGBPoint( 129.607774,0.478431,0.000000,0.000000);
00186 m_transferFunction->GetColorTransferFunction()->AddRGBPoint( 213.812721,0.933333,0.000000,0.000000);
00187 m_transferFunction->GetColorTransferFunction()->AddRGBPoint( 348.540636,1.000000,0.800000,0.062745);
00188 m_transferFunction->GetColorTransferFunction()->AddRGBPoint( 500.419118,1.000000,0.898039,0.776471);
00189 m_transferFunction->GetColorTransferFunction()->AddRGBPoint( 579.268382,1.000000,1.000000,1.000000);
00190 }
00191
00192 void TransferFunctionInitializer::SetCtBoneMode()
00193 {
00194
00195 m_transferFunction->GetScalarOpacityFunction()->AddPoint(126.413793,0.000000);
00196 m_transferFunction->GetScalarOpacityFunction()->AddPoint(178.312160,0.014663);
00197 m_transferFunction->GetScalarOpacityFunction()->AddPoint(247.509982,0.000000);
00198 m_transferFunction->GetScalarOpacityFunction()->AddPoint(1013.010889,1.000000);
00199
00200
00201 m_transferFunction->GetGradientOpacityFunction()->AddPoint(485.377495,1.000000);
00202
00203
00204 m_transferFunction->GetColorTransferFunction()->AddRGBPoint( 312.382940,1.000000,0.564706,0.274510);
00205 m_transferFunction->GetColorTransferFunction()->AddRGBPoint( 455.103448,1.000000,0.945098,0.768627);
00206 m_transferFunction->GetColorTransferFunction()->AddRGBPoint( 623.773140,1.000000,0.800000,0.333333);
00207 m_transferFunction->GetColorTransferFunction()->AddRGBPoint( 796.767695,1.000000,0.901961,0.815686);
00208 m_transferFunction->GetColorTransferFunction()->AddRGBPoint( 930.838475,1.000000,1.000000,1.000000);
00209 m_transferFunction->GetColorTransferFunction()->AddRGBPoint(1073.558984,1.000000,0.839216,0.423529);
00210 m_transferFunction->GetColorTransferFunction()->AddRGBPoint(1220.604356,1.000000,0.772549,0.490196);
00211
00212 }
00213
00214 void TransferFunctionInitializer::SetCtBoneGradientMode()
00215 {
00216
00217 m_transferFunction->GetScalarOpacityFunction()->AddPoint(126.413793,0.000000);
00218 m_transferFunction->GetScalarOpacityFunction()->AddPoint(186.961887,0.146628);
00219 m_transferFunction->GetScalarOpacityFunction()->AddPoint(247.509982,0.000000);
00220 m_transferFunction->GetScalarOpacityFunction()->AddPoint(1013.010889,1.000000);
00221
00222
00223 m_transferFunction->GetGradientOpacityFunction()->AddPoint(22.617060,0.000000);
00224 m_transferFunction->GetGradientOpacityFunction()->AddPoint(65.865699,1.000000);
00225
00226
00227 m_transferFunction->GetColorTransferFunction()->AddRGBPoint( 312.382940,1.000000,0.564706,0.274510);
00228 m_transferFunction->GetColorTransferFunction()->AddRGBPoint( 455.103448,1.000000,0.945098,0.768627);
00229 m_transferFunction->GetColorTransferFunction()->AddRGBPoint( 623.773140,1.000000,0.800000,0.333333);
00230 m_transferFunction->GetColorTransferFunction()->AddRGBPoint( 796.767695,1.000000,0.901961,0.815686);
00231 m_transferFunction->GetColorTransferFunction()->AddRGBPoint( 930.838475,1.000000,1.000000,1.000000);
00232 m_transferFunction->GetColorTransferFunction()->AddRGBPoint(1073.558984,1.000000,0.839216,0.423529);
00233 m_transferFunction->GetColorTransferFunction()->AddRGBPoint(1220.604356,1.000000,0.772549,0.490196);
00234 }
00235
00236 void TransferFunctionInitializer::SetCtCardiacMode()
00237 {
00238
00239 m_transferFunction->GetScalarOpacityFunction()->AddPoint( 150.246824, 0.000000 );
00240 m_transferFunction->GetScalarOpacityFunction()->AddPoint( 179.974592, 0.202346);
00241 m_transferFunction->GetScalarOpacityFunction()->AddPoint( 276.589837, 0.000000);
00242 m_transferFunction->GetScalarOpacityFunction()->AddPoint( 781.961887, 1.000000);
00243
00244
00245 m_transferFunction->GetColorTransferFunction()->AddRGBPoint( 395.500907,1.000000,0.000000,0.000000);
00246 m_transferFunction->GetColorTransferFunction()->AddRGBPoint( 410.364791,1.000000,0.749020,0.000000);
00247 m_transferFunction->GetColorTransferFunction()->AddRGBPoint( 484.684211,1.000000,0.878431,0.662745);
00248 m_transferFunction->GetColorTransferFunction()->AddRGBPoint( 588.731397,1.000000,0.784314,0.482353);
00249
00250
00251 m_transferFunction->GetGradientOpacityFunction()->AddPoint( 246.862069, 0.215827 );
00252 }
00253
00254 void TransferFunctionInitializer::SetMrGenericMode()
00255 {
00256
00257 m_transferFunction->GetScalarOpacityFunction()->AddPoint( 0, 0 );
00258 m_transferFunction->GetScalarOpacityFunction()->AddPoint( 20, 0 );
00259 m_transferFunction->GetScalarOpacityFunction()->AddPoint( 40, 0.15 );
00260 m_transferFunction->GetScalarOpacityFunction()->AddPoint( 120, 0.3 );
00261 m_transferFunction->GetScalarOpacityFunction()->AddPoint( 220, 0.375 );
00262 m_transferFunction->GetScalarOpacityFunction()->AddPoint( 1024, 0.5);
00263
00264
00265 m_transferFunction->GetColorTransferFunction()->AddRGBPoint( 0, 0, 0, 0 );
00266 m_transferFunction->GetColorTransferFunction()->AddRGBPoint( 20, 0.168627, 0, 0 );
00267 m_transferFunction->GetColorTransferFunction()->AddRGBPoint( 40, 0.403922, 0.145098, 0.0784314 );
00268 m_transferFunction->GetColorTransferFunction()->AddRGBPoint( 120, 0.780392, 0.607843, 0.380392 );
00269 m_transferFunction->GetColorTransferFunction()->AddRGBPoint( 220, 0.847059, 0.835294, 0.788235 );
00270 m_transferFunction->GetColorTransferFunction()->AddRGBPoint( 1024, 1, 1, 1 );
00271
00272
00273 m_transferFunction->GetGradientOpacityFunction()->AddPoint( 0, 1 );
00274 m_transferFunction->GetGradientOpacityFunction()->AddPoint( 255, 1);
00275 }
00276
00277 mitk::TransferFunction::Pointer TransferFunctionInitializer::GetTransferFunction()
00278 {
00279 return m_transferFunction;
00280 }
00281 }