[Insight-users] WG: Abnormal termination error with erotion filter!!!

salah salah at gris . uni-tuebingen . de
Fri, 30 May 2003 18:14:08 +0200


I am almost sure, it is a bug in the erosion filter.

It works fine many times as long as you feed it
with images of the same dimensions. It will terminate
the program abnormally if you re-run it with an image
of new dimensions.

Could anybody please verify this...
Zein

>  -----Urspr=FCngliche Nachricht-----
> Von: 	salah =20
> Gesendet:	Freitag, 30. Mai 2003 16:34
> An:	'Insight-users at public . kitware . com'
> Cc:	'luis . ibanez at kitware . com'
> Betreff:	WG: Abnormal termination error with erotion filter!!!
>=20
>=20
>=20
> Hello all,
>=20
> I am using the GrayscaleFunctionErodeImageFilter.=20
> exactly as show in this piece of code
> =
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D
> //  this piece is in the header file of my class
>    typedef itk::GrayscaleFunctionErodeImageFilter<InputImageType,
>                                    ImageType, KernelType>   =
InputErotionFilterType;
>    InputErotionFilterType::Pointer                         m_Eroder;=20
>=20
> // in the constructor of my class=20
>   m_Eroder =3D InputErotionFilterType::New();  =20
>   =20
> // in the erosion method of my class
>    KernelType::SizeType ballSize;
>    KernelType ball;                    // Structuring element
>    ballSize[0] =3D rad;      ballSize[1] =3D rad;      ballSize[2] =3D =
rad;
>    ball.SetRadius(ballSize);
>    ball.CreateStructuringElement();
>=20
>    m_Eroder->SetInput( m_InputImage );
>    m_Eroder->SetKernel( ball );
>    m_Eroder->Update();
>    m_ErodedImage =3D m_Eroder->GetOutput();
> =
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
>=20
> There is one instant of the erosion filter (m_Eroder) in my
> appliation. It is created in the constractor of the base class
> of my application. The erosion method is called by pressing
> a button in the UI.
>=20
> I have the following problem with this combination:
>=20
> The erosion filter works fine when I call it for the first time.
> It also works fine if I change the radius of the structuring
> element and re-run the filter on the same image. Moreover,
> it works fine if feed it with a new input image of the same=20
> dimensions of the first image. BUT, if I feed it with an image
> of some new different dimensions. The program exits with
> an abnormal termination error message!!!!!
>=20
> I tried to trace the program. It crashes exactly at the=20
> m_Eroder->Update();
> statement....
>=20
> Did anybody have such a problem?? Could anybody please
> guess what it could be??=20
>=20
> I think the problem COULD be solved if there WERE some way
> to "RESET" the instance of the filter, of cource without deleting
> it or re-calling ::New();
>=20
>=20
> Thanks a lot ,,,,
>=20
> Zein
>=20
> =
->8<------------->8<------------->8<------------->8<------------->8<-----=
-------->8<-
> Zein I. Salah=20
> University of T=FCbingen, WSI-GRIS, Sand 14, 72076 T=FCbingen=20
> Email: salah at gris . uni-tuebingen . de
> Tel.: (07071) 29 75465 (GRIS),           Fax: (07071) 29 54 66
>=20