[iso2mesh-users] v2s generate inappropriate surface mesh

301 views
Skip to first unread message

김동현

unread,
Sep 25, 2011, 7:19:41 PM9/25/11
to iso2mes...@googlegroups.com
Hi all,

when i generated surface mesh from 3d volume image using v2s, it result inappropriate surface mesh.

3d volume image is 3d scalp image, I've attached this result as image



==============================================
here is a part of code
[vol_m M] = load_mgh('/home/danielkim/Data/App/freesurfer/subjects/T1_ICBM_NORMAL/mri/T1_brain_outskull_mask.mgh');
clear opt;
opt.radbound=4;
opt.distbound=2;
[node face] = v2s(vol_m,0.48,opt);
node = sms(node,face(:,1:3),4,0.5,'lowpass');
%[node,elem,face]=surf2mesh(node,face,min(node(:,1:3))-1,max(node(:,1:3))+1,1,20,20,[],[]);
figure;plotmesh(node,face);
mesh.png

Qianqian Fang

unread,
Sep 26, 2011, 12:32:24 PM9/26/11
to iso2mes...@googlegroups.com, 김동현
On 09/25/2011 07:19 PM, 김동현 wrote:
> Hi all,
>
> when i generated surface mesh from 3d volume image using v2s, it
> result inappropriate surface mesh.

hi

By "inappropriate", were you referring to the dense cluster of nodes on
the surface?

If so, I have to say it is indeed a more "appropriate" surface than what
it looks. CGAL surface mesher produces such structures by a
process of refinement. The higher number of refinement is triggered
by strange structures, such as a single voxel connecting to the
main object by a single vertex (often called the non-manifold structures).
Because v2s asks CGAL to extract a manifold surface, together with
your other requirement such as radbound/distbound, the refinement
is required in order to satisfy all constraints.

You can change your radbound/distbound to a different value,
sometimes the cluster may disappear. Alternatively, you can use
something like "meshresample(node,face(:,1:3),0.95)" to get rid
of the dense clusters. The number 0.95 is an estimate which you
believe is the "uniform" surface node divided by the current surface
node. meshresample tends to remove the dense clusters first.

Qianqian


>
> 3d volume image is 3d scalp image, I've attached this result as image
>
>
>
> ==============================================
> here is a part of code
> [vol_m M] =
> load_mgh('/home/danielkim/Data/App/freesurfer/subjects/T1_ICBM_NORMAL/mri/T1_brain_outskull_mask.mgh');
> clear opt;
> opt.radbound=4;
> opt.distbound=2;
> [node face] = v2s(vol_m,0.48,opt);
> node = sms(node,face(:,1:3),4,0.5,'lowpass');
> %[node,elem,face]=surf2mesh(node,face,min(node(:,1:3))-1,max(node(:,1:3))+1,1,20,20,[],[]);
> figure;plotmesh(node,face);

> --
> You received this message because you are subscribed to the Google
> Groups "iso2mesh-users" group.
> To post to this group, send email to iso2mes...@googlegroups.com.
> To unsubscribe from this group, send email to
> iso2mesh-user...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/iso2mesh-users?hl=en.

The information in this e-mail is intended only for the person to whom it is
addressed. If you believe this e-mail was sent to you in error and the e-mail
contains patient information, please contact the Partners Compliance HelpLine at
http://www.partners.org/complianceline . If the e-mail was sent to you in error
but does not contain patient information, please contact the sender and properly
dispose of the e-mail.

Daniel_Kim

unread,
Sep 27, 2011, 3:10:31 AM9/27/11
to iso2mesh-users
hi Qianqian

Thank you for response quickly, this mesh is a scalp mesh so i want to
generate mesh coarsely

when i set parameter to fit this condition, this problem occurs.

But i executed meshresample after v2s, it remove the dense cluster.

I used meshresample(node,face(:,1:3),0.85).

Over 0.85, it cannot fix it.

Donghyeon
> > load_mgh('/home/danielkim/Data/App/freesurfer/subjects/T1_ICBM_NORMAL/mri/T 1_brain_outskull_mask.mgh');
> > clear opt;
> > opt.radbound=4;
> > opt.distbound=2;
> > [node face] = v2s(vol_m,0.48,opt);
> > node = sms(node,face(:,1:3),4,0.5,'lowpass');
> > %[node,elem,face]=surf2mesh(node,face,min(node(:,1:3))-1,max(node(:,1:3))+1 ,1,20,20,[],[]);
> > figure;plotmesh(node,face);
> > --
> > You received this message because you are subscribed to the Google
> > Groups "iso2mesh-users" group.
> > To post to this group, send email to iso2mes...@googlegroups.com.
> > To unsubscribe from this group, send email to
> > iso2mesh-user...@googlegroups.com.
> > For more options, visit this group at
> >http://groups.google.com/group/iso2mesh-users?hl=en.
>
> The information in this e-mail is intended only for the person to whom it is
> addressed. If you believe this e-mail was sent to you in error and the e-mail
> contains patient information, please contact the Partners Compliance HelpLine athttp://www.partners.org/complianceline. If the e-mail was sent to you in error

sch...@units.it

unread,
Sep 27, 2011, 7:08:32 AM9/27/11
to iso2mes...@googlegroups.com

Hi Qianqian


I noticed that if the mesh generation fails then "h=plotmesh( ....) "
shows the last mesh successfully generated

as if an old file saved in advance was not cleared somewere

Am I right ?

it is not a big problem off course , I am just trying to figure out
the reason for a not updated figure...

thank you , gianni


----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.


Qianqian Fang

unread,
Sep 27, 2011, 7:28:18 AM9/27/11
to iso2mes...@googlegroups.com, sch...@units.it
On 09/27/2011 07:08 AM, sch...@units.it wrote:
>
> Hi Qianqian
>
>
> I noticed that if the mesh generation fails then "h=plotmesh( ....) "
> shows the last mesh successfully generated
>
> as if an old file saved in advance was not cleared somewere


perhaps you should clear your variables at the beginning of your script.


>
> Am I right ?
>
> it is not a big problem off course , I am just trying to figure out
> the reason for a not updated figure...
>
> thank you , gianni
>
>
> ----------------------------------------------------------------
> This message was sent using IMP, the Internet Messaging Program.
>
>

The information in this e-mail is intended only for the person to whom it is

Qianqian Fang

unread,
Sep 27, 2011, 8:28:58 AM9/27/11
to sch...@units.it, iso2mes...@googlegroups.com
On 09/27/2011 07:53 AM, sch...@units.it wrote:
> Qianqian,
>
> again , this is not an important issue !
>
> however I took it as a curiosity because the old image persist even if
> I close the matlab session and restart a new one
>
> I think it as to do with an opening of an old file that is not updated
> due to the failure of the new mesh generation.

hi Gianni

iso2mesh saves intermediate outputs as files under a
temporary folder (mwpath('')). You can find the details
of these files on this page (Section 2):

http://iso2mesh.sf.net/cgi-bin/index.cgi?Advanced

When calling tetgen in surf2mesh, iso2mesh is supposed
to delete the previous output files (see Line#86@surf2mesh.m).
I am not sure what happened on your windows, can you
set a break point and tell me if the files were successfully
deleted?

Qianqian

>
> regards, gianni
>
>
>
> WARNING: the license for "tetgen" is non-free and does not permit
> commercial use.
> Please use the "cgalmesh" or "cgalpoly" options where free-software is
> desired.
> is fix volume=1 maxvol=6.000000
> Opening
> C:\Users\Gianni\AppData\Local\Temp\iso2mesh-Gianni\post_vmesh.poly.
> Constructing Delaunay tetrahedralization.
> Delaunay seconds: 4.516
> Creating surface mesh.
> Perturbing vertices.
> Delaunizing segments.
> Constraining facets.
> Error: Invalid PLC.
> Two subfaces (30065, 26933, 47258) and (42730, 42746, 45893)
> are found intersecting each other.
> Hint: Use -d switch to find all intersecting facets.
> volume mesh generation is complete
>
> h =
>
> 355.0011 356.0011

> schenaASCII(64)unitsASCII(46)it

Reply all
Reply to author
Forward
0 new messages