这个示例演示了SetPixel()和GetPixel()方法的使用。这两种方法提供了对图像中包含的像素数据的直接访问。请注意,这两种方法速度相对较慢,不应该在需要高性能访问的情况下使用。图像迭代器是有效访问图像像素数据的合适机制。

像素在图像中的位置由一个唯一的索引来标识。索引是一个整数数组,用于定义像素在图像每个维度上的位置的。
IndexType由图像自动定义,可以使用作用域操作符itk::Index访问。数组的长度将与相关图像的尺寸相匹配。

下面的代码说明了索引变量的声明以及对其每个组件的值的赋值。请注意,没有使用智能指针访问索引。这是因为Index是轻量级对象,不打算在对象之间共享。生产这些小对象的多个副本比使用SmartPointer机制共享它们更有效。

#include "itkImage.h"
int main(int, char* [])
{
    using ImageType = itk::Image<unsigned short, 3>;
    ImageType::Pointer image = ImageType::New();

    //初始化图片区域
    const ImageType::SizeType size = { {200,200,200} };// Size along {X,Y,Z}
    const ImageType::IndexType start = { {0,0,0} };   // First index on {X,Y,Z}

    ImageType::RegionType region;
    region.SetSize(size);
    region.SetIndex(start);

    //像素数据分配
    image->SetRegions(region);
    //将缓冲区初始化为零
    image->Allocate(true);

    //声明IndexType的一个实例,并初始化了它的内容,以便将其与图像中的像素位置相关联
    const ImageType::IndexType pixelIndex = { {27,29,37} };// Position of {X,Y,Z}
    //用索引定义了像素位置之后,就可以访问图片像素的内容了,GetPixel()方法允许我们获取像素的值
    ImageType::PixelType pixelValue = image->GetPixel(pixelIndex);
    //SetPixel()方法允许我们设置像素值
    image->SetPixel( pixelIndex,pixelValue + 1 );

    return EXIT_SUCCESS;

}

 

ITK 访问像素数据 Accessing Pixel Data

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-08-12
  • 2021-09-29
  • 2021-09-09
  • 2021-08-12
  • 2018-10-16
  • 2022-02-14
猜你喜欢
  • 2022-01-05
  • 2022-12-23
  • 2021-11-30
  • 2021-12-10
  • 2021-10-05
  • 2022-12-23
  • 2021-11-26
相关资源
相似解决方案