//Get GDCMSeriesFileNames order to sort filenames
typedef itk::GDCMSeriesFileNames NamesGeneratorType;
NamesGeneratorType::Pointer nameGenerator = NamesGeneratorType::New();
- nameGenerator->SetUseSeriesDetails(true);
+ nameGenerator->SetUseSeriesDetails(false);
std::string folderName=".";
const size_t last_slash_idx = input_files[0].rfind('/');
if (std::string::npos != last_slash_idx)
hreader.Read();
gdcm::DataSet& ds = hreader.GetFile().GetDataSet();
- if (args_info.extract_series_flag) {
- gdcm::Attribute<0x20,0x000e> series_UID_att;
- series_UID_att.SetFromDataSet(ds);
- series_UID = series_UID_att.GetValue();
- }
+ gdcm::Attribute<0x20,0x000e> series_UID_att;
+ series_UID_att.SetFromDataSet(ds);
+ series_UID = series_UID_att.GetValue().c_str();
series_UIDs.insert(series_UID);
theorigin[series_UID] = gdcm::ImageHelper::GetOriginValue(hreader.GetFile());
header->SetMaxSizeLoadEntry(16384); // required ?
header->Load();
- if (args_info.extract_series_flag) {
- series_UID = header->GetEntryValue(0x20,0x000e).c_str();
- }
+ series_UID = header->GetEntryValue(0x20,0x000e).c_str();
series_UIDs.insert(series_UID);
theorigin[series_UID].resize(3);
std::vector<double> locs = sliceLocations[*sn];
std::vector<double> origin = theorigin[*sn];
std::vector<std::string> files = seriesFiles[*sn];
- std::vector<int> sliceIndex;
+ std::vector<int> sliceIndex(files.size());
//clitk::GetSortedIndex(locs, sliceIndex);
//Look for files into GDCMSeriesFileNames, because it sorts files correctly and take the order
const std::vector<std::string> & temp = nameGenerator->GetFileNames(*sn);
for(unsigned int i=0; i<files.size(); i++) {
int j(0);
- while (sliceIndex.size()==i && j<temp.size()) {
+ bool found(false);
+ while (!found && j<temp.size()) {
const size_t last_slash_idx2 = temp[j].rfind('/');
std::string tempFilename(temp[j]);
- if (std::string::npos != last_slash_idx2)
- tempFilename = temp[j].substr(last_slash_idx2+1, temp[j].size()-1);
- if (tempFilename == files[i])
- sliceIndex.push_back(j);
+ if (temp[j][0] == '.' && temp[j][1] == '/')
+ tempFilename = temp[j].substr(2, temp[j].size()-1);
+ if (tempFilename == files[i]) {
+ sliceIndex[j] = i;
+ found = true;
+ }
++j;
}
}
+ if (sliceIndex.size() == 0) { //ie. sn is not a serie present in files
+ sn++;
+ continue;
+ }
if (args_info.verbose_flag) {
std::cout << locs[sliceIndex[0]] << " -> "