[Insight-users] Mean Curvature Calculation in Level Set
Sah Rayman
sahrayman at yahoo . com
Thu, 20 Nov 2003 17:35:09 -0800 (PST)
Hi Josh,
In itkLevelSetFunction.txx, Line 158-184 are:
template <class TImageType>
typename LevelSetFunction<TImageType>::ScalarValueType
LevelSetFunction<TImageType>::ComputeMeanCurvature(
const NeighborhoodType &itkNotUsed(neighborhood),
const FloatOffsetType &itkNotUsed(offset),
GlobalDataStruct *gd)
{
// Calculate the mean curvature
ScalarValueType curvature_term =
NumericTraits<ScalarValueType>::Zero;
unsigned int i, j;
for (i = 0; i < ImageDimension; i++)
{
for(j = 0; j < ImageDimension; j++)
{
curvature_term -= gd->m_dx[i] * gd->m_dx[j] *
gd->m_dxy[i][j];
if(j != i)
{
curvature_term += gd->m_dxy[j][j] *
gd->m_dx[i] * gd->m_dx[i];
}
}
}
return (curvature_term / gd->m_GradMagSqr );
}
Let's say ImageDimension==2,
Then before divided by gd->m_GradMagSqr:
curvature_term =
-dx[0]*dx[0]*dxy[0][0]
-dx[0]*dx[1]*dxy[0][1] + dx[0]*dx[0]*dxy[1][1]
-dx[1]*dx[0]*dxy[1][0] + dx[1]*dx[1]*dxy[0][0]
-dx[1]*dx[1]*dxy[1][1]
According to Sethian's equation, the result should
just be:
curvature_term =
-dx[0]*dx[1]*dxy[0][1] + dx[0]*dx[0]*dxy[1][1]
-dx[1]*dx[0]*dxy[1][0] + dx[1]*dx[1]*dxy[0][0]
Please confirm if that is the case for you.
Thanks.
Sah
--- Joshua Cates <cates at sci . utah . edu> wrote:
> Hello Sah,
>
> The default curvature calculation in the Level Set
> function is mean
> curvature. I cannot find the line of code that you
> reference. Look in
> the file itkLevelSetFunction.txx, method
> ComputeMeanCurvature(). The
> terms for the calculation come from the precomputed
> Hessian matrix.
>
> Josh.
>
> ______________________________
> Josh Cates
> Scientific Computing and Imaging Institute
> University of Utah
> Email: cates at sci . utah . edu
> Phone: (801) 587-7697
> URL: http://www . sci . utah . edu/~cates
>
>
> On Fri, 14 Nov 2003, Sah Rayman wrote:
>
> > I am looking at function:
> >
> > template <class TImageType>
> > typename
> LevelSetFunction<TImageType>::ScalarValueType
> >
> LevelSetFunction<TImageType>::ComputeMeanCurvature()
> >
> > in itkLevelSetFunction.txx, line 158 (ITK 1.4)
> >
> > When I compared that to Sethian's "Level Set
> Methods
> > and Fast Marching Methods", 2ndEd, pp. 70, Eq.
> 6.36, I
> > found that the C++ implementation contain some
> extra
> > terms in nominator:
> >
> > -dx[0]*dx[0]*dxy[0][0]-dx[1]*dx[1]*dxy[1][1]-...
> >
> > Can someone tell me what are these additional
> terms
> > for? Is the result still mean curvature? Any
> reference
> > for that?
> >
> >
> > __________________________________
> > Do you Yahoo!?
> > Protect your identity with Yahoo! Mail
> AddressGuard
> > http://antispam . yahoo . com/whatsnewfree
> > _______________________________________________
> > Insight-users mailing list
> > Insight-users at itk . org
> > http://www . itk . org/mailman/listinfo/insight-users
> >
>
> _______________________________________________
> Insight-users mailing list
> Insight-users at itk . org
> http://www . itk . org/mailman/listinfo/insight-users
__________________________________
Do you Yahoo!?
Free Pop-Up Blocker - Get it now
http://companion . yahoo . com/