<div dir="ltr"><br clear="all"><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">Hello Simon  </div><div dir="ltr"><br></div><div dir="ltr">Thanks for your reply,<br></div><div dir="ltr"><br></div><div>I also have some question to ask , </div><div><br></div><div style="text-align:left">1.  I just tried your suggested code  to implement  projectionreader API , in C++ version and use CUDA too,</div><div style="text-align:left">     but is will be crash on update parameters function ,  What steps am I doing wrong?</div><div style="text-align:left">   </div><div style="text-align:left"> here is my code : </div><div style="text-align:left">   ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓ </div><div><div style="text-align:left"> using ImageIOType = itk::RawImageIO<unsigned short, 2>; //unsigned short</div><div style="text-align:left">  using IutputImageType = itk::CudaImage<float, 3>; //float</div><div style="text-align:left"><br></div><div style="text-align:left">  ImageIOType::Pointer io = ImageIOType::New();</div><div style="text-align:left">  io->SetHeaderSize(2048);</div><div style="text-align:left">  io->SetNumberOfDimensions(2);</div><div style="text-align:left">  io->SetPixelType(itk::CommonEnums::IOPixel::SCALAR);</div><div style="text-align:left">  io->SetDimensions(0, 1152);</div><div style="text-align:left">  io->SetDimensions(1, 1152);</div><div style="text-align:left">  io->SetByteOrderToLittleEndian();</div><div style="text-align:left">  io->SetSpacing(0, 0.25);</div><div style="text-align:left">  io->SetSpacing(1, 0.25);</div><div style="text-align:left"><br></div><div style="text-align:left">  string nametostring = "";</div><div style="text-align:left">  std::vector<std::string> newfilename(272);</div><div style="text-align:left">  for (int fna = 1; fna < 273; fna++)</div><div style="text-align:left">  {</div><div style="text-align:left">    nametostring = std::to_string(fna);</div><div style="text-align:left">    newfilename.push_back(subfolder);</div><div style="text-align:left">    newfilename.push_back("\\");</div><div style="text-align:left">    newfilename.push_back(nametostring + ".raw");</div><div style="text-align:left">  }</div><div style="text-align:left"><br></div><div style="text-align:left">  using ReaderType = rtk::ProjectionsReader<IutputImageType>; //OutputImageType CPUimagetype</div><div style="text-align:left">  ReaderType::Pointer reader = ReaderType::New();</div><div style="text-align:left"><br></div>  reader->SetFileNames(newfilename);<br><br>  reader->SetImageIO(io);<br><br>  reader->Update();  <span style="background-color:rgb(255,0,0)"><- Crash on here </span><br></div><div>---------</div><div><br></div><div>2.  You can reconstruct one 3D slice by using a size of 1 in the axial direction </div><div>--> <span style="background-color:rgb(0,255,255)"> Do you mean Set Z in the size parameter to 1 ?</span></div><div>      for example --> Size (XYZ)=>(1024,1024,1)  </div><div>     then I get the reconstruct image like this ? </div><div>     </div><img src="cid:ii_lcivrplb1" alt="250.jpg" width="224" height="224" style="margin-right: 0px;"><br><div><br></div><div><br></div><div>Thanks again in advance for your reply. <br></div><div><br></div><div>BR</div><div><br></div><div><br></div><div><br></div><div><br></div><div> </div></div></div><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Simon Rit <<a href="mailto:simon.rit@creatis.insa-lyon.fr">simon.rit@creatis.insa-lyon.fr</a>> 於 2023年1月4日 週三 下午8:23寫道:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Hello,</div><div>1/ Yes, you can read images in raw format but you need to specify the meta information for example in python</div><div>rawio = itk.RawImageIO.New()<br>rawio.SetNumberOfDimensions(2)<br>rawio.SetPixelType(itk.CommonEnums.IOPixel_SCALAR)<br>rawio.SetComponentType(itk.CommonEnums.IOComponent_FLOAT)<br>rawio.SetDimensions(0, 256)<br>rawio.SetDimensions(1, 256)<br>rawio.SetSpacing(0, 1)<br>rawio.SetSpacing(1, 1)<br>rawio.SetByteOrderToLittleEndian()<br><br># List of filenames<br>fileNames = []<br>for i in range(100):<br>    fileNames.append(f'{i}.raw')<br><br># Read projections<br>CPUImageType = itk.Image[itk.F,3]<br>proj = rtk.projections_reader(ttype=CPUImageType, file_names=fileNames, ImageIO=rawio)</div><div><br></div><div>2/ We only work in 3D. You can reconstruct one 3D slice by using a size of 1 in the axial direction.</div><div>Simon<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Dec 26, 2022 at 10:40 AM 何明哲 via Rtk-users <<a href="mailto:rtk-users@public.kitware.com" target="_blank">rtk-users@public.kitware.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><br clear="all"><div><div dir="ltr"><div dir="ltr"><div>Hello everyone<br><br>I am a newbie in using RTK<br><br>I have  two question to ask,<br>1. Can the projectionreader API read images in RAW format data set?<br>2. Which API or method does RTK provide to reconstruct the 2D X-ray scan data set projection image into a 2D CT Slice image ?Or is there any other reference document that can help me reconstruct CT slices in RTK? <br></div><div><br></div><div>thanks for reply ,BR</div></div></div></div></div>
_______________________________________________<br>
Rtk-users mailing list<br>
<a href="mailto:Rtk-users@public.kitware.com" target="_blank">Rtk-users@public.kitware.com</a><br>
<a href="https://public.kitware.com/cgi-bin/mailman/listinfo/rtk-users" rel="noreferrer" target="_blank">https://public.kitware.com/cgi-bin/mailman/listinfo/rtk-users</a><br>
</blockquote></div>
</blockquote></div>