0

我有一个存储在 vtkImageData 对象中的 3D 矢量场。vtkImageData 对象包含两个数组:

  1. 一个 3 分量 vtkDoubleArray(向量 x、y 和 z 分量)
  2. 包含单独数量的 1 分量 vtkDoubleArray

我想提取两个数组的对应元素,其中1个分量数组的值在一定范围内。这是我尝试过的:

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();

我也尝试过使用 vtkThresholdPoints 但无济于事。任何建议将不胜感激。

4

1 回答 1

0

看起来我可以使用这个例子

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();

我没有意识到这种方法是适用的,但看起来确实如此。这确实将我的数据类型从vtkImageDatato改变了,我vtkPolyData几乎不知道这些论点是什么vtkThresholdPoints::SetInputArrayToProcess()意思。但是,它似乎完成了这项工作。我很乐意听到任何替代建议!

于 2013-10-24T10:38:46.533 回答