[Insight-users] Segmentation of 3D image (itk)
Luis Ibanez
luis.ibanez at kitware.com
Sat Mar 24 17:58:34 EDT 2012
On Sat, Mar 24, 2012 at 2:19 PM, Abder-Rahman Ali
<abder.rahman.ali at gmail.com> wrote:
>
> So, in your modifications, I should REMOVE what has "-" and ADD what has
> "+".
>
Yes.
This is the typical format that you will
see when you do a diff between two files.
> * For, the following:
>
> smoothing->SetTimeStep( 0.025 );
>
> Why did you add ( 0.025 ) and not ( 0.125 )
>
Because when you go from 2D to 3D the computation
of the time step in the smoothing filter needs to be
adjusted. Otherwise you will get a warning about the
time step at 0.125 being unstable in 3D.
> * For the following:
>
>
> - const InternalPixelType lowerThreshold = atof( argv[5] );
> - const InternalPixelType upperThreshold = atof( argv[6] );
> + const InternalPixelType lowerThreshold = atof( argv[6] );
> + const InternalPixelType upperThreshold = atof( argv[7] );
>
> Why had you to remove the first two lines and add [6] & [7]?
>
Because the insertion of the seedZ argument
in the command line displaces the two last
arguments by one.
> Thanks a lot, and appreciate your kind efforts.
>
> Abder-Rahman
>
>
>
>
>
>
> On Sat, Mar 24, 2012 at 4:56 PM, Luis Ibanez <luis.ibanez at kitware.com>
> wrote:
>>
>> Hi Abder-Rahman,
>>
>> Please find below the diffs that you have to apply to
>> this example in order to make it work for 3D images.
>>
>>
>> Thanks
>>
>>
>> Luis
>>
>>
>> diff --git a/Examples/Segmentation/ConnectedThresholdImageFilter.cxx
>> b/Examples/Segmentation/ConnectedThresholdImageFilter.cxx
>> index 5fdfb24..38ef54c 100644
>> --- a/Examples/Segmentation/ConnectedThresholdImageFilter.cxx
>> +++ b/Examples/Segmentation/ConnectedThresholdImageFilter.cxx
>> @@ -95,11 +95,11 @@
>>
>> int main( int argc, char *argv[])
>> {
>> - if( argc < 7 )
>> + if( argc < 8 )
>> {
>> std::cerr << "Missing Parameters " << std::endl;
>> std::cerr << "Usage: " << argv[0];
>> - std::cerr << " inputImage outputImage seedX seedY lowerThreshold
>> upperThreshold" << std::endl;
>> + std::cerr << " inputImage outputImage seedX seedY seedZ
>> lowerThreshold upperThreshold" << std::endl;
>> return 1;
>> }
>>
>> @@ -114,7 +114,7 @@ int main( int argc, char *argv[])
>>
>> // Software Guide : BeginCodeSnippet
>> typedef float InternalPixelType;
>> - const unsigned int Dimension = 2;
>> + const unsigned int Dimension = 3;
>> typedef itk::Image< InternalPixelType, Dimension > InternalImageType;
>> // Software Guide : EndCodeSnippet
>>
>> @@ -217,7 +217,7 @@ int main( int argc, char *argv[])
>>
>> // Software Guide : BeginCodeSnippet
>> smoothing->SetNumberOfIterations( 5 );
>> - smoothing->SetTimeStep( 0.125 );
>> + smoothing->SetTimeStep( 0.025 );
>> // Software Guide : EndCodeSnippet
>>
>>
>> @@ -235,8 +235,8 @@ int main( int argc, char *argv[])
>> //
>> // Software Guide : EndLatex
>>
>> - const InternalPixelType lowerThreshold = atof( argv[5] );
>> - const InternalPixelType upperThreshold = atof( argv[6] );
>> + const InternalPixelType lowerThreshold = atof( argv[6] );
>> + const InternalPixelType upperThreshold = atof( argv[7] );
>>
>> // Software Guide : BeginCodeSnippet
>> connectedThreshold->SetLower( lowerThreshold );
>> @@ -275,6 +275,7 @@ int main( int argc, char *argv[])
>>
>> index[0] = atoi( argv[3] );
>> index[1] = atoi( argv[4] );
>> + index[2] = atoi( argv[5] );
>>
>>
>> // Software Guide : BeginCodeSnippet
>>
>>
>>
>> ---------------------------------
>> On Sat, Mar 24, 2012 at 11:14 AM, Abder-Rahman Ali
>> <abder.rahman.ali at gmail.com> wrote:
>> > Hello,
>> >
>> > I just have a question and thought you may have an idea on it.
>> >
>> > Inside the `InsightToolkit` directory there is the
>> > `Examples/Segmentation/ConnectedThresholdImageFilter.xx` file.
>> >
>> > Now, I want to make it operate on a three dimensional image. In this
>> > case,
>> > will the changes that I have to do bee applied to those lines of code
>> > (lines
>> > 102-110):
>> >
>> > int main( int argc, char *argv[])
>> > {
>> > if( argc < 7 )
>> > {
>> > std::cerr << "Missing Parameters " << std::endl;
>> > std::cerr << "Usage: " << argv[0];
>> > std::cerr << " inputImage outputImage seedX seedY
>> > lowerThreshold
>> > upperThreshold" << std::endl;
>> > return 1;
>> > }
>> >
>> > And, in order to do that, should I add the following `seedZ` to:
>> >
>> > std::cerr << " inputImage outputImage seedX seedY lowerThreshold
>> > upperThreshold" << std::endl;
>> >
>> > And, what change should I perform to the arguments in this case?
>> >
>> > Thanks a lot and apologize for my disturbance.
>> >
>> > Abder-Rahman
>> >
>
>
More information about the Insight-users
mailing list