<div dir="ltr">Hi Marcos,<div><br></div><div>You'll have to describe your pipeline in more detail before I can help.</div><div><br></div><div> - David</div><div><br><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Sep 17, 2015 at 10:52 AM, Marcos <span dir="ltr"><<a href="mailto:fotosentido@gmail.com" target="_blank">fotosentido@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Thank you so much, it worked.<div><br></div><div>Just one thing: after your change, in a multiframe image, when I rotated it, it was still cropped on one side. I noticed that, switching to the next/previous, it was corrected (I could the entire image rotated), so my solution for now is moving to the next frame and inmediatly going back again.</div><div><div class="h5"><div><br></div><div><br></div><div class="gmail_extra"><br><div class="gmail_quote">2015-09-17 0:36 GMT+02:00 David Gobbi <span dir="ltr"><<a href="mailto:david.gobbi@gmail.com" target="_blank">david.gobbi@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi Marcos,<div><br></div><div>Changing to SetResliceAxes is simple.  Just do this:</div><div><br></div><div>    reslicer->SetResliceAxes(transform->GetMatrix());</div><div><br></div><div>Then remove the call to SetOutputExtent().</div><div><br></div><div>The output extent should not be the same as the input extent when</div><div>you rotate a rectangular image.</div><div><br></div><div>Also, do not set the Extent with the Bounds.  The Bounds and the Extent</div><div>are not the same thing (here the Bounds is measured in millimetres, but</div><div>the Extent is measured in voxels).  It might have worked for you if your</div><div>voxel size was 1mm x 1mm x 1mm, but in general this is not the case.</div><span><font color="#888888"><div><br></div><div> - David</div></font></span><div><div><div><br></div><div><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Sep 16, 2015 at 4:24 PM, Marcos <span dir="ltr"><<a href="mailto:fotosentido@gmail.com" target="_blank">fotosentido@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div><div><div dir="ltr"><br><div class="gmail_quote"><div dir="ltr">Hi,<div><br></div><div>I tried before woth SetResliceAxes, but I didn't get how to use a vtkMatrix4x4 as I said in another post.</div><div><br></div><div>It was working with SetResliceTransform, until I saw that.</div><div><br></div><div><br></div><div>I tried to do this:</div><div><br></div><div><pre style="margin-top:0px;margin-bottom:0px"><pre style="margin-top:0px;margin-bottom:0px"><span style="color:rgb(128,128,0)">void</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(128,0,128)">ViewerWidget</span><span style="color:rgb(0,0,0)">::</span><span style="color:rgb(0,0,0)">rotateCalculate</span><span style="color:rgb(0,0,0)">(</span><span style="color:rgb(128,128,0)">int</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">angle</span><span style="color:rgb(0,0,0)">,</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(128,128,0)">double</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">axis</span><span style="color:rgb(0,0,0)">[])</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:rgb(0,0,0)">{</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:rgb(192,192,192)">    </span><span style="color:rgb(128,128,0)">double</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">bounds</span><span style="color:rgb(0,0,0)">[</span><span style="color:rgb(0,0,128)">6</span><span style="color:rgb(0,0,0)">];</span></pre><pre style="margin-top:0px;margin-bottom:0px"><span style="color:rgb(192,192,192)">    </span><span style="color:rgb(128,0,0)">con</span><span style="color:rgb(0,0,0)">-></span><span style="color:rgb(0,0,0)">GetOutput</span><span style="color:rgb(0,0,0)">()-></span><span style="color:rgb(0,0,0)">GetBounds</span><span style="color:rgb(0,0,0)">(</span><span style="color:rgb(0,0,0)">bounds</span><span style="color:rgb(0,0,0)">);</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:rgb(192,192,192)">    </span><span style="color:rgb(128,128,0)">double</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">center</span><span style="color:rgb(0,0,0)">[</span><span style="color:rgb(0,0,128)">3</span><span style="color:rgb(0,0,0)">];</span></pre><pre style="margin-top:0px;margin-bottom:0px"><span style="color:rgb(192,192,192)">    </span><span style="color:rgb(0,0,0)">center</span><span style="color:rgb(0,0,0)">[</span><span style="color:rgb(0,0,128)">0</span><span style="color:rgb(0,0,0)">]</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">=</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">(</span><span style="color:rgb(0,0,0)">bounds</span><span style="color:rgb(0,0,0)">[</span><span style="color:rgb(0,0,128)">1</span><span style="color:rgb(0,0,0)">]</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">+</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">bounds</span><span style="color:rgb(0,0,0)">[</span><span style="color:rgb(0,0,128)">0</span><span style="color:rgb(0,0,0)">])</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">/</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,128)">2.0</span><span style="color:rgb(0,0,0)">;</span></pre><pre style="margin-top:0px;margin-bottom:0px"><span style="color:rgb(192,192,192)">    </span><span style="color:rgb(0,0,0)">center</span><span style="color:rgb(0,0,0)">[</span><span style="color:rgb(0,0,128)">1</span><span style="color:rgb(0,0,0)">]</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">=</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">(</span><span style="color:rgb(0,0,0)">bounds</span><span style="color:rgb(0,0,0)">[</span><span style="color:rgb(0,0,128)">3</span><span style="color:rgb(0,0,0)">]</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">+</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">bounds</span><span style="color:rgb(0,0,0)">[</span><span style="color:rgb(0,0,128)">2</span><span style="color:rgb(0,0,0)">])</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">/</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,128)">2.0</span><span style="color:rgb(0,0,0)">;</span></pre><pre style="margin-top:0px;margin-bottom:0px"><span style="color:rgb(192,192,192)">    </span><span style="color:rgb(0,0,0)">center</span><span style="color:rgb(0,0,0)">[</span><span style="color:rgb(0,0,128)">2</span><span style="color:rgb(0,0,0)">]</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">=</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">(</span><span style="color:rgb(0,0,0)">bounds</span><span style="color:rgb(0,0,0)">[</span><span style="color:rgb(0,0,128)">5</span><span style="color:rgb(0,0,0)">]</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">+</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">bounds</span><span style="color:rgb(0,0,0)">[</span><span style="color:rgb(0,0,128)">4</span><span style="color:rgb(0,0,0)">])</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">/</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,128)">2.0</span><span style="color:rgb(0,0,0)">;</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:rgb(192,192,192)">    </span><span style="color:rgb(128,0,0)">transform</span><span style="color:rgb(0,0,0)">-></span><span style="color:rgb(0,0,0)">Translate</span><span style="color:rgb(0,0,0)">(</span><span style="color:rgb(0,0,0)">center</span><span style="color:rgb(0,0,0)">[</span><span style="color:rgb(0,0,128)">0</span><span style="color:rgb(0,0,0)">],</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">center</span><span style="color:rgb(0,0,0)">[</span><span style="color:rgb(0,0,128)">1</span><span style="color:rgb(0,0,0)">],</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">center</span><span style="color:rgb(0,0,0)">[</span><span style="color:rgb(0,0,128)">2</span><span style="color:rgb(0,0,0)">]);</span></pre><pre style="margin-top:0px;margin-bottom:0px"><span style="color:rgb(192,192,192)">    </span><span style="color:rgb(128,0,0)">transform</span><span style="color:rgb(0,0,0)">-></span><span style="color:rgb(0,0,0)">RotateWXYZ</span><span style="color:rgb(0,0,0)">(</span><span style="color:rgb(0,0,0)">angle</span><span style="color:rgb(0,0,0)">,</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">axis</span><span style="color:rgb(0,0,0)">);</span></pre><pre style="margin-top:0px;margin-bottom:0px"><span style="color:rgb(192,192,192)">    </span><span style="color:rgb(128,0,0)">transform</span><span style="color:rgb(0,0,0)">-></span><span style="color:rgb(0,0,0)">Translate</span><span style="color:rgb(0,0,0)">(-</span><span style="color:rgb(0,0,0)">center</span><span style="color:rgb(0,0,0)">[</span><span style="color:rgb(0,0,128)">0</span><span style="color:rgb(0,0,0)">],</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">-</span><span style="color:rgb(0,0,0)">center</span><span style="color:rgb(0,0,0)">[</span><span style="color:rgb(0,0,128)">1</span><span style="color:rgb(0,0,0)">],</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">-</span><span style="color:rgb(0,0,0)">center</span><span style="color:rgb(0,0,0)">[</span><span style="color:rgb(0,0,128)">2</span><span style="color:rgb(0,0,0)">]);</span></pre><pre style="margin-top:0px;margin-bottom:0px"><span style="color:rgb(192,192,192)">    </span><span style="color:rgb(128,0,0)">reslicer</span><span style="color:rgb(0,0,0)">-></span><span style="font-style:italic;color:rgb(0,0,0)">SetResliceTransform</span><span style="color:rgb(0,0,0)">(</span><span style="color:rgb(128,0,0)">transform</span><span style="color:rgb(0,0,0)">);</span></pre><pre style="margin-top:0px;margin-bottom:0px"><span style="color:rgb(0,0,0)"><br></span></pre><pre style="margin-top:0px;margin-bottom:0px"><span style="color:rgb(0,0,0)">    // added this line, </span></pre><pre style="margin-top:0px;margin-bottom:0px"><span style="color:rgb(192,192,192)">    </span><span style="color:rgb(128,0,0)">reslicer</span><span style="color:rgb(0,0,0)">-></span><span style="font-style:italic;color:rgb(0,0,0)">SetOutputExtent</span><span style="color:rgb(0,0,0)">(</span><span style="color:rgb(0,0,0)">bounds</span><span style="color:rgb(0,0,0)">[</span><span style="color:rgb(0,0,128)">2</span><span style="color:rgb(0,0,0)">],</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">bounds</span><span style="color:rgb(0,0,0)">[</span><span style="color:rgb(0,0,128)">3</span><span style="color:rgb(0,0,0)">],</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">bounds</span><span style="color:rgb(0,0,0)">[</span><span style="color:rgb(0,0,128)">0</span><span style="color:rgb(0,0,0)">],</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">bounds</span><span style="color:rgb(0,0,0)">[</span><span style="color:rgb(0,0,128)">1</span><span style="color:rgb(0,0,0)">],</span></pre><pre style="margin-top:0px;margin-bottom:0px"><span style="color:rgb(192,192,192)">            </span><span style="color:rgb(0,0,0)">bounds</span><span style="color:rgb(0,0,0)">[</span><span style="color:rgb(0,0,128)">4</span><span style="color:rgb(0,0,0)">],</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(0,0,0)">bounds</span><span style="color:rgb(0,0,0)">[</span><span style="color:rgb(0,0,128)">5</span><span style="color:rgb(0,0,0)">]);</span></pre><pre style="margin-top:0px;margin-bottom:0px"><br></pre><pre style="margin-top:0px;margin-bottom:0px"><span style="color:rgb(192,192,192)">    </span><span style="color:rgb(128,0,0)">reslicer</span><span style="color:rgb(0,0,0)">-></span><span style="font-style:italic;color:rgb(0,0,0)">Update</span><span style="color:rgb(0,0,0)">();</span></pre><pre style="margin-top:0px;margin-bottom:0px"><span style="color:rgb(0,0,0)">}</span></pre></pre></div><div><br></div><div><div>I got an exception : read access violation on <span style="color:rgb(128,0,128)">vtkImageMapToWindowLevelColors</span><span style="color:rgb(0,0,0)">::</span><span style="font-style:italic;color:rgb(0,0,0)">ThreadedRequestData</span></div><div>even with square images.</div></div><div><br></div><div>The bound values for a non square-image (multiframe):</div><div>299.5, 898.5, 214.5, 643.5, 4.5, 13.5</div><div><br></div><div>The bound values for the square image (multiframe):</div><div>127.5, 382.5, 127.5, 382.5, 521.024, 1563.0749</div><div><br></div></div><div><div><div class="gmail_extra"><br><div class="gmail_quote">2015-09-16 22:49 GMT+02:00 David Gobbi <span dir="ltr"><<a href="mailto:david.gobbi@gmail.com" target="_blank">david.gobbi@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span>On Wed, Sep 16, 2015 at 1:46 PM, Siavash Khallaghi <span dir="ltr"><<a href="mailto:siavashk@ece.ubc.ca" target="_blank">siavashk@ece.ubc.ca</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Hi Marcos,<br>
<br>
Can you compare the extent of the output of vtkImageReslice against its<br>
input? My gut feeling is that they are not equal.<br></blockquote><div><br></div></span><div>I suggest to use SetResliceAxes() (using transform->GetMatrix()) instead of</div><div>SetResliceTransform.  Here is why:</div><div><br></div><div>When you use SetResliceAxes(), vtkImageReslice will transform the input</div><div>sampling (i.e. the extent and spacing) so that the output extent is rotated as</div><div>compared to the input extent.</div><div><br></div><div>Another option is to manually set the output extent, with reslice->SetOutputExtent().</div></div></div></div></blockquote></div></div></div></div></div></div></div></div></blockquote></div></div></div></div></div></div></blockquote></div></div></div></div></div></blockquote></div><br></div></div></div>