From acbdc3e31013e9af1161cf6baeb113ac7085deb1 Mon Sep 17 00:00:00 2001
From: Tim Behrens <behrens@fmrib.ox.ac.uk>
Date: Thu, 22 Jul 2004 08:04:36 +0000
Subject: [PATCH] *** empty log message ***

---
 miscmaths.cc | 22 ++++++++++++++++++++++
 miscmaths.h  |  3 ++-
 2 files changed, 24 insertions(+), 1 deletion(-)

diff --git a/miscmaths.cc b/miscmaths.cc
index e6f0237..3988cbb 100644
--- a/miscmaths.cc
+++ b/miscmaths.cc
@@ -1429,6 +1429,28 @@ ReturnMatrix SD(const Matrix& mat1,const Matrix& mat2)
 }
 
 
+ReturnMatrix vox_to_vox(const ColumnVector& xyz1,const ColumnVector& dims1,const ColumnVector& dims2,const Matrix& xfm){
+  ColumnVector xyz1_mm(4),xyz2_mm,xyz2(3);
+  xyz1_mm<<xyz1(1)*dims1(1)<<xyz1(2)*dims1(2)<<xyz1(3)*dims1(3)<<1;
+  xyz2_mm=xfm*xyz1_mm;
+  xyz2_mm=xyz2_mm/xyz2_mm(4);
+  xyz2<<xyz2_mm(1)/dims2(1)<<xyz2_mm(2)/dims2(2)<<xyz2_mm(3)/dims2(3);
+  xyz2.Release();
+  return xyz2;
+}
+
+
+ReturnMatrix mni_to_imgvox(const ColumnVector& mni,const ColumnVector& mni_origin,const Matrix& mni2img, const ColumnVector& img_dims){
+  ColumnVector mni_new_origin(4),img_mm;//homogeneous
+  ColumnVector img_vox(3);
+  mni_new_origin<<mni(1)+mni_origin(1)<<mni(2)+mni_origin(2)<<mni(3)+mni_origin(3)<<1;
+  img_mm=mni2img*mni_new_origin;
+  img_vox<<img_mm(1)/img_dims(1)<<img_mm(2)/img_dims(2)<<img_mm(3)/img_dims(3);
+  img_vox.Release();
+  return img_vox;
+}
+
+
 
 
 ReturnMatrix remmean(const Matrix& mat, const int dim)
diff --git a/miscmaths.h b/miscmaths.h
index 123d4ba..5ea0705 100644
--- a/miscmaths.h
+++ b/miscmaths.h
@@ -187,7 +187,8 @@ namespace MISCMATHS {
   ReturnMatrix eq(const Matrix& mat1,const Matrix& mat2); 
   ReturnMatrix neq(const Matrix& mat1,const Matrix& mat2); 
   ReturnMatrix SD(const Matrix& mat1,const Matrix& mat2); // Schur (element-wise) divide
-  
+  ReturnMatrix vox_to_vox(const ColumnVector& xyz1,const ColumnVector& dims1,const ColumnVector& dims2,const Matrix& xfm);
+  ReturnMatrix mni_to_imgvox(const ColumnVector& mni,const ColumnVector& mni_origin,const Matrix& mni2img, const ColumnVector& img_dims);
   void remmean(const Matrix& mat, Matrix& demeanedmat, Matrix& Mean,  const int dim = 1);
   ReturnMatrix remmean(const Matrix& mat, const int dim = 1);
   ReturnMatrix stdev(const Matrix& mat, const int dim = 1);
-- 
GitLab