@@ -342,6 +342,10 @@ mitk::Image::Pointer CemrgCommonUtils::PadImageWithConstant(mitk::Image::Pointer
342342
343343 ImageType::Pointer outputImg = ImageType::New ();
344344 ImageType::IndexType start;
345+
346+ double origin[3 ];
347+ image->GetGeometry ()->GetOrigin ().ToArray (origin);
348+
345349 start[0 ] = 0 ; start[1 ] = 0 ; start[2 ] = 0 ;
346350
347351 ImageType::SizeType size;
@@ -377,6 +381,7 @@ mitk::Image::Pointer CemrgCommonUtils::PadImageWithConstant(mitk::Image::Pointer
377381 paste->SetDestinationIndex (indexForOutput);
378382
379383 image = mitk::ImportItkImage (paste->GetOutput ())->Clone ();
384+ image->GetGeometry ()->SetOrigin (origin);
380385
381386 return image;
382387}
@@ -1155,11 +1160,18 @@ QJsonObject CemrgCommonUtils::CreateJSONObject(QStringList keys_list, QStringLis
11551160 return jsonObj;
11561161}
11571162
1158- mitk::Image::Pointer CemrgCommonUtils::ImageFromSurfaceMesh (mitk::Surface::Pointer surf, double origin[3 ], double spacing[3 ]){
1163+ mitk::Image::Pointer CemrgCommonUtils::ImageFromSurfaceMesh (mitk::Surface::Pointer surf, double origin[3 ], double spacing[3 ], int pad_num ){
11591164 vtkSmartPointer<vtkPolyData> pd = surf->GetVtkPolyData ();
11601165 double bounds[6 ];
11611166 pd->GetBounds (bounds);
11621167
1168+ // prepare for padding (pad_num=0 by default, so it does not affect)
1169+ for (int ix = 0 ; ix < 3 ; ix++) {
1170+ double pad_offset = pad_num*spacing[ix];
1171+ bounds[2 *ix] -= pad_offset;
1172+ bounds[2 *ix + 1 ] += pad_offset;
1173+ }
1174+
11631175 int dimensions[3 ];
11641176 for (int ix = 0 ; ix < 3 ; ix++) {
11651177 dimensions[ix] = static_cast <int >(std::ceil ((bounds[ix * 2 + 1 ] - bounds[ix * 2 ]) / spacing[ix]));
@@ -1168,7 +1180,6 @@ mitk::Image::Pointer CemrgCommonUtils::ImageFromSurfaceMesh(mitk::Surface::Point
11681180 for (int jx = 0 ; jx < 3 ; jx++) {
11691181 origin[jx] = bounds[2 *jx] + spacing[jx]/2 ;
11701182 }
1171- std::cout << " o = (" << origin[0 ] << " , " << origin[1 ] << " , " << origin[2 ] << " )" << ' \n ' ;
11721183
11731184 // Prepare empty image
11741185 vtkSmartPointer<vtkImageData> whiteImage = vtkSmartPointer<vtkImageData>::New ();
@@ -1211,7 +1222,7 @@ mitk::Image::Pointer CemrgCommonUtils::ImageFromSurfaceMesh(mitk::Surface::Point
12111222
12121223}
12131224
1214- void CemrgCommonUtils::SaveImageFromSurfaceMesh (QString surfPath, double origin[3 ], double spacing[3 ], QString outputPath){
1225+ void CemrgCommonUtils::SaveImageFromSurfaceMesh (QString surfPath, double origin[3 ], double spacing[3 ], QString outputPath, int pad_num ){
12151226 QString out;
12161227
12171228 if (outputPath.isEmpty ()){
@@ -1221,7 +1232,7 @@ void CemrgCommonUtils::SaveImageFromSurfaceMesh(QString surfPath, double origin[
12211232 out = outputPath;
12221233 }
12231234 mitk::Surface::Pointer surf = mitk::IOUtil::Load<mitk::Surface>(surfPath.toStdString ());
1224- mitk::Image::Pointer im = CemrgCommonUtils::ImageFromSurfaceMesh (surf, origin, spacing);
1235+ mitk::Image::Pointer im = CemrgCommonUtils::ImageFromSurfaceMesh (surf, origin, spacing, pad_num );
12251236
12261237 mitk::IOUtil::Save (im, out.toStdString ());
12271238}
0 commit comments