#include <cmath>
#include <iostream>
#include <sstream>
#include <Volume.hpp>
#include <Texture.hpp>
Go to the source code of this file.
Functions | |
std::string | get_string (const int &k) |
int | main (int argc, char *argv[]) |
std::string get_string | ( | const int & | k | ) |
Definition at line 82 of file main.cpp.
Referenced by main().
00083 { 00084 00085 std::stringstream stream_number;stream_number<<k; 00086 std::string number(stream_number.str()); 00087 00088 if(k<10) 00089 number="00"+number; 00090 else if(k<100) 00091 number="0"+number; 00092 return number; 00093 00094 }
int main | ( | int | argc, | |
char * | argv[] | |||
) |
Definition at line 11 of file main.cpp.
References Texture::export_ppm(), get_string(), Volume::load_v4d(), Volume::mip(), Volume::ray_cast(), Volume::resampled_square(), Volume::rotated_z(), Volume::size_x(), Volume::size_y(), Volume::size_z(), Volume::slice_x(), Volume::slice_y(), Volume::slice_z(), and Volume::smoothed().
00012 { 00013 00014 std::cout<<"start "<<argv[0]<<" with "<<argc<<" arg"<<std::endl; 00015 00016 try 00017 { 00018 00019 //************************// 00020 //Load 00021 //************************// 00022 Volume vol=Volume::load_v4d("data/head_ct.4d"); 00023 vol=vol.resampled_square(100); 00024 for(int k=0;k<2;++k) 00025 vol=vol.smoothed(); 00026 00027 00028 00029 //************************// 00030 //export slices 00031 //************************// 00032 std::vector<float> sx=vol.slice_x(vol.size_x()/2.0); 00033 Texture::export_ppm("output/slice_x.ppm",vol.size_y(),vol.size_z(),sx,sx,sx); 00034 00035 std::vector<float> sy=vol.slice_y(vol.size_y()/2.0); 00036 Texture::export_ppm("output/slice_y.ppm",vol.size_x(),vol.size_z(),sy,sy,sy); 00037 00038 std::vector<float> sz=vol.slice_z(vol.size_z()/2.0); 00039 Texture::export_ppm("output/slice_z.ppm",vol.size_x(),vol.size_y(),sz,sz,sz); 00040 00041 00042 00043 00044 00045 00046 //************************// 00047 //Integration 00048 //************************// 00049 00050 //number of rotation steps 00051 int N=10; 00052 for(int counter=0;counter<N;++counter) 00053 { 00054 std::string number=get_string(counter); 00055 00056 std::cout<<"export file "<<counter+1<<" / "<<N<<std::endl; 00057 double angle=static_cast<double>(counter)/static_cast<double>(N-1)*M_PI*2+M_PI/2.0; 00058 Volume vol2=vol.rotated_z(angle); 00059 00060 00061 //MIP 00062 std::vector<float> val=vol2.mip(); 00063 Texture::export_ppm("output/mip_"+number+".ppm",vol.size_y(),vol.size_z(),val,val,val); 00064 00065 //Ray Casting 00066 std::vector<std::vector<float> > val_couleur=vol2.ray_cast(); 00067 Texture::export_ppm("output/ray_"+number+".ppm",vol.size_y(),vol.size_z(),val_couleur[0],val_couleur[1],val_couleur[2]); 00068 } 00069 00070 00071 } 00072 catch(const std::string& e) 00073 { 00074 std::cout<<"================================"<<std::endl; 00075 std::cout<<"Exception catch"<<std::endl; 00076 std::cout<<e<<std::endl; 00077 } 00078 00079 return 0; 00080 }