<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ks_c_5601-1987">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.6944.0">
<TITLE>Gradient Anisotropic Diffusion Filter with 3D Ultrasound data</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/rtf format -->
<BR>

<P><SPAN LANG="ko"><FONT COLOR="#0000FF" SIZE=2 FACE="±¼¸²"></FONT>&nbsp;<FONT COLOR="#0000FF" SIZE=2 FACE="Arial">Hello, everyone,</FONT></SPAN>
</P>

<P><SPAN LANG="ko"><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&nbsp;I test Gradient Anisotropic Diffusion Filter with our 3D Ultrasound data, but there was not&nbsp; any change in 3D Ultrasound data.</FONT></SPAN></P>

<P><SPAN LANG="ko"><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&nbsp;What's wrong? Could you check following code, please?</FONT></SPAN>
</P>

<P><SPAN LANG="ko"><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&nbsp;Thank you.</FONT></SPAN>

<BR><SPAN LANG="ko"><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">&nbsp;----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</FONT></SPAN></P>

<P><SPAN LANG="ko"><FONT SIZE=2 FACE="Arial">&nbsp;/* pVolData : Pointer of 8bit Volume Data Buffer ( ex: size - 312 x 84 x 44 ) </FONT></SPAN>

<BR><SPAN LANG="ko"><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp; pOutoutData : Pointer of 8bit Output Data Buffer (same size of pVolData buffer)</FONT></SPAN>

<BR><SPAN LANG="ko"><FONT SIZE=2 FACE="Arial">*/</FONT></SPAN>

<BR><SPAN LANG="ko"><FONT SIZE=2 FACE="Arial">void DiffusionFilter( unsigned char *pVolData, unsigned char *pOutputData, int xsize, int ysize, int zsize )</FONT></SPAN>

<BR><SPAN LANG="ko"><FONT SIZE=2 FACE="Arial">{</FONT></SPAN>

<BR><SPAN LANG="ko">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Arial">const unsigned int volume_size = xsize * ysize * zsize;</FONT></SPAN>
</P>

<P><SPAN LANG="ko">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Arial">typedef unsigned char PixelType;</FONT></SPAN>
</P>

<P><SPAN LANG="ko">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Arial">const unsigned int Dimension = 3;</FONT></SPAN>

<BR><SPAN LANG="ko">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>

<BR><SPAN LANG="ko">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Arial">typedef itk::Image&lt; PixelType, Dimension &gt; ImageType;</FONT></SPAN>
</P>

<P><SPAN LANG="ko">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Arial">typedef itk::ImportImageFilter&lt; PixelType, Dimension &gt;&nbsp; ImportFilterType;</FONT></SPAN>
</P>

<P><SPAN LANG="ko">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Arial">/*-------- Set Input Data with ImportFilter --------*/</FONT></SPAN>

<BR><SPAN LANG="ko">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Arial">ImportFilterType::Pointer importFilter = ImportFilterType::New();</FONT></SPAN>
</P>

<P><SPAN LANG="ko">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Arial">ImportFiterType::SizeType size; </FONT></SPAN>

<BR><SPAN LANG="ko">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Arial">size[0] = xsize;</FONT></SPAN>

<BR><SPAN LANG="ko">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Arial">size[1] = ysize;</FONT></SPAN>

<BR><SPAN LANG="ko">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Arial">size[2] = zsize;</FONT></SPAN>
</P>

<P><SPAN LANG="ko">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Arial">ImportFilterType::IndexType start;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN>

<BR><SPAN LANG="ko">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Arial">start.Fill(0);&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN>
</P>

<P><SPAN LANG="ko">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Arial">ImportFIlterType::RegionType region;</FONT></SPAN>

<BR><SPAN LANG="ko">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Arial">region.SetIndex( start );</FONT></SPAN>

<BR><SPAN LANG="ko">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Arial">region.SetSize( size );</FONT></SPAN>
</P>

<P><SPAN LANG="ko">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Arial">importFilter-&gt;SetRegion( region );</FONT></SPAN>
</P>

<P><SPAN LANG="ko">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Arial">double origin[ Dimension ];</FONT></SPAN>

<BR><SPAN LANG="ko">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Arial">origin[0] = 0.0; origin[1] = 0.0; origin[2] = 0.0;</FONT></SPAN>
</P>

<P><SPAN LANG="ko">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Arial">importFilter-&gt;SetOrigin( origin );</FONT></SPAN>

<BR><SPAN LANG="ko">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>

<BR><SPAN LANG="ko">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Arial">double spacing[ Dimension ];</FONT></SPAN>

<BR><SPAN LANG="ko">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Arial">spacing[0] = 1.0; spacing[1] = 1.0; spacing[2] = 1.0;</FONT></SPAN>
</P>

<P><SPAN LANG="ko">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Arial">importFilter-&gt;SetSpacing( spacing );</FONT></SPAN>
</P>

<P><SPAN LANG="ko">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Arial">importFilter-&gt;SetImportPointer( pVolData, volume_size, false );</FONT></SPAN>
</P>

<P><SPAN LANG="ko"><FONT SIZE=2 FACE="Arial">&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*------------Apply Gradient Anisotropic Diffusion Filter to Input Data ---------------*/</FONT></SPAN>

<BR><SPAN LANG="ko">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Arial">typedef itk::Image&lt; PixelType, Dimension &gt;&nbsp;&nbsp; InputImageType;</FONT></SPAN>

<BR><SPAN LANG="ko">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Arial">typedef itk::Image&lt; PixelType, Dimension &gt;&nbsp;&nbsp; OutputImageType;</FONT></SPAN>
</P>

<P><SPAN LANG="ko">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Arial">typedef itk::GradientAnisotropicDiffusionImageFilter&lt; InputImageType, OutputImageType &gt;&nbsp; FilterType;</FONT></SPAN>

<BR><SPAN LANG="ko">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Arial">FilterType::Pointer filter = FilterType::New(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN>
</P>

<P><SPAN LANG="ko"><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; filter-&gt;SetInput( importFilter-&gt;GetOutput() );</FONT></SPAN>
</P>

<P><SPAN LANG="ko">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Arial">const unsigned int numberOfIterations = 4;</FONT></SPAN>

<BR><SPAN LANG="ko">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Arial">const double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; timeStep = 0.125;</FONT></SPAN>

<BR><SPAN LANG="ko">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Arial">const double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conductance = 1.0;&nbsp;&nbsp; </FONT></SPAN>

<BR><SPAN LANG="ko">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>

<BR><SPAN LANG="ko">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Arial">filter-&gt;SetNumberOfIterations( numberOfIterations );</FONT></SPAN>

<BR><SPAN LANG="ko">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Arial">filter-&gt;SetTimeStep( timeStep );</FONT></SPAN>

<BR><SPAN LANG="ko">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Arial">filter-&gt;SetConductanceParameter( conductance );</FONT></SPAN>

<BR><SPAN LANG="ko"><FONT SIZE=2 FACE="Arial">&nbsp; </FONT></SPAN>

<BR><SPAN LANG="ko">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Arial">filter-&gt;Update();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* take so long time....*/</FONT></SPAN>
</P>

<P><SPAN LANG="ko"><FONT SIZE=2 FACE="Arial">/*</FONT></SPAN>

<BR><SPAN LANG="ko">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Arial">typedef itk::RescaleIntensityImageFilter&lt;PixelType, PixelType &gt; RescaleFilterType;</FONT></SPAN>
</P>

<P><SPAN LANG="ko">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Arial">&nbsp; RescaleFilterType::Pointer rescaler = RescaleFilterType::New();</FONT></SPAN>

<BR><SPAN LANG="ko">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Arial">&nbsp; rescaler-&gt;SetOutputMinimum(&nbsp;&nbsp; 0 );</FONT></SPAN>

<BR><SPAN LANG="ko">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Arial">&nbsp; rescaler-&gt;SetOutputMaximum( 255 );&nbsp;&nbsp;&nbsp; </FONT></SPAN>
</P>

<P><SPAN LANG="ko">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Arial">rescaler-&gt;SetInput( filter-&gt;GetOutput() );</FONT></SPAN>

<BR><SPAN LANG="ko"><FONT SIZE=2 FACE="Arial">*/</FONT></SPAN>

<BR><SPAN LANG="ko">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2 FACE="Arial">memcpy( pOutputData, filter-&gt;GetOutput()-&gt;GetBufferPointer(), sizeof(unsigned char)*volume_size );&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN>

<BR><SPAN LANG="ko"><FONT SIZE=2 FACE="±¼¸²">}</FONT></SPAN>
</P>

</BODY>
</HTML>