[med-svn] [SCM] mia branch, master, updated. upstream/2.0.9-76-g552bd78

Gert Wollny gw.fossdev at gmail.com
Fri Apr 26 15:01:49 UTC 2013


The following commit has been merged in the master branch:
commit bdaf179cdc30d265393201ba0758ab1f49b53f3a
Author: Gert Wollny <gw.fossdev at gmail.com>
Date:   Fri Apr 26 14:07:08 2013 +0200

    add two patched to fix a regression and update file format

diff --git a/debian/changelog b/debian/changelog
index f2e3ca9..0c5df44 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,4 +1,4 @@
-mia (2.0.9-1) UNRELEASED; urgency=low
+mia (2.0.9-2) UNRELEASED; urgency=low
 
   * Upstream version bump 
   * Fix "FTBFS on i386: 3 tests failed out of 228" - Lower accuracy 
@@ -11,8 +11,10 @@ mia (2.0.9-1) UNRELEASED; urgency=low
     number of running threads to 1 on powerpc and with threading building 
     blocks version lower than 4.1u2 (see: #705385)
   * Fix package dependencies by also scanning all plug-in modules. 
+  * Fix regression in 3d image scaler 
+  * Change VTK vector field output target
 
- -- Gert Wollny <gw.fossdev at gmail.com>  Fri, 19 Apr 2013 12:02:43 +0200
+ -- Gert Wollny <gw.fossdev at gmail.com>  Fri, 26 Apr 2013 14:02:50 +0200
 
 mia (2.0.8-1) unstable; urgency=low
 
diff --git a/debian/patches/02-fix-parameter-scale-regression.patch b/debian/patches/02-fix-parameter-scale-regression.patch
new file mode 100644
index 0000000..50e27e1
--- /dev/null
+++ b/debian/patches/02-fix-parameter-scale-regression.patch
@@ -0,0 +1,25 @@
+Description: Fix regression of removed plugin parameter 
+ Reintroduce the 's' parameter that was deleted during the refactoring of the 
+ scale plug-in but is required in the image registration code
+Author: Gert Wollny <gw.fossdev at gmail.com>
+
+---
+
+Origin: upstream
+Forwarded: not-needed
+Upstream-Bug: https://sourceforge.net/p/mia/tickets/91/
+Last-Update: 2013-04-26
+
+diff --git a/mia/3d/filter/scale.cc b/mia/3d/filter/scale.cc
+index a1180cb..6d0fe58 100644
+--- a/mia/3d/filter/scale.cc
++++ b/mia/3d/filter/scale.cc
+@@ -137,6 +137,8 @@ C3DScaleFilterPlugin::C3DScaleFilterPlugin():
+ 	C3DFilterPlugin("scale"),
+ 	m_s(0,0,0)
+ {
++	add_parameter("s", new C3DBoundsParameter(m_s, 0,"target size to set all components at once (component 0:use input image size)"));
++
+ 	add_parameter("sx", new CUIntParameter(m_s.x, 0,
+ 					      numeric_limits<unsigned int>::max(), false,
+ 					      "target size in x direction (0:use input image size)"));
diff --git a/debian/patches/03-change-vtkvf-target-to-structured-point-set.patch b/debian/patches/03-change-vtkvf-target-to-structured-point-set.patch
new file mode 100644
index 0000000..0adf77d
--- /dev/null
+++ b/debian/patches/03-change-vtkvf-target-to-structured-point-set.patch
@@ -0,0 +1,148 @@
+Description: Change the target data type in VTK vector field IO
+ The target type is changed form STRUCTURED_GRID to STRUCTURED_POINST
+ because that seems to make more sense according to the VTK documentation 
+ 
+Author: Gert Wollny <gw.fossdev at gmail.com>
+
+---
+
+Origin: upstream
+Forwarded: not-needed
+Upstream-Bug: https://sourceforge.net/p/mia/tickets/89/
+Last-Update: 2013-04-26
+
+
+diff --git a/addons/vtk/vtkvf.cc b/addons/vtk/vtkvf.cc
+index 4fd9218..cd5d402 100644
+--- a/addons/vtk/vtkvf.cc
++++ b/addons/vtk/vtkvf.cc
+@@ -20,9 +20,9 @@
+ 
+ #include <vtk/vtkvf.hh>
+ 
+-#include <vtkStructuredGridReader.h>
+-#include <vtkStructuredGridWriter.h>
+-#include <vtkStructuredGrid.h>
++#include <vtkStructuredPointsReader.h>
++#include <vtkStructuredPointsWriter.h>
++#include <vtkStructuredPoints.h>
+ #include <vtkSmartPointer.h>
+ #include <vtkPoints.h>
+ 
+@@ -41,9 +41,25 @@ CVtk3DVFIOPlugin::CVtk3DVFIOPlugin():
+ 
+ }
+ 
++
++template <typename T> 
++C3DIOVectorfield *read_field_data(const C3DBounds& size, void *scalars) 
++{
++	cvdebug() << "VTKVF read vector data of type " <<  __type_descr<T>::value << "\n"; 
++
++	const T *my_scalars = reinterpret_cast<const T *>(scalars); 
++	if (!my_scalars) 
++		throw create_exception<logic_error>("CVtk3DImageIOPlugin::load: input image scalar type bogus"); 
++	
++	C3DIOVectorfield *result = new  C3DIOVectorfield(size); 
++	copy(my_scalars, my_scalars + 3 * result->size(), &(*result)[0].x); 
++
++	return result; 
++}
++
+ CVtk3DVFIOPlugin::PData CVtk3DVFIOPlugin::do_load(const string&  filename) const
+ {
+-	auto reader = vtkSmartPointer<vtkStructuredGridReader>::New(); 
++	auto reader = vtkSmartPointer<vtkStructuredPointsReader>::New(); 
+ 	reader->SetFileName(filename.c_str()); 
+ 	auto iovf = reader->GetOutput(); 
+ 	iovf->Update(); 
+@@ -57,54 +73,51 @@ CVtk3DVFIOPlugin::PData CVtk3DVFIOPlugin::do_load(const string&  filename) const
+ 	}
+ 
+ 	auto dims = iovf->GetDimensions();
++	if (dim != 3)
++		throw create_exception<invalid_argument>("3D Vtkvf load (", filename ,
++							 "): Expect 3 dimensions but got ", dim); 
+ 	C3DBounds size(dims[0], dims[1], dims[2]); 
++
++	int components = iovf->GetNumberOfScalarComponents(); 
++	if (components != 3) 
++		throw create_exception<invalid_argument>("3D Vtkvf load (", filename ,
++							 "): only 3D vectors are allowed, "
++							 "but got ", components, " component elements"); 
++
+ 	
+-	PData result(new C3DIOVectorfield(size));
+-	
+-	auto points = iovf->GetPoints(); 
+-
+-
+-	if (points->GetNumberOfPoints() != size.product()) 
+-		throw create_exception<invalid_argument>("Got ", points->GetNumberOfPoints(), 
+-							 " vectors but require ", size.product());
+-	vtkIdType i = 0; 
+-	for (auto iv = result->begin(); iv != result->end(); ++iv, ++i) {
+-		double x[3]; 
+-		points->GetPoint (i, x); 
+-		iv->x = x[0]; 
+-		iv->y = x[1]; 
+-		iv->z = x[2]; 
++	auto array = iovf->GetScalarPointer(); 
++
++	C3DIOVectorfield *result_field = nullptr; 
++	switch 	 (iovf->GetScalarType()) {
++	case VTK_FLOAT:          result_field=read_field_data<float>(size, array); break; 
++	case VTK_DOUBLE:         result_field=read_field_data<double>(size, array); break;  
++	default:
++		throw create_exception<invalid_argument>("3D Vtkvf load (", filename ,"): "
++							 "data type ", iovf->GetScalarTypeAsString(), 
++							 "(", iovf->GetScalarType(), ") not supported"); 
+ 	}
+-	return result; 
++	return PData(result_field); 
+ }
+ 
+ bool CVtk3DVFIOPlugin::do_save(const string& fname, const C3DIOVectorfield& data) const
+ {
+-	int dims[3];
+-	dims[0] = data.get_size().x; 
+-	dims[1] = data.get_size().y; 
+-	dims[2] = data.get_size().z; 
+-
+-	auto sgrid = vtkSmartPointer<vtkStructuredGrid>::New();
+-	sgrid->SetDimensions(dims);
+-
+-	auto points = vtkSmartPointer<vtkPoints>::New();
+-	points->Allocate(data.get_size().product());
+-
+-	int offset = 0; 
+-	float v[3]; 
+-	for (auto iv = data.begin(); iv != data.end(); ++iv, ++offset) {
+-		v[0] = iv->x; 
+-		v[1] = iv->y; 
+-		v[2] = iv->z; 
+-		points->InsertPoint(offset, v); 
+-	}
+-	sgrid->SetPoints(points); 
++
++	auto outfield = vtkSmartPointer<vtkStructuredPoints>::New();
++	outfield->SetOrigin(0,0,0); 
++	outfield->SetSpacing(1.0, 1.0, 1.0); 
++	outfield->SetDimensions(data.get_size().x, data.get_size().y, data.get_size().z); 
++
++	outfield->SetScalarType(VTK_FLOAT); 
++	outfield->SetNumberOfScalarComponents(3);
++	outfield->AllocateScalars(); 
++	
++	float *out_ptr =  reinterpret_cast<float*>(outfield->GetScalarPointer()); 
++	copy(&data[0].x, &data[0].x + data.size() * 3, out_ptr); 
+ 	
+-	auto writer = vtkSmartPointer<vtkStructuredGridWriter>::New(); 
++	auto writer = vtkSmartPointer<vtkStructuredPointsWriter>::New(); 
+ 	writer->SetFileName(fname.c_str()); 
+ 	writer->SetFileTypeToBinary();
+-	writer->SetInput(sgrid); 
++	writer->SetInput(outfield); 
+ 	return writer->Write();
+ }
+ 
diff --git a/debian/patches/series b/debian/patches/series
index 8526e67..f5f56b1 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1 +1,3 @@
 01_disable-treeview-for-jquery-compatibility.patch
+02-fix-parameter-scale-regression.patch
+03-change-vtkvf-target-to-structured-point-set.patch

-- 
Packaging of mia in Debian



More information about the debian-med-commit mailing list