C++ 使用VTK的阈值图像数据(vtkImageThreshold)
我有一个三维向量场,我存储在一个vtkImageData对象中。vtkImageData对象包含两个数组:C++ 使用VTK的阈值图像数据(vtkImageThreshold),c++,vtk,C++,Vtk,我有一个三维向量场,我存储在一个vtkImageData对象中。vtkImageData对象包含两个数组: 三分量vtkDoubleArray(矢量x、y和z分量) 包含单独数量的单分量vtkDoubleArray 我想提取两个数组的对应元素,其中1分量数组的值位于一定范围内。以下是我尝试过的: vtkSmartPointer<vtkImageThreshold> threshold = vtkSmartPointer<vtkImageThreshold>
vtkSmartPointer<vtkImageThreshold> threshold =
vtkSmartPointer<vtkImageThreshold>::New();
threshold->SetInputData(image);
threshold->SetInputArrayToProcess(1, image->GetInformation()); // 1 is the Energy array index
threshold->ThresholdBetween(1e-22, 2e-22);
threshold->Update();
vtkSmartPointer<vtkImageData> thresholdedImage = threshold->GetOutput();
vtksmart指针阈值=
vtkSmartPointer::New();
阈值->设置输入数据(图像);
阈值->设置InputArrayToProcess(1,图像->获取信息());//1是能量数组索引
阈值->阈值之间(1e-22,2e-22);
阈值->更新();
vtkSmartPointer ThresholdeImage=threshold->GetOutput();
我也尝试过使用vtkThresholdPoints,但没有效果。任何建议都将不胜感激。看起来我可以使用:
vtkSmartPointer阈值=
vtkSmartPointer::New();
阈值->设置输入数据(图像);
阈值->阈值之间(1e-21,2e-21);
阈值->设置InputArrayToProcess(0,0,0,
vtkDataObject::字段关联点,“能量”);
阈值->更新();
vtkSmartPointer threshold=threshold->GetOutput();
我没有意识到这种方法是适用的,但它似乎是适用的。这确实将我的数据类型从vtkImageData
更改为vtkPolyData
,我几乎不知道vtkThresholdPoints::SetInputArrayToProcess()的参数是什么意思。然而,它似乎完成了任务。我很高兴听到任何其他建议
vtkSmartPointer<vtkThresholdPoints> threshold =
vtkSmartPointer<vtkThresholdPoints>::New();
threshold->SetInputData(image);
threshold->ThresholdBetween(1e-21, 2e-21);
threshold->SetInputArrayToProcess(0, 0, 0,
vtkDataObject::FIELD_ASSOCIATION_POINTS, "Energy");
threshold->Update();
vtkSmartPointer<vtkPolyData> thresholded = threshold->GetOutput();