14 #include "vtkImageData.h" 31 if ((mImage->getModality() ==
imCT) || (mImage->getModality() ==
imMR))
32 mImage->setShadingOn(
settings()->value(
"View/shadingOn").value<bool>());
40 double_pair range = this->guessInitialScalarRange();
41 double smin = range.first;
42 double smax = range.second;
45 opacity[fullRange.first - 1] = 0;
46 opacity[fullRange.first] = 255;
47 tf->resetAlpha(opacity);
50 colors[smin] = QColor(Qt::black);
51 colors[smax] = QColor(Qt::white);
52 tf->resetColor(colors);
61 double_pair range = this->guessInitialScalarRange();
63 double smin = range.first;
64 double smax = range.second;
65 double srange = smax - smin;
71 opacity[int(std::lround(smin + 0.5*srange))] = 255;
72 opacity[int(std::lround(smin + 0.3*srange))] = int(std::lround(255.0 * 0.7));
73 opacity[int(std::lround(smin + 0.1*srange))] = 0;
74 tf->resetAlpha(opacity);
77 colors[int(std::lround(smin))] = QColor(Qt::black);
78 colors[int(std::lround(smax))] = QColor(Qt::white);
79 tf->resetColor(colors);
84 bool ImageDefaultTFGenerator::hasValidInitialWindow()
const 86 return mImage->getInitialWindowWidth()>0;
89 double_pair ImageDefaultTFGenerator::guessInitialScalarRange()
const 93 if (this->hasValidInitialWindow())
95 srange = this->getInitialWindowRange();
98 if (!this->hasValidInitialWindow())
100 if (this->isUnsignedChar())
105 if (this->looksLikeBinaryImage())
111 if (mImage->getModality() ==
imCT)
113 srange = this->guessCTRange();
115 if (mImage->getModality() ==
imMR)
117 srange = this->guessMRRange();
121 srange = this->ensureNonZeroRoundedRange(srange);
125 bool ImageDefaultTFGenerator::isUnsignedChar()
const 127 return mImage->getBaseVtkImageData()->GetScalarType() == VTK_UNSIGNED_CHAR;
130 bool ImageDefaultTFGenerator::looksLikeBinaryImage()
const 141 range.second = std::max(range.second, range.first+1);
145 double_pair ImageDefaultTFGenerator::getFullScalarRange()
const 147 double smin = mImage->getBaseVtkImageData()->GetScalarRange()[0];
148 double smax = mImage->getBaseVtkImageData()->GetScalarRange()[1];
149 return std::make_pair(smin, smax);
152 double_pair ImageDefaultTFGenerator::getInitialWindowRange()
const 154 double smin = mImage->getInitialWindowLevel() - mImage->getInitialWindowWidth()/2;
155 double smax = mImage->getInitialWindowLevel() + mImage->getInitialWindowWidth()/2;
156 return std::make_pair(smin, smax);
159 double_pair ImageDefaultTFGenerator::guessCTRange()
const 171 return std::make_pair(smin, smax);
174 double_pair ImageDefaultTFGenerator::guessMRRange()
const 177 srange.second *= 0.25;
Handler for the transfer functions used in 3d image volumes.
ImageDefaultTFGenerator(ImagePtr image)
boost::shared_ptr< class Image > ImagePtr
Handling of color and opacity for 2D slices.
std::pair< double, double > double_pair
std::map< int, QColor > ColorMap
boost::shared_ptr< class ImageLUT2D > ImageLUT2DPtr
ImageLUT2DPtr generate2DTFPreset()
Settings * settings()
Shortcut for accessing the settings instance.
std::map< int, int > IntIntMap
bool similar(const CameraInfo &lhs, const CameraInfo &rhs, double tol)
ImageTF3DPtr generate3DTFPreset()
boost::shared_ptr< class ImageTF3D > ImageTF3DPtr
Vector3D round(const Vector3D &a)
Namespace for all CustusX production code.