Program: gdcm
Module: $RCSfile: Anonymize.cxx,v $
Language: C++
- Date: $Date: 2005/07/07 17:31:53 $
- Version: $Revision: 1.2 $
+ Date: $Date: 2005/07/21 04:55:50 $
+ Version: $Revision: 1.3 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
int main(int argc, char *argv[])
{
START_USAGE(usage)
- " \n Anonymize :\n",
- " Anonymize a full gdcm-readable Dicom image",
- " Warning : probably segfaults if pixels are not gdcm readable.",
- " Use exAnonymizeNoLoad instead.",
- " usage: Anonymize filein=inputFileName fileout=anonymizedFileName[debug] ",
- " debug : user wants to run the program in 'debug mode' ",
+ " \n Anonymize :\n ",
+ " Anonymize a full gdcm-readable Dicom image ",
+ " Warning : probably segfaults if pixels are not gdcm readable. ",
+ " Use exAnonymizeNoLoad instead. ",
+ " usage: Anonymize filein=inputFileName fileout=anonymizedFileName[debug] ",
+ " debug : user wants to run the program in 'debug mode' ",
FINISH_USAGE
// ----- Initialize Arguments Manager ------
gdcm::ArgMgr *am = new gdcm::ArgMgr(argc, argv);
- if (am->ArgMgrDefined("usage"))
+ if (argc == 1 || am->ArgMgrDefined("usage"))
{
am->ArgMgrUsage(usage); // Display 'usage'
delete am;
Program: gdcm
Module: $RCSfile: AnonymizeDicomDir.cxx,v $
Language: C++
- Date: $Date: 2005/07/12 14:56:48 $
- Version: $Revision: 1.6 $
+ Date: $Date: 2005/07/21 04:55:50 $
+ Version: $Revision: 1.7 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
// ----- Initialize Arguments Manager ------
gdcm::ArgMgr *am = new gdcm::ArgMgr(argc, argv);
- if (am->ArgMgrDefined("usage"))
+ if (argc == 1 || am->ArgMgrDefined("usage"))
{
am->ArgMgrUsage(usage); // Display 'usage'
delete am;
char *fileName = am->ArgMgrWantString("filein",usage);
+ // if unused Param we give up
+ if ( am->ArgMgrPrintUnusedLabels() )
+ {
+ am->ArgMgrUsage(usage);
+ delete am;
+ return 0;
+ }
delete am; // --- we don't need Argument Manager any longer ---
Program: gdcm
Module: $RCSfile: AnonymizeNoLoad.cxx,v $
Language: C++
- Date: $Date: 2005/07/20 14:48:15 $
- Version: $Revision: 1.7 $
+ Date: $Date: 2005/07/21 04:55:50 $
+ Version: $Revision: 1.8 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
" inputFileName : Name of the (single) file user wants to anonymize ",
" inputDirectoryName : user wants to anonymize *all* the files ",
" within the (single Patient!) directory ",
- " listOfPrivateElementsToRubOut : group,elem (in hexa) of private ",
- " Elements to rub out ",
+ " listOfPrivateElementsToRubOut : group-elem,g2-e2,... (in hexa) ",
+ " of private Elements to rub out ",
" noshadowseq: user doesn't want to load Private Sequences ",
" noshadow : user doesn't want to load Private groups (odd number) ",
" noseq : user doesn't want to load Sequences ",
gdcm::ArgMgr *am = new gdcm::ArgMgr(argc, argv);
- if (am->ArgMgrDefined("usage"))
+ if (am->ArgMgrDefined("usage") || argc == 1)
{
am->ArgMgrUsage(usage); // Display 'usage'
delete am;
if ( (fileName == 0 && dirName == 0)
||
- (fileName != 0 && dirName != 0) )
+ (fileName != 0 && dirName != 0) )
{
std::cout <<std::endl
- << "Either 'filein' or 'dirin' must be present;" << std::endl
- << "Not both" << std::endl;
+ << "Either 'filein=' or 'dirin=' must be present;"
+ << std::endl << "Not both" << std::endl;
+ am->ArgMgrUsage(usage); // Display 'usage'
delete am;
return 0;
}
int rubOutNb;
uint16_t *elemsToRubOut = am->ArgMgrGetXInt16Enum("rubout", &rubOutNb);
+
+ /* if unused Param we give up */
+ if ( am->ArgMgrPrintUnusedLabels() )
+ {
+ am->ArgMgrUsage(usage);
+ delete am;
+ return 0;
+ }
- std::cout << " ---------------------------- rubOutNb " << rubOutNb
- << std::endl;
delete am; // ------ we don't need Arguments Manager any longer ------
-
if ( fileName != 0 ) // ====== Deal with a single file ======
{
f->AnonymizeNoLoad();
- // No need to write the File : modif were done on disc !
- // File was overwritten ...
-
+ // No need to write the file : modif were done on disc !
+ // ( The Dicom file is overwritten )
std::cout <<"End AnonymizeNoLoad" << std::endl;
//
// Telephone
f->AddAnonymizeElement(0x0010, 0x2154, "3615" );
+ // deal with user defined Elements set
+
for (int ri=0; ri<rubOutNb; ri++)
{
f->AddAnonymizeElement((uint32_t)elemsToRubOut[2*ri],
std::cout <<"Let's AnonymizeNoLoad " << it->c_str() << std::endl;
// The gdcm::File remains untouched in memory
+ // The Dicom file is overwritten on disc
f->AnonymizeNoLoad();
exGC
exImageLighten
exOverlaysACR
+ exSerieHelper
#the following are utilities
PrintDicomDir
Program: gdcm
Module: $RCSfile: MakeDicomDir.cxx,v $
Language: C++
- Date: $Date: 2005/07/08 10:15:04 $
- Version: $Revision: 1.9 $
+ Date: $Date: 2005/07/21 04:55:50 $
+ Version: $Revision: 1.10 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
int main(int argc, char *argv[])
{
START_USAGE(usage)
- " \n MakeDicomDir :\n",
- " Explores recursively the given directory, makes the relevant DICOMDIR",
- " and writes it as 'NewDICOMDIR'",
- " usage: MakeDicomDir dirname=rootDirectoryName [noshadowseq][noshadow][noseq] [debug] ",
- " noshadowseq: user doesn't want to load Private Sequences",
- " noshadow : user doesn't want to load Private groups (odd number)",
- " noseq : user doesn't want to load Sequences ",
- " debug : user wants to run the program in 'debug mode' ",
+ " \n MakeDicomDir :\n ",
+ " Explores recursively the given directory, makes the relevant DICOMDIR ",
+ " and writes it as 'NewDICOMDIR' ",
+ " ",
+ " usage: MakeDicomDir dirname=rootDirectoryName ",
+ " [noshadowseq][noshadow][noseq] [debug] ",
+ " ",
+ " noshadowseq: user doesn't want to load Private Sequences ",
+ " noshadow : user doesn't want to load Private groups (odd number) ",
+ " noseq : user doesn't want to load Sequences ",
+ " debug : user wants to run the program in 'debug mode' ",
FINISH_USAGE
// ----- Initialize Arguments Manager ------
dcmdir->SetLoadMode(loadMode);
dcmdir->SetDirectoryName(dirName);
-dcmdir->SetParseDir(true);
+ //dcmdir->SetParseDir(true);
dcmdir->Load();
// ----- Check the result
Program: gdcm
Module: $RCSfile: PrintDicomDir.cxx,v $
Language: C++
- Date: $Date: 2005/07/11 13:54:51 $
- Version: $Revision: 1.27 $
+ Date: $Date: 2005/07/21 04:55:50 $
+ Version: $Revision: 1.28 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
// Initialize Arguments Manager
gdcm::ArgMgr *am= new gdcm::ArgMgr(argc, argv);
- if (argc == 1)
+ if (argc == 1 || am->ArgMgrDefined("usage") )
{
am->ArgMgrUsage(usage); // Display 'usage'
delete am;
Program: gdcm
Module: $RCSfile: ReWrite.cxx,v $
Language: C++
- Date: $Date: 2005/07/07 17:31:53 $
- Version: $Revision: 1.8 $
+ Date: $Date: 2005/07/21 04:55:50 $
+ Version: $Revision: 1.9 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
" \n ReWrite :\n",
" Re write a full gdcm-readable Dicom image ",
" (usefull when the file header is not very straight). ",
- "",
+ " ",
" usage: ReWrite filein=inputFileName fileout=anonymizedFileName ",
" [mode=write mode] [noshadow] [noseq][debug] ",
+ " ",
" mode = a (ACR), x (Explicit VR Dicom), r (RAW : only pixels) ",
+ " noshadowseq: user doesn't want to load Private Sequences ",
" noshadow : user doesn't want to load Private groups (odd number)",
" noseq : user doesn't want to load Sequences ",
" rgb : user wants to tranform LUT (if any) to RGB pixels ",
// ----- Initialize Arguments Manager ------
gdcm::ArgMgr *am = new gdcm::ArgMgr(argc, argv);
- if (am->ArgMgrDefined("usage"))
+ if (argc == 1 || am->ArgMgrDefined("usage"))
{
am->ArgMgrUsage(usage); // Display 'usage'
delete am;
char *fileName = am->ArgMgrWantString("filein",usage);
if ( fileName == NULL )
{
+ std::cout << "'filein= ...' is mandatory" << std::endl;
delete am;
return 0;
}
char *outputFileName = am->ArgMgrWantString("fileout",usage);
if ( outputFileName == NULL )
{
+ std::cout << "'fileout= ...' is mandatory" << std::endl;
delete am;
return 0;
}
char *mode = am->ArgMgrGetString("mode",(char *)"X");
- int loadMode;
- if ( am->ArgMgrDefined("noshadow") && am->ArgMgrDefined("noseq") )
- loadMode = NO_SEQ | NO_SHADOW;
- else if ( am->ArgMgrDefined("noshadow") )
- loadMode = NO_SHADOW;
- else if ( am->ArgMgrDefined("noseq") )
- loadMode = NO_SEQ;
- else
- loadMode = 0;
+ int loadMode = 0x00000000;
+ if ( am->ArgMgrDefined("noshadowseq") )
+ loadMode |= NO_SHADOWSEQ;
+ else
+ {
+ if ( am->ArgMgrDefined("noshadow") )
+ loadMode |= NO_SHADOW;
+ if ( am->ArgMgrDefined("noseq") )
+ loadMode |= NO_SEQ;
+ }
bool rgb = ( 0 != am->ArgMgrDefined("RGB") );
<< std::endl;
int numberOfScalarComponents=f->GetNumberOfScalarComponents();
- std::cout << "NumberOfScalarComponents " << numberOfScalarComponents <<std::endl;
+ std::cout << "NumberOfScalarComponents " << numberOfScalarComponents
+ <<std::endl;
transferSyntaxName = f->GetTransferSyntaxName();
- std::cout << " TransferSyntaxName= [" << transferSyntaxName << "]" << std::endl;
+ std::cout << " TransferSyntaxName= [" << transferSyntaxName << "]"
+ << std::endl;
switch (mode[0])
{
fh->WriteAcr(outputFileName);
break;
- case 'D' : // Not documented in the 'usage', because the method is known to be bugged.
- case 'd' :
+ case 'D' : // Not documented in the 'usage', because the method
+ case 'd' : // is known to be bugged.
// Writting a DICOM Implicit VR file
// from a full gdcm readable File