34 std::vector<std::string> names;
35 names.push_back(name);
44 int numberOfNames = names.size();
47 std::vector<DataIterType> dataIter;
49 for (
int i = 0; i < numberOfNames; ++i)
51 DataIterType iter(dc, names[i]);
52 dataIter.push_back(iter);
55 Eigen::MatrixXd result(numberOfVoxels, names.size());
61 for (
int col = 0; col < numberOfNames; ++col)
63 result(row,col) = dataIter[col].GetVoxel();
67 for (
int col = 0; col < numberOfNames; ++col)
78 std::vector<std::string> names;
79 names.push_back(name);
88 int numberOfNames = names.size();
91 std::vector<DataIterType> dataIter;
93 for (
int i = 0; i < numberOfNames; ++i)
95 DataIterType iter(dc, names[i]);
96 dataIter.push_back(iter);
99 Eigen::MatrixXi result(numberOfVoxels, names.size());
106 for (
int col = 0; col < numberOfNames; ++col)
108 result(row,col) = dataIter[col].GetVoxel();
112 for (
int col = 0; col < numberOfNames; ++col)
125 int numberOfNames = names.size();
128 std::vector<DataIterType> dataIter;
130 for (
int i = 0; i < numberOfNames; ++i)
133 DataIterType iter(dc, names[i]);
134 dataIter.push_back(iter);
142 for (
int col = 0; col < numberOfNames; ++col)
144 dataIter[col].SetVoxel(matrix(row,col));
148 for (
int col = 0; col < numberOfNames; ++col)
160 int numberOfNames = names.size();
163 std::vector<DataIterType> dataIter;
165 for (
int i = 0; i < numberOfNames; ++i)
168 DataIterType iter(dc, names[i]);
169 dataIter.push_back(iter);
177 for (
int col = 0; col < numberOfNames; ++col)
179 (dataIter[col]).SetVoxel(matrix(row,col));
183 for (
int col = 0; col < numberOfNames; ++col)
193 std::vector<std::string> names;
194 names.push_back(name);
200 std::vector<std::string> names;
201 names.push_back(name);
207 typedef itk::Image<unsigned char, 3> FeatureImage;
208 typedef itk::Image<unsigned char, 3> LabelImage;
216 if (dc->HasElement(origin))
218 LabelImage::Pointer originImage =
dynamic_cast<LabelImage*
>(dc->GetData(origin).GetPointer());
220 if (!dc->HasElement(name) && originImage.IsNotNull())
222 MITK_INFO <<
"New unsigned char image necessary";
223 FeatureImage::Pointer
image = FeatureImage::New();
224 image->SetRegions(originImage->GetLargestPossibleRegion());
225 image->SetSpacing(originImage->GetSpacing());
226 image->SetOrigin(originImage->GetOrigin());
227 image->SetDirection(originImage->GetDirection());
229 image->FillBuffer(0);
231 dc->AddData(dynamic_cast<itk::DataObject*>(image.GetPointer()),name,
"");
234 for (std::size_t i = 0; i < dc->Size();++i)
237 if (newCol !=
nullptr)
246 typedef itk::Image<double, 3> FeatureImage;
247 typedef itk::Image<unsigned char, 3> LabelImage;
255 if (dc->HasElement(origin))
257 LabelImage::Pointer originImage =
dynamic_cast<LabelImage*
>(dc->GetData(origin).GetPointer());
258 if (!dc->HasElement(name) && originImage.IsNotNull())
260 MITK_INFO <<
"New double image necessary";
261 FeatureImage::Pointer
image = FeatureImage::New();
262 image->SetRegions(originImage->GetLargestPossibleRegion());
263 image->SetSpacing(originImage->GetSpacing());
264 image->SetOrigin(originImage->GetOrigin());
265 image->SetDirection(originImage->GetDirection());
268 dc->AddData(dynamic_cast<itk::DataObject*>(image.GetPointer()),name,
"");
271 for (std::size_t i = 0; i < dc->Size();++i)
274 if (newCol !=
nullptr)
static void EnsureDoubleImageInDC(mitk::DataCollection::Pointer dc, std::string name, std::string origin)
static void EnsureUCharImageInDC(mitk::DataCollection::Pointer dc, std::string name, std::string origin)
static void MatrixToDC3d(const Eigen::MatrixXd &matrix, mitk::DataCollection::Pointer dc, const std::vector< std::string > &names, std::string mask)
static Eigen::MatrixXi DC3dDToMatrixXi(mitk::DataCollection::Pointer dc, std::string name, std::string mask)
mitk::Image::Pointer image
static Eigen::MatrixXd DC3dDToMatrixXd(mitk::DataCollection::Pointer dc, std::string names, std::string mask)
static int VoxelInMask(mitk::DataCollection::Pointer dc, std::string mask)
mitk::Image::Pointer mask