f->GetImageOrientationPatient(iop);
for(i=0; i< 6; i++)
+ {
v_iop.push_back(iop[i]);
+ }
bbSetOutputIOP(v_iop );
std::vector<double> v_ipp;
f->GetImagePositionPatient(ipp);
for(i=0; i< 3; i++)
+ {
v_ipp.push_back(ipp[i]);
+ }
bbSetOutputIPP(v_ipp );
// Add *all the files* to the SerieHelper
// Should only contain one!
l = sh->GetFirstSingleSerieUIDFileSet();
- int nbFiles;
double zspacing = 0.;
- nbFiles = l->size() ;
sh->OrderFileList(l); // this one should compute the *actual* Z Spacing!
zspacing = sh->GetZSpacing();
std::vector<double> v_pixelspacing;
// }
bbSetOutputPixelSpacing(v_pixelspacing);
+ VectorMapInfoDicom vectormapinfodicom;
+ uint16_t group;
+ uint16_t elem;
+ std::string key;
+ std::string strTagValue; // read on disc
+ int iTag,sizeDicomTagsVector=bbGetInputDicomTags().size();
+ GDCM_NAME_SPACE::FileList::const_iterator iitt = l->begin();
+ //iitt ++;
+ for ( ; iitt != l->end(); ++iitt)
+ {
+ MapInfoDicom mapinfodicom;
+
+ for (iTag=0; iTag<sizeDicomTagsVector; iTag++)
+ {
+ key = bbGetInputDicomTags()[iTag];
+ group = elem = 0;
+ if ( (key.size()==10) && (key[0] == 'D') && (key[5] == '_') )
+ {
+ sscanf(key.c_str(),"D%04hx_%04hx ",&group,&elem);
+ }// if key
+ strTagValue = (*iitt)->GetEntryString(group,elem);
+ mapinfodicom.insert ( std::pair<std::string,std::string>(key,strTagValue) );
+ } // for iTag
+
+ vectormapinfodicom.push_back( mapinfodicom );
+ } // for iitt
+ bbSetOutputDicomInfo( vectormapinfodicom );
+
if (reader!=NULL)
{
reader->Delete();
#include "vtkImageData.h"
namespace bbgdcmvtk
{
+ typedef std::map<std::string, std::string> MapInfoDicom;
+ typedef std::vector< MapInfoDicom > VectorMapInfoDicom;
class bbgdcmvtk_EXPORT GetXCoherentInfoGdcmReader
:
public bbtk::AtomicBlackBox
{
+
BBTK_BLACK_BOX_INTERFACE(GetXCoherentInfoGdcmReader,bbtk::AtomicBlackBox);
- BBTK_DECLARE_INPUT(In, std::vector<std::string>);
- BBTK_DECLARE_INPUT(IPPSort, bool);
+ BBTK_DECLARE_INPUT(In , std::vector<std::string>);
+ BBTK_DECLARE_INPUT(IPPSort , bool);
+ BBTK_DECLARE_INPUT(DicomTags , std::vector<std::string>);
- BBTK_DECLARE_OUTPUT(Out, vtkImageData *);
- BBTK_DECLARE_OUTPUT(IPP, std::vector<double>);
- BBTK_DECLARE_OUTPUT(IOP, std::vector<double>);
- BBTK_DECLARE_OUTPUT(PixelSpacing, std::vector<double>);
+ BBTK_DECLARE_OUTPUT(Out , vtkImageData *);
+ BBTK_DECLARE_OUTPUT(IPP , std::vector<double>);
+ BBTK_DECLARE_OUTPUT(IOP , std::vector<double>);
+ BBTK_DECLARE_OUTPUT(PixelSpacing , std::vector<double>);
+ BBTK_DECLARE_OUTPUT(DicomInfo , VectorMapInfoDicom);
BBTK_PROCESS(Process);
void Process();
//=================================================================
// UserBlackBox description
BBTK_BEGIN_DESCRIBE_BLACK_BOX(GetXCoherentInfoGdcmReader,bbtk::AtomicBlackBox);
-BBTK_NAME("GetXCoherentInfoGdcmReader");
-BBTK_AUTHOR("jpr, eduardo");
-BBTK_DESCRIPTION("Get Dicom info from a File Set (a list of Dicom image file names) and read (as a vtkImageData)");
-BBTK_CATEGORY("");
-
-BBTK_INPUT(GetXCoherentInfoGdcmReader,In, "List of Dicom image file names", std::vector<std::string>,"");
-BBTK_INPUT(GetXCoherentInfoGdcmReader,IPPSort,"Sort on Image Position Patient",bool,"");
-
-BBTK_OUTPUT(GetXCoherentInfoGdcmReader,Out, "Output image", vtkImageData *,"");
-BBTK_OUTPUT(GetXCoherentInfoGdcmReader,IPP, "Image Position (Patient)", std::vector<double>,"");
-BBTK_OUTPUT(GetXCoherentInfoGdcmReader,IOP, "Image Orientation (Patient)", std::vector<double>,"");
-BBTK_OUTPUT(GetXCoherentInfoGdcmReader,PixelSpacing,"Pixel Spacing", std::vector<double>,"");
+ BBTK_NAME("GetXCoherentInfoGdcmReader");
+ BBTK_AUTHOR("jpr, eduardo");
+ BBTK_DESCRIPTION("Get Dicom info from a File Set (a list of Dicom image file names) and read (as a vtkImageData)");
+ BBTK_CATEGORY("");
+
+ BBTK_INPUT(GetXCoherentInfoGdcmReader,In ,"List of Dicom image file names", std::vector<std::string>,"");
+ BBTK_INPUT(GetXCoherentInfoGdcmReader,IPPSort ,"Sort on Image Position Patient", bool,"");
+ BBTK_INPUT(GetXCoherentInfoGdcmReader,DicomTags ,"Dicom Tags (vector of Dicom tags ex: D0028_0030 D0020_0037)", std::vector<std::string>,"");
+
+ BBTK_OUTPUT(GetXCoherentInfoGdcmReader,Out ,"Output image" , vtkImageData *,"");
+ BBTK_OUTPUT(GetXCoherentInfoGdcmReader,IPP ,"Image Position (Patient)" , std::vector<double>,"");
+ BBTK_OUTPUT(GetXCoherentInfoGdcmReader,IOP ,"Image Orientation (Patient)" , std::vector<double>,"");
+ BBTK_OUTPUT(GetXCoherentInfoGdcmReader,PixelSpacing ,"Pixel Spacing" , std::vector<double>,"");
+ BBTK_OUTPUT(GetXCoherentInfoGdcmReader,DicomInfo ,"vector of maps of Dicom tags" , VectorMapInfoDicom,"");
BBTK_END_DESCRIBE_BLACK_BOX(GetXCoherentInfoGdcmReader);
} // EO namespace bbgdcmvtk