[Insight-users] Signed Danielsson
Luis Ibanez
luis.ibanez at kitware.com
Tue Oct 25 00:27:09 EDT 2005
Hi Daniel,
I tried to see your images in the FTP directory but
the server doesn't seem to be in its best shape.
Could you post the images in a web page ?
What method are you using for measuring the values
of the output distance map ?
You may want to consider loading it in
Volview www.volview.com
ParaView www.paraview.org
or with the ImageViewer in InsightApplications.
Please let us know,
Thanks
Luis
-------------------------
Einstein, Daniel R wrote:
> Hi Zach,
>
> Thanks for the reply. Try this:
>
>
> ftp://ftp.radiology.uiowa.edu/skabilan/SignedDanielsson
>
> username: guestftp
> password:go_hawks
>
> Does it matter if the input image is unsigned or not?
>
> Dan
>
>
> Daniel R Einstein, PhD
> Biological Monitoring and Modeling
> Pacific Northwest National Laboratory
> P.O. Box 999; MSIN P7-58
> Richland, WA 99352
> Tel: 509/ 376-2924
> Fax: 509/376-9064
> daniel.einstein at pnl.gov
>
>
> -----Original Message-----
> From: Zachary Pincus [mailto:zpincus at stanford.edu]
> Sent: Thursday, October 20, 2005 9:58 AM
> To: Einstein, Daniel R
> Cc: insight-users at itk.org
> Subject: Re: [Insight-users] Signed Danielsson
>
> The FTP server doesn't seem to be working particularly well -- the FTP
> data port (as opposed to the control port) seems to be blocked.
> Or perhaps it's a permissions issue. I've tried it with several clients
> in several locations where I know FTP to be working otherwise. Can you
> post to a web server somewhere?
>
> In general, I suggest reviewing the doxygen man pages / headers for the
> signed Danielsson filter and it's unsigned relative to make sure you
> understand the parameters and are setting them correctly. Also, try to
> see if you can compute an un-signed distance map on your input. Finally,
> as per ITK level-set convention, the "inside" of the signed distance map
> will be negative and "outside" regions will be positive.
>
> If you could describe in a bit more detail your inputs and outputs (or
> if you could post them to the web) I'll try to help more.
>
> Zach
>
>
> On Oct 20, 2005, at 11:01 AM, Einstein, Daniel R wrote:
>
>
>>Hello friends,
>>
>>I am trying to compute the Euclidean distance map on a binary volume
>>and am getting weird results.
>>
>>Data is available at ftp://ftp.pnl.gov/outgoing/SignedDanielsson
>>
>>See Screenshot.png for a look at what the cross section looks like.
>>This is a simplification, but basically the volume is a cylinder of
>>that cross-section. ScreenShot2.png shows the result of the Signed
>>Danielsson Map - not what I expected. I expected zero to be the
>>border; negative to be 'outside'; and positive to be 'inside'. Sort of
>
>
>>like and image within an image. Reduced.mha is the header and
>>reduced.raw.zip is the image. It is a binary image of 1 and 11 - I
>>pass the image as floats to the itkSignedDanielssonFilter. Am I
>>expecting the wrong thing or doing it wrong.
>>
>>Any help would be greatly appreciated.
>>
>>Dan
>>
>>See code snippet below.
>>
>>//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>++++++++++++
>>// ITK Signed Danielsson Distance Map
>>//
>>void ThreeDFilters::distanceFilter(float *ddvimage, int xdim, int
>>ydim, int zdim,
>> int numiter, QApplication *app)
>>{ // // //
>>**********************************************************************
>>*
>>// Preliminaries to copy the ddv array into an ITK Image
>>type *
>>//
>>**********************************************************************
>>*
>>//
>>// Pass the dimensions and type of ddv array
>> typedef float PixelType;
>> const unsigned int Dimension = 3;
>> typedef itk::Image< PixelType, Dimension > ImageType;
>> typedef itk::Image< float, 3 > ImageType;
>>
>>// image origin
>> float ox = 0.0;
>> float oy = 0.0;
>> float oz = 0.0;
>>// pixel spacing
>> float dx = 1.0;
>> float dy = 1.0;
>> float dz = 1.0;
>>
>> ImageType::Pointer itkimage = ImageType::New();
>> ImageType::SizeType size; size[0] = xdim; size[1] = ydim;
>> size[2] = zdim;
>> ImageType::IndexType start; start[0] = 0; start[1] = 0;
>> start[2] = 0;
>> ImageType::RegionType region; region.SetSize( size );
>>region.SetIndex( start ); itkimage->SetRegions( region);
>> itkimage->Allocate();
>> double spacing[3]; spacing[0] = dx; spacing[1] = dy;
>> spacing[2] = dz; itkimage->SetSpacing( spacing );
>> double origin[3]; origin[0] = ox; origin[1] = oy;
>> origin[2] = oz; itkimage->SetOrigin( origin );
>> typedef itk::ImageRegionIterator< ImageType> IteratorType;
>>IteratorType it( itkimage, region ); it.GoToBegin(); float *
>>data = ddvimage; while( ! it.IsAtEnd() ) { it.Set
>>( *data); ++it; ++data; }
>>
>>// ****************************************************************
>>// End preliminaries *
>>// ****************************************************************
>>//
>>// typedef itk::RescaleIntensityImageFilter<
>>// ImageType, ImageType > preRescaleFilterType;
>>// preRescaleFilterType::Pointer prerescaler =
>>preRescaleFilterType::New();
>>// prerescaler->SetOutputMinimum( 0 );
>>// prerescaler->SetOutputMaximum( 255 ); // prerescaler->SetInput(
>>itkimage ); //
>>// SIGNED DISTANCE MAP WITH AUTOMATIC RESCALING
>> typedef float OutputPixelType;
>> typedef itk::Image< OutputPixelType, 3 > OutputImageType;
>> typedef itk::SignedDanielssonDistanceMapImageFilter<
>> ImageType,
>> OutputImageType >
>>FilterType;
>> FilterType::Pointer filter = FilterType::New();
>> filter->SetInput( itkimage );
>>
>> typedef itk::RescaleIntensityImageFilter<
>> OutputImageType, OutputImageType > RescaleFilterType;
>> RescaleFilterType::Pointer rescaler = RescaleFilterType::New();
>> rescaler->SetOutputMinimum( 0L );
>> rescaler->SetOutputMaximum( 65535L );
>> rescaler->SetInput( filter->GetOutput() ); // // //
>>**************************************************************
>>// End Filter *
>>// **************************************************************
>>//
>>// **************************************************************
>>// Begin Conclusion: This writes the image back to the local *
>>// buffer and should be written as a generic callable function * //
>>**************************************************************
>>//
>> PixelType* pixelData= static_cast<PixelType* >(ddvimage); const
>>bool filterWillDeleteTheInputBuffer = false; const unsigned int
>>totalNumberOfPixels = xdim*ydim*zdim; rescaler->GetOutput()-
>>
>>>GetPixelContainer()->SetImportPointer(pixelData,
>>
>>totalNumberOfPixels,filterWillDeleteTheInputBuffer); rescaler-
>>
>>>GetOutput()->Allocate(); rescaler->Update();
>>
>>//
>>//
>>printf("done ITK Signed Danielsson Distance Map\n");
>> if ( pd ) {
>> delete pd;
>> QApplication::restoreOverrideCursor();
>> }
>>
>>}
>>Daniel R Einstein, PhD
>>Biological Monitoring and Modeling
>>Pacific Northwest National Laboratory
>>P.O. Box 999; MSIN P7-58
>>Richland, WA 99352
>>Tel: 509/ 376-2924
>>Fax: 509/376-9064
>>daniel.einstein at pnl.gov
>>
>>
>>
>>Daniel R Einstein, PhD
>>Biological Monitoring and Modeling
>>Pacific Northwest National Laboratory
>>P.O. Box 999; MSIN P7-58
>>Richland, WA 99352
>>Tel: 509/ 376-2924
>>Fax: 509/376-9064
>>daniel.einstein at pnl.gov
>>
>>
>>_______________________________________________
>>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
>
>
More information about the Insight-users
mailing list