From: Claire Mouton Date: Thu, 13 Mar 2014 15:24:57 +0000 (+0100) Subject: Merge branch 'master' of ssh://git.creatis.insa-lyon.fr/creaImageIO X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=commitdiff_plain;h=68975087396fa3f3e1adb04073cd30dc79b535a3;hp=7e7a6a1fa4b88ed6a998f50aabfa5e66b190cb87;p=creaImageIO.git Merge branch 'master' of ssh://git.creatis.insa-lyon.fr/creaImageIO --- diff --git a/bbtk/src/bbcreaImageIOGetDicomAttributesFromMaps.cxx b/bbtk/src/bbcreaImageIOGetDicomAttributesFromMaps.cxx new file mode 100644 index 0000000..bd45183 --- /dev/null +++ b/bbtk/src/bbcreaImageIOGetDicomAttributesFromMaps.cxx @@ -0,0 +1,84 @@ +//===== +// Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost) +//===== +#include "bbcreaImageIOGetDicomAttributesFromMaps.h" +#include "bbcreaImageIOPackage.h" +namespace bbcreaImageIO +{ + +BBTK_ADD_BLACK_BOX_TO_PACKAGE(creaImageIO,GetDicomAttributesFromMaps) +BBTK_BLACK_BOX_IMPLEMENTATION(GetDicomAttributesFromMaps,bbtk::AtomicBlackBox); +//===== +// Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost) +//===== +void GetDicomAttributesFromMaps::Process() +{ + +// THE MAIN PROCESSING METHOD BODY +// Here we simply set the input 'In' value to the output 'Out' +// And print out the output value +// INPUT/OUTPUT ACCESSORS ARE OF THE FORM : +// void bbSet{Input|Output}NAME(const TYPE&) +// const TYPE& bbGet{Input|Output}NAME() const +// Where : +// * NAME is the name of the input/output +// (the one provided in the attribute 'name' of the tag 'input') +// * TYPE is the C++ type of the input/output +// (the one provided in the attribute 'type' of the tag 'input') + + std::vector< std::string > lstResult; + std::map tmpMap; + int i,size=bbGetInputIn().size(); + std::string strElement; + + for (i=0;isecond; + lstResult.push_back( strElement ); + } // for i + bbSetOutputOut( lstResult ); + +} +//===== +// Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost) +//===== +void GetDicomAttributesFromMaps::bbUserSetDefaultValues() +{ + +// SET HERE THE DEFAULT INPUT/OUTPUT VALUES OF YOUR BOX +// Here we initialize the input 'In' to 0 +// bbSetInputIn(0); + +} +//===== +// Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost) +//===== +void GetDicomAttributesFromMaps::bbUserInitializeProcessing() +{ + +// THE INITIALIZATION METHOD BODY : +// Here does nothing +// but this is where you should allocate the internal/output pointers +// if any + + +} +//===== +// Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost) +//===== +void GetDicomAttributesFromMaps::bbUserFinalizeProcessing() +{ + +// THE FINALIZATION METHOD BODY : +// Here does nothing +// but this is where you should desallocate the internal/output pointers +// if any + +} +} +// EO namespace bbcreaImageIO + + diff --git a/bbtk/src/bbcreaImageIOGetDicomAttributesFromMaps.h b/bbtk/src/bbcreaImageIOGetDicomAttributesFromMaps.h new file mode 100644 index 0000000..3b98bfd --- /dev/null +++ b/bbtk/src/bbcreaImageIOGetDicomAttributesFromMaps.h @@ -0,0 +1,49 @@ +//===== +// Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost) +//===== +#ifndef __bbcreaImageIOGetDicomAttributesFromMaps_h_INCLUDED__ +#define __bbcreaImageIOGetDicomAttributesFromMaps_h_INCLUDED__ +#include "bbcreaImageIO_EXPORT.h" +#include "bbtkAtomicBlackBox.h" +#include "iostream" + +namespace bbcreaImageIO +{ + +typedef std::map mapString; + +class bbcreaImageIO_EXPORT GetDicomAttributesFromMaps + : + public bbtk::AtomicBlackBox +{ + BBTK_BLACK_BOX_INTERFACE(GetDicomAttributesFromMaps,bbtk::AtomicBlackBox); +//===== +// Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost) +//===== + BBTK_DECLARE_INPUT(In,std::vector< mapString > ); + BBTK_DECLARE_INPUT(KeyDicom, std::string); + BBTK_DECLARE_OUTPUT(Out,std::vector ); + BBTK_PROCESS(Process); + void Process(); +//===== +// Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost) +//===== +}; + +BBTK_BEGIN_DESCRIBE_BLACK_BOX(GetDicomAttributesFromMaps,bbtk::AtomicBlackBox); +BBTK_NAME("GetDicomAttributesFromMaps"); +BBTK_AUTHOR("Info-Dev, Eduardo DAVIL"); +BBTK_DESCRIPTION("eduardo.davila[at]creatis.insa-lyon.fr -"); +BBTK_CATEGORY("empty"); + BBTK_INPUT(GetDicomAttributesFromMaps,In,"Vector of maps with DICOM attributes",std::vector< mapString >,""); + BBTK_INPUT(GetDicomAttributesFromMaps,KeyDicom,"Key DICOM",std::string ,""); + BBTK_OUTPUT(GetDicomAttributesFromMaps,Out,"Vector of the attribute asked.",std::vector ,""); +BBTK_END_DESCRIBE_BLACK_BOX(GetDicomAttributesFromMaps); +//===== +// Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost) +//===== +} +// EO namespace bbcreaImageIO + +#endif // __bbcreaImageIOGetDicomAttributesFromMaps_h_INCLUDED__ + diff --git a/bbtk/src/bbcreaImageIOImagesChooserDialogBox.xml b/bbtk/src/bbcreaImageIOImagesChooserDialogBox.xml index 9c07473..454f883 100644 --- a/bbtk/src/bbcreaImageIOImagesChooserDialogBox.xml +++ b/bbtk/src/bbcreaImageIOImagesChooserDialogBox.xml @@ -45,27 +45,49 @@ INPUTS/OUTPUTS DECLARATION --> + + +
-      typedef std::vector OutputImagesType;
+ typedef std::vector VectorStringType;
+ + +
+      typedef std::vector OutputImagesType;
+
+ + +
+      typedef std::map MapInfoDicom;
+
+ + +
+      typedef std::vector< MapInfoDicom > VectorMapInfoDicom;
+
+ +
+     
         creaImageIO::WxSimpleDlg dlg(0,crea::std2wx(bbGetInputTitle()),"localdatabase_Descriptor.dscp","Local Database"); 
+                dlg.SetAttrDicomTags( bbGetInputDicomTags() );
 		dlg.ShowModal(); 
+                bbSetOutputDicomInfo( dlg.getDicomInfoImagesSelected() );
 		if (dlg.getImagesSelected().size()!=0){ 
 		  if(dlg.getImagesSelected().size() ==1)
 		  {
 			bbSetOutputOut( dlg.getImagesSelected()[0] );  
 		  } else {
-printf("EED  creaImageIOWxSimpleDlg 1 \n");
 			  // FCY: it will be a big problem if we have several kind of data in the same folder.
 			  // creation of a huge vtkImageData!!!!
 			  vtkImageData* first = dlg.getImagesSelected()[0];
@@ -101,11 +123,9 @@ printf("EED  creaImageIOWxSimpleDlg 1 \n");
 			  	// differents formats char , short, etc...
 			  	// differents components 1..3  ex. jpg ->RGB 3
 			  	imsize = imsize * first->GetScalarSize() * first->GetNumberOfScalarComponents();
-printf("EED  creaImageIOWxSimpleDlg 2 \n");
   		        	int slice,sizeImageVector=dlg.getImagesSelected().size();
                         	for (slice=0 ; sliceGetScalarPointer(0,0,slice), img->GetScalarPointer(0,0,0), imsize);
 				//img->Delete();
@@ -124,7 +144,6 @@ printf("EED  creaImageIOWxSimpleDlg 3 slice %d     sizeImageVector %d\n",slice,s
 // 			//	(*it)->Delete();
 //			//  }
 
-printf("EED  creaImageIOWxSimpleDlg 4 \n");
 			 	bbSetOutputOut(out);
 			} else {
 			 bbSetOutputOut(first);
diff --git a/src/creaImageIOVtkImageReader.cpp b/src/creaImageIOVtkImageReader.cpp
index 60ef13a..6cb4def 100644
--- a/src/creaImageIOVtkImageReader.cpp
+++ b/src/creaImageIOVtkImageReader.cpp
@@ -43,7 +43,7 @@ namespace creaImageIO{
   {
 	  
 	//EED 21 mars 2012  FLIP probleme  ..PLOP..
-	mReader->FileLowerLeftOn();
+	mReader->FileLowerLeftOff();
 	  
     if (name.size() == 0) 
       {
@@ -98,13 +98,56 @@ namespace creaImageIO{
     vtkImageData* im = 0;
     try
       {
-	
-	mReader->SetFileName(filename.c_str());
+	printf("EED VtkImageReader::ReadImage  Name:%s\n", GetName().c_str() );
+	mReader->SetFileName( filename.c_str() );
 	mReader->Update();
 	im = vtkImageData::New();
-        mReader->FileLowerLeftOff();
+
 	im->ShallowCopy(mReader->GetOutput());
-printf("EED VtkImageReader::ReadImage GetFileLowerLeft %d\n" , mReader->GetFileLowerLeft() );
+
+
+printf("EED ......\n"); 
+printf("EED ......\n");
+printf("EED VtkImageReader::ReadImage line 108   Missing FlipImage for JPEG, PNG, etc\n");
+printf("EED ......\n"); 
+printf("EED ......\n"); 
+/*
+        im=FlipImageY(im);          
+
+	if ( (GetName()=="JPEG") || (GetName()=="PNG") )
+	{
+
+		im->Update();
+		int inputdims[3];
+		im->GetDimensions (inputdims);
+
+                int nbScalComp	= im->GetNumberOfScalarComponents();
+		int scalarSize	= im->GetScalarSize();
+		int lineSize	= inputdims[0]*scalarSize*nbScalComp;	   
+		int planeSize	= inputdims[1]*lineSize;
+                int volumeSize  = inputdims[2]*planeSize;
+		char *pixelsIn	= (char *)im->GetScalarPointer();
+		char *pixelsOut = (char *)mImageOut->GetScalarPointer();
+	
+		char *lineIn;
+		char *lineOut;
+		char *debPlanIn;
+		char *debPlanOut;
+		int i,j,k;
+
+            	for(k=0; k out;
-			std::vector attr;
 				dlg.stopReading();
-				dlg.getSelected(out, attr,true,"");
+
+				std::vector outStrGimmick;
+				dlg.getSelected(outStrGimmick, m_attrDicomTags,true,"");
+
 			m_results.clear();
-			int size=(int)out.size();
+			int size=(int)outStrGimmick.size();
 			int ii;
-			if(!bInfo)
-			{
+//			if(!bInfo)
+//			{
 				for (ii=0;ii >  WxSimpleDlg::getDicomInfoImagesSelected()
+	{
+		return m_resultsDicomAtr;
+	}
+
+	void WxSimpleDlg::SetAttrDicomTags( std::vector attr )
+	{
+		m_attrDicomTags=attr;
+	}
 	  
+
+
 }
 
diff --git a/src/creaImageIOWxSimpleDlg.h b/src/creaImageIOWxSimpleDlg.h
index 7fd3335..5e3f5f0 100644
--- a/src/creaImageIOWxSimpleDlg.h
+++ b/src/creaImageIOWxSimpleDlg.h
@@ -58,9 +58,12 @@ namespace creaImageIO
 
 		   /// return a vtkImageData vector of selected images, if available
 		   std::vector getImagesSelected();
-		
 		   wxString getInfoImage();
 
+		   std::vector< std::map >  getDicomInfoImagesSelected();
+		   void SetAttrDicomTags( std::vector attr );
+
+
 		   void setInfo(bool i_val){bInfo = i_val;}
 		   
 		   // OutStrGimmick:
@@ -69,19 +72,20 @@ namespace creaImageIO
 		   std::vector getMapInfos(){return m_resultsInfo;}
 
 	private:
-		bool 					bInfo;
-		std::string 				namedescp; 
-		std::string 				namedb;
-		wxString 				infoimage;
+		bool 							bInfo;
+		std::string 						namedescp; 
+		std::string 						namedb;
+		wxString 						infoimage;
 
 		/// interface to read data
-		SimpleView 				m_view;
+		SimpleView 						m_view;
 
 		/// vtkImageData vector
-		std::vector 		m_results;
+		std::vector 				m_results;
+		std::vector< std::map > 	m_resultsDicomAtr;
+		std::vector 				m_attrDicomTags;    // DXXXX_YYYY DAAAA_BBBB ...
 
 		std::vector m_resultsInfo;
 		
-
 	};
 }