+
+ // DVH
+ if(m_ArgsInfo.dvhistogram_given)
+ {
+ typename StatisticsImageFilterType::HistogramPointer dvhistogram = statisticsFilter->GetHistogram(label);
+ double totalVolumeCC = ((statisticsFilter->GetCount(label))*spacing_cc);
+ double totalVolume = statisticsFilter->GetCount(label);
+
+ // Screen
+ std::cout<<"# Total volume : ";
+ std::cout<<totalVolume<<" [No. of voxels]"<<std::endl;
+ std::cout<<"# Total volume : ";
+ std::cout<<totalVolumeCC<<" [cc]"<<std::endl;
+ std::cout<<"# Dose mean: ";
+ std::cout<<statisticsFilter->GetMean(label)<<" [Gy]"<<std::endl;
+ std::cout<<"# Dose min: ";
+ std::cout<<statisticsFilter->GetMinimum(label)<<" [Gy]"<<std::endl;
+ std::cout<<"# Dose max: ";
+ std::cout<<statisticsFilter->GetMaximum(label)<<" [Gy]"<<std::endl;
+ std::cout<<" "<<std::endl;
+ std::cout<<"#Dose_diff[Gy] Volume_diff[No. of voxels] Volume_diff[%] Volume_diff[cc] Volume_cumul[No. of voxels] Volume_cumul[%] Volume_cumul[cc]"<<std::endl;
+ for( int i =0; i <m_ArgsInfo.bins_arg; i++)
+ {
+ double popCumulativeVolume = 0;
+ for(int j=0; j<i; j++)
+ {
+ popCumulativeVolume+=(dvhistogram->GetFrequency(j));
+ }
+ double cumulativeVolume = (totalVolume - (popCumulativeVolume + (dvhistogram->GetFrequency(i))));
+ double percentCumulativeVolume =(cumulativeVolume*100)/(statisticsFilter->GetCount(label)) ;
+ double ccCumulativeVolume = (totalVolumeCC -((popCumulativeVolume + (dvhistogram->GetFrequency(i)))*spacing_cc));
+ double percentDiffVolume = dvhistogram->GetFrequency(i)*100/(statisticsFilter->GetCount(label));
+ std::cout<<dvhistogram->GetBinMax(0,i)<<"\t "<<dvhistogram->GetFrequency(i)<<"\t "<<percentDiffVolume<<"\t "<<((dvhistogram->GetFrequency(i))*spacing_cc)<<"\t "<<"\t "<<cumulativeVolume<<"\t "<<percentCumulativeVolume<<"\t "<<ccCumulativeVolume<<"\t "<<std::endl;
+ }
+
+ // Add to the file
+ std::ofstream dvhistogramFile(m_ArgsInfo.dvhistogram_arg);
+ dvhistogramFile<<"# Total volume : ";
+ dvhistogramFile<<statisticsFilter->GetCount(label)<<" [No. of voxels]"<<std::endl;
+ dvhistogramFile<<"# Total volume : ";
+ dvhistogramFile<<totalVolumeCC<<" [cc]"<<std::endl;
+ dvhistogramFile<<"# Dose mean: ";
+ dvhistogramFile<<statisticsFilter->GetMean(label)<<" [Gy]"<<std::endl;
+ dvhistogramFile<<"# Dose min: ";
+ dvhistogramFile<<statisticsFilter->GetMinimum(label)<<" [Gy]"<<std::endl;
+ dvhistogramFile<<"# Dose max: ";
+ dvhistogramFile<<statisticsFilter->GetMaximum(label)<<" [Gy]"<<std::endl;
+ dvhistogramFile<<" "<<std::endl;
+ dvhistogramFile<<"#Dose_diff[Gy] Volume_diff[No. of voxels] Volume_diff[%] Volume_diff[cc] Volume_cumul[No. of voxels] Volume_cumul[%] Volume_cumul[cc]"<<std::endl;
+ for( int i =0; i <m_ArgsInfo.bins_arg; i++)
+ {
+ double popCumulativeVolume = 0;
+ for(int j=0; j<i; j++)
+ {
+ popCumulativeVolume+=(dvhistogram->GetFrequency(j));
+ }
+ double cumulativeVolume = (totalVolume - (popCumulativeVolume + (dvhistogram->GetFrequency(i))));
+ double percentCumulativeVolume =(cumulativeVolume*100)/(statisticsFilter->GetCount(label));
+ double ccCumulativeVolume = (totalVolumeCC -((popCumulativeVolume + (dvhistogram->GetFrequency(i)))*spacing_cc));
+ double percentDiffVolume = ((dvhistogram->GetFrequency(i))*100)/(statisticsFilter->GetCount(label));
+ dvhistogramFile<<dvhistogram->GetBinMax(0,i)<<"\t "<<dvhistogram->GetFrequency(i)<<"\t "<<percentDiffVolume<<"\t "<<((dvhistogram->GetFrequency(i))*spacing_cc)<<"\t "<<cumulativeVolume<<"\t "<<percentCumulativeVolume<<"\t "<<ccCumulativeVolume<<std::endl;
+ }
+ }