1. 程式人生 > 其它 >ITK系列7_ 向量影象(將一個向量儲存到一個影象畫素中)

ITK系列7_ 向量影象(將一個向量儲存到一個影象畫素中)

例項7向量影象(將一個向量儲存到一個影象畫素中)

#include "itkVector.h"//向量類的標頭檔案
#include "itkImage.h"

int main(int, char *[])
{
  /*向量類的使用是在基於空間中代表座標和維數的型別之上進行模板化的。在此例中,向
  量的長度和影象長度相匹配,但是並不是完全相同。我們可以用一個三維的向量作為畫素來
  定義一個四維的影象*/
  typedef itk::Vector< float, 3 >       PixelType;
  typedef itk::Image< PixelType, 3 >    ImageType;
  
  ImageType::Pointer image = ImageType::New();

  const ImageType::IndexType start = {{0,0,0}}; //First index at {X,Y,Z}
  const ImageType::SizeType  size = {{200,200,200}}; //Size of {X,Y,Z}

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

  image->SetRegions( region );
  image->Allocate();

  ImageType::PixelType  initialValue;
  initialValue.Fill( 0.0 );
  image->FillBuffer( initialValue );
  const ImageType::IndexType pixelIndex = {{27,29,37}}; //{X,Y,Z}對應畫素索引位置
  //由於向量類從 itk::FixedArray 類繼承了[] 操作,所以也可以使用 index 符號來訪問向量成員
  ImageType::PixelType   pixelValue;
  pixelValue[0] =  1.345;   // x component
  pixelValue[1] =  6.841;   // y component
  pixelValue[2] =  3.295;   // x component

  std::cout << "pixelIndex索引處給定的向量值:" << std::endl;
  std::cout << pixelValue << std::endl;
  //通過定義一個標識並呼叫 SetPixel( ) 方法來將這個向量儲存到pixelIndex索引畫素中
  image->SetPixel(   pixelIndex,   pixelValue  );
  //獲取pixelIndex處畫素值value
  ImageType::PixelType value = image->GetPixel( pixelIndex );
  //列印畫素值value
  std::cout << "pixelIndex索引處讀取的畫素值:" << std::endl;
  std::cout << value << std::endl;

  return EXIT_SUCCESS;
}

ITK系列目錄:

1 ITK影象資料表達之影象

2 ITK影象處理之影象濾波

3 ITK影象處理之影象分割

注:例程配套素材見系列目錄