auto workingImage = dynamic_cast<mitk::Image *>(node->GetData());
auto region = workingImage->GetLargestPossibleRegion();
mitk::BaseGeometry::Pointer geometry = workingImage->GetGeometry();
mitk::ImageWriteAccessor writeAccessor(workingImage);
unsigned short *pixelData = static_cast<unsigned short *>(writeAccessor.GetData());
auto size = region.GetSize();
#pragma omp parallel for // 使用openmp加速,不加速可以注释掉
for (int idZ = region.GetIndex()[2]; idZ < size[2]; ++idZ)
{
int zoffset = idZ * size[0] * size[1];
for (int idY = region.GetIndex()[1]; idY < size[1]; ++idY)
{
int yoffset = idY * size[0];
for (int idX = region.GetIndex()[0]; idX < size[0]; ++idX)
{
int linearIndex = idX + yoffset + zoffset;
unsigned short& pixelValue = pixelData[linearIndex];
// Image元素坐标转为世界坐标
mitk::Point3D worldPoint;
auto idx = region.GetIndex();
idx[0] = idX;
idx[1] = idY;
idx[2] = idZ;
geometry->IndexToWorld(idx, worldPoint);
if (somewhat...)
pixelValue = 0; // 修改Image元素值
}
}
}
workingImage->Modified();
MITK获取Image元素位置并修改数据
于 2024-09-19 13:37:48 首次发布