-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathVascuviewUtility.cpp
More file actions
37 lines (27 loc) · 1.13 KB
/
VascuviewUtility.cpp
File metadata and controls
37 lines (27 loc) · 1.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include "VascuviewUtility.h"
#include "vtkImageData.h"
#include <vtkSmartPointer.h>
#include <vtkExtractVOI.h>
#include <algorithm>
void VascuviewUtility::extractVoi(vtkImageData*data,double* BoxBounds,vtkImageData*croppedImageData)
{
int wholeExtent[6];
data->GetExtent(wholeExtent);
double origin[3];
double spacing[3];
data->GetOrigin(origin);
data->GetSpacing(spacing);
int newVOI[6];
newVOI[0] = max(wholeExtent[0],int(ceil((BoxBounds[0]-origin[0])/spacing[0])));
newVOI[1] = min(wholeExtent[1],int(floor((BoxBounds[1]-origin[0])/spacing[0])));
newVOI[2] = max(wholeExtent[2],int(ceil((BoxBounds[2]-origin[1])/spacing[1])));
newVOI[3] = min(wholeExtent[3],int(floor((BoxBounds[3]-origin[1])/spacing[1])));
newVOI[4] = max(wholeExtent[4],int(ceil((BoxBounds[4]-origin[2])/spacing[2])));
newVOI[5] = min(wholeExtent[5],int(floor((BoxBounds[5]-origin[2])/spacing[2])));
vtkSmartPointer<vtkExtractVOI> eVoi = vtkSmartPointer<vtkExtractVOI>::New();
eVoi->SetInputData(data);
eVoi->SetVOI(newVOI);
eVoi->Update();
//vtkImageData* result = vtkImageData::New();
croppedImageData->DeepCopy(eVoi->GetOutput());
}