Dear Alexandre,<div><br></div><div>Thank you so much.</div><div><br></div><div>I didn&#39;t realize about the existence of the <span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">itkQuadEdgeMeshToQuadEdgeMeshF</span><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">ilter, so now I&#39;m trying to use it. Currently, the segfault has moved to a different place (the faces iterator).</span></div>

<div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)"><br></span></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">After the </span><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">itkQuadEdgeMeshToQuadEdgeMeshF</span><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">ilter (I defined a typedef so it will be </span><font color="#222222" face="arial, sans-serif">ContourCopyType), the QEMesh has uninitialized the members m_NumberOfFaces and m_NumberOfEdges.</font></div>

<div><font color="#222222" face="arial, sans-serif"><br></font></div><div><font color="#222222" face="arial, sans-serif">This is my code:</font></div><div><font color="#222222" face="arial, sans-serif"><br></font></div><div>

<font color="#222222" face="arial, sans-serif">// Read an vtk mesh with VTKPolyDataReader. This is the &quot;prior&quot; I use inside this method:</font></div><div><font color="#222222" face="arial, sans-serif"><br></font></div>

<div><font color="#222222"><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"><font size="1" face="courier new, monospace">template&lt; typename TReferenceImageType, typename TCoordRepType &gt;<br>

void<br>LevelSetsBase&lt;TReferenceImageType, TCoordRepType&gt;<br>::SetShapePrior( typename LevelSetsBase&lt;TReferenceImageType, TCoordRepType&gt;::ContourDeformationType* prior ) {<br><span class="Apple-tab-span" style="white-space:pre">        </span>this-&gt;m_ShapePrior = prior;<br>

        this-&gt;m_CurrentContourPosition = ContourDeformationType::New();<br><span class="Apple-tab-span" style="white-space:pre">        </span>this-&gt;m_ContourCopier = ContourCopyType::New();<br><span class="Apple-tab-span" style="white-space:pre">        </span>m_ContourCopier-&gt;SetInput( this-&gt;m_ShapePrior );<br>

<span class="Apple-tab-span" style="white-space:pre">        </span>this-&gt;m_ContourCopier-&gt;Update();<br><span class="Apple-tab-span" style="white-space:pre">        </span>this-&gt;m_CurrentContourPosition = m_ContourCopier-&gt;GetOutput();<br>

}</font></blockquote><div style="font-family:arial,sans-serif"><br></div><div style="font-family:arial,sans-serif">When I compare m_ShapePrior and m_CurrentContourPosition after the GetOutput(), I see that m_CurrentContourPosition does not have the variables mentioned before.</div>

<div style="font-family:arial,sans-serif"><br></div><div style="font-family:arial,sans-serif">After that, the normals filter comes in, and I get the segfault.</div><div style="font-family:arial,sans-serif"><br></div><div style="font-family:arial,sans-serif">

Before, I was manually copying the meshes like this:</div><div style="font-family:arial,sans-serif"><br></div><div><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">

<font size="1" face="courier new, monospace"><span class="Apple-tab-span" style="white-space:pre">        </span>typename ContourDeformationType::PointsContainerConstIterator u_it = prior-&gt;GetPoints()-&gt;Begin();<br>    typename ContourDeformationType::PointsContainerConstIterator u_end = prior-&gt;GetPoints()-&gt;End();<br>

<span class="Apple-tab-span" style="white-space:pre">        </span>VectorType zero = itk::NumericTraits&lt;VectorType&gt;::Zero;<br><span class="Apple-tab-span" style="white-space:pre">        </span>PointType p, newP;<br><span class="Apple-tab-span" style="white-space:pre">        </span>while( u_it != u_end ) {<br>

<span class="Apple-tab-span" style="white-space:pre">                </span>p = u_it.Value();<br><span class="Apple-tab-span" style="white-space:pre">                </span>newP.SetPoint( p );<br><span class="Apple-tab-span" style="white-space:pre">                </span>newP.SetEdge( p.GetEdge() );<br>

<span class="Apple-tab-span" style="white-space:pre">                </span>this-&gt;m_CurrentContourPosition-&gt;SetPointData(<br><span class="Apple-tab-span" style="white-space:pre">                                </span>this-&gt;m_CurrentContourPosition-&gt;AddPoint( newP ), zero);<br>

<span class="Apple-tab-span" style="white-space:pre">                </span>++u_it;<br><span class="Apple-tab-span" style="white-space:pre">        </span>}<br><span class="Apple-tab-span" style="white-space:pre">        </span>typename ContourDeformationType::CellsContainerConstIterator c_it  = prior-&gt;GetCells()-&gt;Begin();<br>

<span class="Apple-tab-span" style="white-space:pre">        </span>typename ContourDeformationType::CellsContainerConstIterator c_end = prior-&gt;GetCells()-&gt;End();<br><span class="Apple-tab-span" style="white-space:pre">        </span>size_t i = 0;<br>

<span class="Apple-tab-span" style="white-space:pre">        </span>while( c_it!=c_end ) {<br><span class="Apple-tab-span" style="white-space:pre">                </span>typename ContourDeformationType::CellType::CellAutoPointer cellCopy;<br>

<span class="Apple-tab-span" style="white-space:pre">                </span>c_it.Value()-&gt;MakeCopy( cellCopy );<br><span class="Apple-tab-span" style="white-space:pre">                </span>this-&gt;m_CurrentContourPosition-&gt;SetCell( i++ ,cellCopy );<br>

<span class="Apple-tab-span" style="white-space:pre">                </span>++c_it;<br><span class="Apple-tab-span" style="white-space:pre">        </span>}</font></blockquote><div><br></div><div>Thanks in advance</div><div><br></div><div>Cheers,</div>

<div>Oscar Esteban</div><div> </div></div></font></div><div><div><div><div><b><font size="1" face="courier new, monospace">__</font>____________________________________</b></div><div><b>Oscar Esteban</b></div><div>PhD Student / Researcher</div>

<div><span style="color:rgb(153,153,153)"><br></span></div><div><span style="color:rgb(153,153,153)"><span style="color:rgb(192,192,192)">Biomedical Image Technologies (BIT), UPM<br>ETSI Telecomunicación Lab. C203, Av. Complutense s/n - E-28040 Madrid (Spain)<br>

+34 915 495 700 ext.4234</span></span></div><div><span style="color:rgb(153,153,153)"><br></span></div><font color="#c0c0c0">Signal Processing Laboratory (LTS5), EPFL-STI-IEL-LTS5<br>ELD 224 (Bâtiment ELD), Station 11, CH-1015 Lausanne, Switzerland<br>

</font></div><div></div><div></div></div><br>
<br><br><div class="gmail_quote">On 5 December 2012 21:53, Alexandre GOUAILLARD <span dir="ltr">&lt;<a href="mailto:agouaillard@gmail.com" target="_blank">agouaillard@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

dear oscar,<div><br></div><div>could you share a simple code that reproduce the problem?</div><div><br></div><div>There is no unsafe copying of QEMesh, itkQuadEdgeMeshToQuadEdgeMeshFilter always hard copy (actually reconstructs the structure) the entire mesh. This is because the QuadEdges have no container and other technical details. This is one reason why the copying part is relatively slow today. Points are safe to shallow copy, cell could be made safe to shallow copy, but edge cells need to be added over again. This is what the filter does when copying.</div>


<div><br></div><div>regards,</div><div><br></div><div>alex.</div><div><br></div><div><br></div><div><br></div><div class="gmail_extra"><br><br><div class="gmail_quote"><div><div class="h5">On Thu, Dec 6, 2012 at 9:32 AM, Oscar Esteban <span dir="ltr">&lt;<a href="mailto:oesteban@die.upm.es" target="_blank">oesteban@die.upm.es</a>&gt;</span> wrote:<br>


</div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5">Hi all,<div><br></div><div>I&#39;m trying to compute the Normals of a QuadEdgeMesh after warping it with itk::WarpMeshFilter and a displacement field.</div>


<div><br></div><div>I save to vtk files the result and the points seem to be correctly displaced, but when computing the normals, I get a segmentation fault in line 302 of itkQuadEdge.h.</div>

<div><br></div><div>I think that the output Mesh after the WarpMeshFilter lacks of some properties needed by the normals filter.</div><div><br></div><div>In order to solve this, I could copy this properties from the input mesh to the output. This are my questions:</div>




<div>- What is missing after the WarpMeshFilter?</div><div>- How to safely clone (deep-copy) a QuadEdgeMesh? (I have this problem in some other parts of my code).</div><div><br></div><div>Thank you so much in advance.</div>




<div><br></div><div>Best,</div><div>Oscar Esteban</div><div><br></div><div><div><div><div><b>______________________________________</b></div><div><b>Oscar Esteban</b></div><div>PhD Student / Researcher</div><div><span style="color:rgb(153,153,153)"><br>




</span></div><div><span style="color:rgb(153,153,153)"><span style="color:rgb(192,192,192)">Biomedical Image Technologies (BIT), UPM<br>ETSI Telecomunicación Lab. C203, Av. Complutense s/n - E-28040 Madrid (Spain)<br><a href="tel:%2B34%20915%20495%20700%20ext.4234" value="+34915495700" target="_blank">+34 915 495 700 ext.4234</a></span></span></div>




<div><span style="color:rgb(153,153,153)"><br></span></div><font color="#c0c0c0">Signal Processing Laboratory (LTS5), EPFL-STI-IEL-LTS5<br>ELD 224 (Bâtiment ELD), Station 11, CH-1015 Lausanne, Switzerland<br></font></div>




<div></div><div></div></div><br>
</div>
<br></div></div>_____________________________________<br>
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at<br>
<a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Kitware offers ITK Training Courses, for more information visit:<br>
<a href="http://www.kitware.com/products/protraining.php" target="_blank">http://www.kitware.com/products/protraining.php</a><br>
<br>
Please keep messages on-topic and check the ITK FAQ at:<br>
<a href="http://www.itk.org/Wiki/ITK_FAQ" target="_blank">http://www.itk.org/Wiki/ITK_FAQ</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://www.itk.org/mailman/listinfo/insight-users" target="_blank">http://www.itk.org/mailman/listinfo/insight-users</a><br>
<br></blockquote></div><br></div>
</blockquote></div><br></div>