<div>Hi all</div><div><br></div><div>In one of our application, we need to perform a fusion between interventional fluoroscopic images and preoperative CT scan. <br>In order to achieve this, a reverse perspective ray cast volume rendering is needed. This means we have to reverse the way x-ray are thrown (from the focal point to the camera, and not the opposite).<br>


The main principle is explained <a href="http://imgur.com/SmnDwPn" target="_blank">on this figure</a> (found on this article: <a href="http://link.springer.com/content/pdf/10.1007%2F978-3-642-21504-9_2.pdf" target="_blank">http://link.springer.com/content/pdf/10.1007%2F978-3-642-21504-9_2.pdf</a> )</div>


<div><br></div><div>We were able to achieve this with the vtkFixedVolumeRayCastMapper, by switching the lines 1788 and 1792 on the file vtkFixedVolumeRayCastMapper.cxx of vtk 5.10.1</div><div><div>the code :  </div><div>

/*********************************************************************/</div>
<div>  viewRay[2] = 0.0;</div><div><div>  vtkVRCMultiplyPointMacro( viewRay, rayStart,</div><div>                            this->ViewToVoxelsArray );</div></div><div>  viewRay[2] = this->RayCastImage->GetZBufferValue(x,y);</div>


<div>/*********************************************************************/</div><div>became :</div><div>/*********************************************************************/</div><div><div>  viewRay[2] = this->RayCastImage->GetZBufferValue(x,y);</div>


<div>  vtkVRCMultiplyPointMacro( viewRay, rayStart,</div><div>                            this->ViewToVoxelsArray );</div><div>  viewRay[2] = 0.0;</div></div><div>/*********************************************************************/</div>


<div><br></div><div>The resulting images are these ones :<br>* <a href="http://imgur.com/Aoe9VxV,HfiwFU3,uaki4f6,UFXS9pH#0" target="_blank">Normal-Perspective View 1</a></div><div>* <a href="http://imgur.com/Aoe9VxV,HfiwFU3,uaki4f6,UFXS9pH#1" target="_blank">Reverse-Perspective View 1</a></div>


<div><div>* <a href="http://imgur.com/Aoe9VxV,HfiwFU3,uaki4f6,UFXS9pH#2" target="_blank">Normal-Perspective View 2</a></div><div>* <a href="http://imgur.com/Aoe9VxV,HfiwFU3,uaki4f6,UFXS9pH#3" target="_blank">Reverse-Perspective View 2</a></div>

</div><div>
<br></div><div>Which is exactly what we are trying to do.</div><div><br></div><div>Now we want to do the same with the vtkGPUVolumeRayCastMapper. I've tried to hack the following files, especially the function trace() and incrementalRayDirection() without success</div>


<div>vtkGPUVolumeRayCastMapper_CompositeFS.glsl</div><div>vtkGPUVolumeRayCastMapper_HeaderFS.glsl</div><div>vtkGPUVolumeRayCastMapper_PerspectiveProjectionFS.glsl</div><div><br></div><div>Does anyone has a clue on this ?<br>


<br></div><div>Thanks for reading, sorry for the frenglish<br><br></div><div>Simon<br><br></div><div>-- </div><div>------------------------------------------------------------------<br>Simon Esneault - Therenva<br>Centre d'Innovation Technologique<br>


Centre Cardio-Pneumologique<br>CHU Pontchaillou<br>Rennes, France<br>Tel : +33 (0)6 64 61 30 94<br>Mail : <a href="mailto:simon.esneault@therenva.com" target="_blank">simon.esneault@therenva.com</a><br>------------------------------------------------------------------
</div>
</div>