[Insight-users] ImageSource->GetOutput() type
Benjamin King
king . benjamin at mh-hannover . de
Thu, 28 Aug 2003 10:50:36 +0100
------------065IJz5Pgc4QrUW4IYQgb8
Content-Type: text/plain; charset=iso-8859-15; format=flowed
Hi all,
I want to wrap a part of my pipeline in a function, but I'm troubled by the
difference between itk::Image::Pointer and itk::Image*.
My function looks like (also see the attached code):
ImageType::Pointer someFunction(ImageType* image);
I chose the argument's type like that because according to the
documentation all itk::ImageSources return a plain pointer with
GetOutput(). The return value's type is used in accordance to a previous
post by Bill (http://www . itk . org/pipermail/insight-users/2003-
June/004124.html).
When I run the attached code, the image returned by someFunction
is an empty image, even after I Update()d it.
In a related context, I have functions like
double returnSomeFeature(ImageType* image);
that work fine for filter outputs but not for "handcrafted" images:
// Compiles
double feature1 = returnSomeFeature(imageReader->GetOutput);
// Doesn't compile
ImageType::Pointer image = ImageType::New();
image->SetLargetsPossibleRegion(....)
image->SetBufferedRegion(....)
image->Allocate(....)
double feature2 = returnSomeFeature(image);
The attached code doesn't demonstrate this, but I guess the problems
are related in some way.
Can someone point out the problem or reproduce the error?
Best regards,
Benjamin
--
Benjamin King
Institut für Medizinische Informatik
Medizinische Hochschule Hannover
Tel.: +49 511 532-2663
------------065IJz5Pgc4QrUW4IYQgb8
Content-Disposition: attachment;
filename="DebugReturnValue.cpp"
Content-Type: application/octet-stream;
name="DebugReturnValue.cpp"
Content-Transfer-Encoding: Base64
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSAiaXRrVGhyZXNob2xkSW1h
Z2VGaWx0ZXIuaCIKI2luY2x1ZGUgIml0a1JhbmRvbUltYWdlU291cmNlLmgi
CiNpbmNsdWRlICJpdGtJbWFnZS5oIgoKLy8gVGhlIGZ1bmN0aW9uIHRha2Vz
IGEgcGxhaW4gcG9pbnRlciB0byBhbiBpbWFnZSBiZWNhdXNlIHRoYXQncyB3
aGF0Ci8vIGl0azo6SW1hZ2VTb3VyY2U6OkdldE91dHB1dCgpIHJldHVybnMK
Ly8gSXQgcmV0dXJucyBhbiBJbWFnZVR5cGU6OlBvaW50ZXIgYmVjYXVzZSBJ
J2QgbGlrZSB0aGUgdGhyZXNob2xkIG9iamVjdAovLyB0byBwZXJzaXN0IHVu
dGlsIGl0J3Mgb3V0cHV0IGlzbid0IG5lZWRlZCBhbnltb3JlCnRlbXBsYXRl
IDxjbGFzcyBJbWFnZVR5cGU+CnR5cGVuYW1lIEltYWdlVHlwZTo6UG9pbnRl
ciBzb21lRnVuY3Rpb24oSW1hZ2VUeXBlKiBpbWFnZSkgewogIHR5cGVkZWYg
aXRrOjpUaHJlc2hvbGRJbWFnZUZpbHRlcjxJbWFnZVR5cGU+IFRyZXNob2xk
VHlwZTsKICB0eXBlbmFtZSBUcmVzaG9sZFR5cGU6OlBvaW50ZXIgdGhyZXNo
b2xkID0gVHJlc2hvbGRUeXBlOjpOZXcoKTsKCiAgdGhyZXNob2xkLT5TZXRJ
bnB1dChpbWFnZSk7CiAgcmV0dXJuIHRocmVzaG9sZC0+R2V0T3V0cHV0KCk7
Cn0KCmludCBtYWluKCkgewogIHR5cGVkZWYgaXRrOjpJbWFnZTx1bnNpZ25l
ZCBzaG9ydCwgMz4gSW1hZ2VUeXBlOwogIHR5cGVkZWYgaXRrOjpSYW5kb21J
bWFnZVNvdXJjZTxJbWFnZVR5cGU+IFJhbmRvbVR5cGU7CgogIFJhbmRvbVR5
cGU6OlBvaW50ZXIgcmFuZG9tID0gUmFuZG9tVHlwZTo6TmV3KCk7CiAgdW5z
aWduZWQgbG9uZyBzaXplW10gPSB7MTUsMTUsMTV9OwogIHJhbmRvbS0+U2V0
U2l6ZShzaXplKTsKICByYW5kb20tPlNldE1pbigwKTsKICByYW5kb20tPlNl
dE1heCgxMDAwKTsKCiAgcmFuZG9tLT5VcGRhdGUoKTsKICByYW5kb20tPkdl
dE91dHB1dCgpLT5HZXRMYXJnZXN0UG9zc2libGVSZWdpb24oKS5QcmludChz
dGQ6OmNvdXQpOwoKICAvLyBIaWRlIGEgcGFydCBvZiB0aGUgcGlwZWxpbmUg
aW4gYSB0ZW1wbGF0ZWQgZnVuY3Rpb24KICBJbWFnZVR5cGU6OlBvaW50ZXIg
aW1hZ2UgPSBzb21lRnVuY3Rpb24ocmFuZG9tLT5HZXRPdXRwdXQoKSk7CiAg
aW1hZ2UtPlVwZGF0ZSgpOwogIC8vIFRoZSBzaXplIHNob3VsZCBiZSAoMTUs
IDE1LCAxNSkKICBpbWFnZS0+R2V0TGFyZ2VzdFBvc3NpYmxlUmVnaW9uKCku
UHJpbnQoc3RkOjpjb3V0KTsKCiAgLy8gVGhlIHNhbWUgd2l0aG91dCB0aGUg
ZnVuY3Rpb24gd3JhcHBpbmcKICB0eXBlZGVmIGl0azo6VGhyZXNob2xkSW1h
Z2VGaWx0ZXI8SW1hZ2VUeXBlPiBUcmVzaG9sZFR5cGU7CiAgVHJlc2hvbGRU
eXBlOjpQb2ludGVyIHRocmVzaG9sZCA9IFRyZXNob2xkVHlwZTo6TmV3KCk7
CiAgdGhyZXNob2xkLT5TZXRJbnB1dChyYW5kb20tPkdldE91dHB1dCgpKTsK
ICB0aHJlc2hvbGQtPkdldE91dHB1dCgpLT5VcGRhdGUoKTsKICAvLyBUaGUg
c2l6ZSBzaG91bGQgYmUgKDE1LCAxNSwgMTUpCiAgdGhyZXNob2xkLT5HZXRP
dXRwdXQoKS0+R2V0TGFyZ2VzdFBvc3NpYmxlUmVnaW9uKCkuUHJpbnQoc3Rk
Ojpjb3V0KTsKfQo=
------------065IJz5Pgc4QrUW4IYQgb8--