[ITK] [ITK-users] Segfault in Wiki Example: QuadEdgeMeshParameterizationFilter
Arnaud Gelas
arnaudgelas at gmail.com
Mon Jun 8 07:38:17 EDT 2015
BTW, here is an example on how you could cut a mesh into 2:
http://itk.org/ITKExamples/src/Core/QuadEdgeMesh/CutMesh/Documentation.html <http://itk.org/ITKExamples/src/Core/QuadEdgeMesh/CutMesh/Documentation.html>
It can be useful to test parameterization…
> On 08 Jun 2015, at 11:43, Arnaud Gelas <arnaudgelas at gmail.com> wrote:
>
> Hi Davis,
>
> The QuadEdgeMeshParameterizationFilter is a fixed boundary parameterization and requires one input mesh with at least one boundary, it could not work with a sphere…
>
> I have updated the documentation in this patch:
>
> http://review.source.kitware.com/#/c/19888/ <http://review.source.kitware.com/#/c/19888/>
>
> and added an exception in this one:
>
> http://review.source.kitware.com/#/c/19890/ <http://review.source.kitware.com/#/c/19890/>
>
> Thanks for reporting!
>
> Best,
> Arnaud
>
>> On 05 Jun 2015, at 17:09, DVigneault <davis.vigneault at gmail.com <mailto:davis.vigneault at gmail.com>> wrote:
>>
>> All--
>>
>> While running the QuadEdgeMesh Parameterization example from the wiki [1]
>> using the provided spherical mesh, I got a segfault on
>> itkBorderQuadEdgeMeshFilter.hxx:75:
>>
>> InputIteratorGeom it = bdryEdge->BeginGeomLnext();
>>
>> The options I used were ./program sphere.vtk 0 0 output.vtk
>>
>> After some investigation, I believe it may be that sphere.vtk has no
>> internal edges. Therefore, BorderQuadEdgeMeshFilter::Evaluate is returning
>> an empty std::list, and list->Begin() is eventually dereferenced on the
>> above line. Should an itkWarningMacro() or itkExceptionMacro() be placed
>> before the above line, checking whether the list is empty? Or should this
>> be on the user?
>>
>> [1]
>> http://www.itk.org/Wiki/ITK/Examples/Meshes/QuadEdgeMeshParameterizationFilter <http://www.itk.org/Wiki/ITK/Examples/Meshes/QuadEdgeMeshParameterizationFilter>
>>
>> One other thing that's a bit confusing--if I pass ./program sphere.vtk 1 0
>> output.vtk (using DISK_BORDER_TRANSFORM instead of SQUARE_BORDER_TRANSFORM),
>> there is no segfault in the wiki example. In the small program below,
>> however, it segfaults in either case.
>>
>> Here's a program that describes the problem:
>>
>> #include "itkRegularSphereMeshSource.h"
>> #include "itkBorderQuadEdgeMeshFilter.h"
>>
>> typedef itk::QuadEdgeMesh< double, 3 > TMesh;
>> typedef itk::RegularSphereMeshSource< TMesh > TSource;
>> typedef itk::QuadEdgeMeshBoundaryEdgesMeshFunction< TMesh > TBorderFunction;
>> typedef itk::BorderQuadEdgeMeshFilter< TMesh, TMesh > TBorder;
>> int main( int argc, char* argv[] )
>> {
>>
>> TSource::Pointer source = TSource::New();
>> source->Update();
>> TMesh::Pointer mesh = source->GetOutput();
>>
>> TBorderFunction::Pointer fn = TBorderFunction::New();
>> TMesh::EdgeListPointerType list = fn->Evaluate( *(mesh) );
>> std::cout << list->size() << std::endl; // 0
>> // A sphere has no internal edges
>> // Returns a std::list size zero
>>
>> TBorder::Pointer border = TBorder::New();
>> border->SetTransformType( TBorder::SQUARE_BORDER_TRANSFORM );
>> // Segfaults even if I change this to DISK_BORDER_TRANSFORM
>> border->SetInput( mesh );
>> border->Update(); // Segfault
>> // itkBorderQuadEdgeMeshFilter.hxx:110
>> // empty std::list is assigned to oborder_it
>> // for loop is bypassed b/c list->begin() == list->end()
>> // InputQEType* output = *oborder_it;
>> // return output; from ComputeLongestBorder
>> // InputQEType *bdryEdge = ComputeLongestBorder();
>>
>> // Segfault:
>> // itkBoarderQuadEdgeMeshFilter.hxx:75
>> // InputIteratorGeom it = bdryEdge->BeginGeomLnext();
>>
>> return EXIT_SUCCESS;
>>
>> }
>>
>>
>>
>>
>> --
>> View this message in context: http://itk-users.7.n7.nabble.com/Segfault-in-Wiki-Example-QuadEdgeMeshParameterizationFilter-tp35771.html
>> Sent from the ITK - Users mailing list archive at Nabble.com.
>> _____________________________________
>> Powered by www.kitware.com
>>
>> Visit other Kitware open-source projects at
>> http://www.kitware.com/opensource/opensource.html
>>
>> Kitware offers ITK Training Courses, for more information visit:
>> http://www.kitware.com/products/protraining.php
>>
>> Please keep messages on-topic and check the ITK FAQ at:
>> http://www.itk.org/Wiki/ITK_FAQ
>>
>> Follow this link to subscribe/unsubscribe:
>> http://public.kitware.com/mailman/listinfo/insight-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/community/attachments/20150608/fec4d7fb/attachment-0001.html>
-------------- next part --------------
_____________________________________
Powered by www.kitware.com
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Kitware offers ITK Training Courses, for more information visit:
http://www.kitware.com/products/protraining.php
Please keep messages on-topic and check the ITK FAQ at:
http://www.itk.org/Wiki/ITK_FAQ
Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/insight-users
More information about the Community
mailing list