Hi;

I have applied two filters on 3d vtkImagedata (binary volume) in order to compute the gradient at each (i,j,k) voxel like:

vtkImageGaussianSmooth *gaussianFilter = vtkImageGaussianSmooth::New();

gaussianFilter->SetInputData(ContourImg);

gaussianFilter->SetDimensionality(3);

gaussianFilter->SetStandardDeviations (2, 2, 2);

gaussianFilter->Update();

vtkImageGradient *gradientFilter = vtkImageGradient::New();

gradientFilter->SetInputData(gaussianFilter->GetOutput());

gradientFilter->SetDimensionality(3);

gradientFilter->HandleBoundariesOn();

gradientFilter->Update();

Now I want recover the x ,y and z component of each voxel. I have see some example on net but i am confused about the right solution so here is my solution:

vtkDataArray* grad = gradImg->GetPointData()->GetScalars();

int coords[3]= {i, j, k};

vtkIdType tupleId = gradImg->ComputePointId(coords);

```
g[0]= grad->GetComponent(tupleId, 0);
g[1]= grad->GetComponent(tupleId, 1);
g[2]= grad->GetComponent(tupleId, 2);
```

But in other examples, they use the â€śvtkImageExtractComponentsâ€ť to extract x and y components of the gradient like this:

vtkSmartPointer extractXFilter =

vtkSmartPointer::New();

extractXFilter->SetComponents(0);

extractXFilter->SetInputConnection(gradientFilter->GetOutputPort());

double xRange[2];

extractXFilter->Update();

extractXFilter->GetOutput()->GetPointData()->GetScalars()->GetRange(xRange);

I Dont understand how can I use this filter to extract the gradiant components at each i,j,k voxel

thankâ€™s in advance