[Insight-users] Problem with ShiftScaleImageFilter

Harri Tapio Jaalinoja harri.jaalinoja@helsinki.fi
Tue, 12 Nov 2002 15:21:27 +0200 (EET)


  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

--0-1870838566-1037106531=:20163
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
Content-ID: <Pine.OSF.4.30.0211121509301.20163@sirppi.helsinki.fi>


Hi folks,

this is related to the ImportImageFilter issue I had earlier.
Some kind of an update problem seems to bother me also with this filter,
which I want to place in the pipeline next to the ImportImageFilter.

In short, the purpose of my excercise is to try and make a little command
line tool of a single ITK filter. Read the image in using BSoft tools,
process, write output with a different name. As an example I chose the
ShiftScaleImageFilter, see attached bitkShiftScaleImageFilter.cxx.

Now, thanks to Bill Lorensen, my import is ok:
  itk::ImportImageFilter<PixelType, 3>::Pointer breader =
    itk::ImportImageFilter<PixelType, 3>::New();
  breader->SetImportPointer(data ,num, false);
  breader->Update();

  std::cerr << "Try to print a pixel from reader output..." << std::endl;
  itk::Image<PixelType, 3>::Pointer image = breader->GetOutput();
  std::cerr << image->GetPixel(index) << std::endl;
  std::cerr << "OK" << std::endl;

There are values in the breader->GetOutput() image.
---
Try to print a pixel from reader output...
-0.160718
OK
---

The next step does not work:
  // Set up the filter
  itk::ShiftScaleImageFilter<ImageType, ImageType>::Pointer ssfilter
    = itk::ShiftScaleImageFilter<ImageType, ImageType>::New();
  ssfilter->SetInput(breader->GetOutput());
  ssfilter->SetShift(100);
  ssfilter->SetScale(-5);
  ssfilter->Update();
//   ssfilter->SetInput(img);

  std::cerr << "Try to print a pixel from filter output..." << std::endl;
  itk::Image<PixelType, 3>::Pointer image2 = ssfilter->GetOutput();
  std::cerr << image2->GetPixel(index) << std::endl;
  std::cerr << "OK" << std::endl;

The output looks like this:
---
Try to print a pixel from filter output...
0
OK
---

so neither the shift nor the scale seems to have done its job, despite the
Update(). If I remove the Update(), I get a segmentation fault.

And as I mentioned earlier today, the third step, printing out the data
does not work either, I just get an empty file.

All the IO stuff in the code is basically copied from ITK examples, via
my previous tests, which at least were able to output something, so I'm at
loss as to what I might have missed here. Maybe you can spot something?

Thanks,

Harri

--0-1870838566-1037106531=:20163
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="bitkShiftScale.cxx"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.OSF.4.30.0211121508510.20163@sirppi.helsinki.fi>
Content-Description: 
Content-Disposition: ATTACHMENT; FILENAME="bitkShiftScale.cxx"

Lyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQoNCiAgUHJvZ3JhbTog
ICBJbnNpZ2h0IFNlZ21lbnRhdGlvbiAmIFJlZ2lzdHJhdGlvbiBUb29sa2l0
DQogIE1vZHVsZTogICAgJFJDU2ZpbGU6IGl0a1dhdGVyc2hlZFNlZ21lbnRh
dGlvbkV4YW1wbGUuY3h4LHYgJA0KICBMYW5ndWFnZTogIEMrKw0KICBEYXRl
OiAgICAgICREYXRlOiAyMDAyLzA4LzI1IDE1OjUyOjExICQNCiAgVmVyc2lv
bjogICAkUmV2aXNpb246IDEuOSAkDQoNCiAgQ29weXJpZ2h0IChjKSAyMDAy
IEluc2lnaHQgQ29uc29ydGl1bS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAg
U2VlIElUS0NvcHlyaWdodC50eHQgb3IgaHR0cDovL3d3dy5pdGsub3JnL0hU
TUwvQ29weXJpZ2h0Lmh0bSBmb3IgZGV0YWlscy4NCg0KICAgICBUaGlzIHNv
ZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gDQogICAgIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgDQog
ICAgIFBVUlBPU0UuICBTZWUgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2Vz
IGZvciBtb3JlIGluZm9ybWF0aW9uLg0KDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ki8NCiNpZiBkZWZpbmVkKF9NU0NfVkVSKQ0KI3ByYWdtYSB3
YXJuaW5nICggZGlzYWJsZSA6IDQ3ODYgKQ0KI2VuZGlmDQojaW5jbHVkZSA8
ZnN0cmVhbT4NCiNpbmNsdWRlICJpdGtJbXBvcnRJbWFnZUNvbnRhaW5lci5o
Ig0KI2luY2x1ZGUgIml0a0ltcG9ydEltYWdlRmlsdGVyLmgiDQojaW5jbHVk
ZSAiaXRrU2hpZnRTY2FsZUltYWdlRmlsdGVyLmgiDQojaW5jbHVkZSAiaXRr
UmF3SW1hZ2VJTy5oIg0KI2luY2x1ZGUgIml0a0ltYWdlRmlsZVJlYWRlci5o
Ig0KI2luY2x1ZGUgIml0a0ltYWdlRmlsZVdyaXRlci5oIg0KI2luY2x1ZGUg
PHN0cmluZz4NCiNpbmNsdWRlICJpdGtDb21tYW5kLmgiDQoNCiNpbmNsdWRl
IDxyd01SQy5oPg0KI2luY2x1ZGUgPHN0cmluZy5oPg0KI2luY2x1ZGUgPHN0
ZGlvLmg+DQoNCg0Kc3RhdGljIGlubGluZSB2b2lkIGRpZShzdGQ6OnN0cmlu
ZyBtZXNzYWdlKSB7IA0KICBzdGQ6OmNlcnIgPDwgImJXYXRlcnNoZWQgdjAu
MCIgPDwgc3RkOjplbmRsOw0KICBzdGQ6OmNlcnIgPDwgbWVzc2FnZSA8PCBz
dGQ6OmVuZGw7IA0KICBzdGQ6OmNlcnIgPDwgIkV4aXRpbmcuLiIgPDwgc3Rk
OjplbmRsOw0KICBleGl0KDEpOyANCn0NCg0Kc3RhdGljIGlubGluZSB2b2lk
IGRpZShzdGQ6OnN0cmluZyBtZXNzYWdlLCBpdGs6OkV4Y2VwdGlvbk9iamVj
dCBlKSB7IA0KICAgICAgbWVzc2FnZSA9ICJcbiI7DQogICAgICBtZXNzYWdl
ICs9IGUuR2V0TG9jYXRpb24oKTsNCiAgICAgIG1lc3NhZ2UgKz0gIlxuIjsN
CiAgICAgIG1lc3NhZ2UgKz0gZS5HZXREZXNjcmlwdGlvbigpOw0KICAgICAg
ZGllKG1lc3NhZ2UpOw0KfQ0KDQppbnQgbWFpbihpbnQgYXJnYywgY2hhciAq
YXJndltdKQ0Kew0KICBmbG9hdCBzaGlmdDsNCiAgZmxvYXQgc2NhbGU7DQoN
CiAgc3RkOjpzdHJpbmcgb3V0bmFtZTsNCiAgc3RkOjpzdHJpbmcgbWVzc2Fn
ZTsNCg0KICBpZiAoYXJnYyAhPSA0KQ0KICAgIGRpZSAoIlVzZTogYml0a1No
aWZ0U2NhbGUgaW5wdXRfZmlsZSBzaGlmdCBzY2FsZSIpOw0KICBzc2NhbmYo
YXJndlsyXSwgIiVmIiwgJnNoaWZ0KTsNCiAgc3NjYW5mKGFyZ3ZbM10sICIl
ZCIsICZzY2FsZSk7DQoNCiAgc3RkOjpjZXJyIDw8ICJyZWFkaW5nLi4uIiA8
PCBzdGQ6OmVuZGw7DQogIEJpbWFnZSogcCA9IHJlYWRfaW1nKGFyZ3ZbMV0s
IDEsIC0xKTsNCi8vICAgc3RkOjpjZXJyIDw8ICJkb25lISIgPDwgc3RkOjpl
bmRsOw0KLy8gICBzdGQ6OmNlcnIgPDwgcC0+eCA8PCBzdGQ6OmVuZGw7DQov
LyAgIHN0ZDo6Y2VyciA8PCBwLT55IDw8IHN0ZDo6ZW5kbDsNCi8vICAgc3Rk
OjpjZXJyIDw8IHAtPnogPDwgc3RkOjplbmRsOw0KLy8gICBzdGQ6OmNlcnIg
PDwgcC0+YyA8PCBzdGQ6OmVuZGw7DQovLyAgIHN0ZDo6Y2VyciA8PCBwLT5t
aW4gPDwgc3RkOjplbmRsOw0KLy8gICBzdGQ6OmNlcnIgPDwgcC0+bWF4IDw8
IHN0ZDo6ZW5kbDsNCi8vICAgc3RkOjpjZXJyIDw8IHAtPmF2ZyA8PCBzdGQ6
OmVuZGw7DQovLyAgIHN0ZDo6Y2VyciA8PCBwLT5zdGQgPDwgc3RkOjplbmRs
Ow0KDQogIGlmKHAtPmRhdGF0eXBlICE9IDcpIA0KICAgIGRpZSgiT25seSBm
bG9hdCBkYXRhIHN1cHBvcnRlZCBhdCB0aGUgbW9tZW50LiIpOw0KDQogIHR5
cGVkZWYgZmxvYXQgUGl4ZWxUeXBlOw0KDQogIFBpeGVsVHlwZSogZGF0YSA9
IChQaXhlbFR5cGUgKilwLT5kYXRhOw0KICBzdGQ6OmNlcnIgPDwgZGF0YVsw
XSA8PCBzdGQ6OmVuZGw7DQogIHN0ZDo6Y2VyciA8PCBkYXRhWzk4OTgzNDVd
IDw8IHN0ZDo6ZW5kbDsNCiAgc3RkOjpjZXJyIDw8IGRhdGFbMTY3NzcyMTVd
IDw8IHN0ZDo6ZW5kbDsNCg0KICB1bnNpZ25lZCBsb25nIG51bSA9IHAtPngg
KiBwLT55ICogcC0+ejsNCiAgc3RkOjpjZXJyIDw8IG51bSA8PCBzdGQ6OmVu
ZGw7DQoNCiAgLy8gaW5kZXggdGhhdCBjb3JyZXNwb25kcyB0byA5ODk4NDM1
ID0gMTUxKjI1Nl4yICsgOSoyNTYgKyAxMDUNCiAgaXRrOjpJbmRleDwzPiBp
bmRleCA9IHsxMDUsIDksIDE1MX07DQoNCiAgdHlwZWRlZiBpdGs6OkltYWdl
PFBpeGVsVHlwZSwgMz4gSW1hZ2VUeXBlOw0KICB0eXBlZGVmIGl0azo6SW1h
Z2VGaWxlV3JpdGVyPCBJbWFnZVR5cGUgPiBGaWxlVHlwZTsNCiAgdHlwZWRl
ZiBpdGs6OlJhd0ltYWdlSU88UGl4ZWxUeXBlLCAzPiBJbWFnZUlPVHlwZTsN
Cg0KLy8gICBpdGs6OkltcG9ydEltYWdlQ29udGFpbmVyPGxvbmcgdW5zaWdu
ZWQgaW50LCBQaXhlbFR5cGU+OjpQb2ludGVyIGltcG9ydA0KLy8gICAgID0g
aXRrOjpJbXBvcnRJbWFnZUNvbnRhaW5lcjxsb25nIHVuc2lnbmVkIGludCxQ
aXhlbFR5cGUgPjo6TmV3KCk7DQovLyAgIGltcG9ydC0+SW5pdGlhbGl6ZSgp
Ow0KLy8gICBpbXBvcnQtPlJlc2VydmUobnVtKTsNCi8vICAgaW1wb3J0LT5T
ZXRJbXBvcnRQb2ludGVyKGRhdGEsbnVtLGZhbHNlKTsNCiAgDQovLyAgIGl0
azo6SW1hZ2U8UGl4ZWxUeXBlLCAzPjo6UG9pbnRlciBpbWcgPSBpdGs6Oklt
YWdlPFBpeGVsVHlwZSwgMz46Ok5ldygpOw0KLy8gICBpbWctPlNldFBpeGVs
Q29udGFpbmVyKGltcG9ydCk7DQoNCi8vICAgc3RkOjpjZXJyIDw8IGltZy0+
R2V0UGl4ZWwoaW5kZXgpIDw8IHN0ZDo6ZW5kbDsNCg0KICBpdGs6OkltcG9y
dEltYWdlRmlsdGVyPFBpeGVsVHlwZSwgMz46OlBvaW50ZXIgYnJlYWRlciA9
IA0KICAgIGl0azo6SW1wb3J0SW1hZ2VGaWx0ZXI8UGl4ZWxUeXBlLCAzPjo6
TmV3KCk7DQogIGJyZWFkZXItPlNldEltcG9ydFBvaW50ZXIoZGF0YSAsbnVt
LCBmYWxzZSk7IA0KICBicmVhZGVyLT5VcGRhdGUoKTsNCg0KICBzdGQ6OmNl
cnIgPDwgIlRyeSB0byBwcmludCBhIHBpeGVsIGZyb20gcmVhZGVyIG91dHB1
dC4uLiIgPDwgc3RkOjplbmRsOw0KICBpdGs6OkltYWdlPFBpeGVsVHlwZSwg
Mz46OlBvaW50ZXIgaW1hZ2UgPSBicmVhZGVyLT5HZXRPdXRwdXQoKTsNCiAg
c3RkOjpjZXJyIDw8IGltYWdlLT5HZXRQaXhlbChpbmRleCkgPDwgc3RkOjpl
bmRsOw0KICBzdGQ6OmNlcnIgPDwgIk9LIiA8PCBzdGQ6OmVuZGw7DQoNCiAg
Ly8gU2V0IHVwIHRoZSBmaWx0ZXINCiAgaXRrOjpTaGlmdFNjYWxlSW1hZ2VG
aWx0ZXI8SW1hZ2VUeXBlLCBJbWFnZVR5cGU+OjpQb2ludGVyIHNzZmlsdGVy
DQogICAgPSBpdGs6OlNoaWZ0U2NhbGVJbWFnZUZpbHRlcjxJbWFnZVR5cGUs
IEltYWdlVHlwZT46Ok5ldygpOw0KICBzc2ZpbHRlci0+U2V0SW5wdXQoYnJl
YWRlci0+R2V0T3V0cHV0KCkpOw0KICBzc2ZpbHRlci0+U2V0U2hpZnQoMTAw
KTsNCiAgc3NmaWx0ZXItPlNldFNjYWxlKC01KTsNCiAgc3NmaWx0ZXItPlVw
ZGF0ZSgpOw0KLy8gICBzc2ZpbHRlci0+U2V0SW5wdXQoaW1nKTsNCg0KICBz
dGQ6OmNlcnIgPDwgIlRyeSB0byBwcmludCBhIHBpeGVsIGZyb20gZmlsdGVy
IG91dHB1dC4uLiIgPDwgc3RkOjplbmRsOw0KICBpdGs6OkltYWdlPFBpeGVs
VHlwZSwgMz46OlBvaW50ZXIgaW1hZ2UyID0gc3NmaWx0ZXItPkdldE91dHB1
dCgpOw0KICBzdGQ6OmNlcnIgPDwgaW1hZ2UyLT5HZXRQaXhlbChpbmRleCkg
PDwgc3RkOjplbmRsOw0KICBzdGQ6OmNlcnIgPDwgIk9LIiA8PCBzdGQ6OmVu
ZGw7DQoNCiAgLy8gU2V0IHVwIHRoZSBmaWxlIHdyaXRlcg0KICBJbWFnZUlP
VHlwZTo6UG9pbnRlciBvdXRwdXRfaW8gPSBJbWFnZUlPVHlwZTo6TmV3KCk7
DQogIG91dHB1dF9pby0+U2V0Qnl0ZU9yZGVyVG9MaXR0bGVFbmRpYW4oKTsN
CiAgb3V0cHV0X2lvLT5TZXRGaWxlRGltZW5zaW9uYWxpdHkoMyk7DQogIG91
dHB1dF9pby0+U2V0RmlsZVR5cGVUb0JpbmFyeSgpOw0KDQogIEZpbGVUeXBl
OjpQb2ludGVyIHdyaXRlciA9IEZpbGVUeXBlOjpOZXcoKTsNCiAgd3JpdGVy
LT5TZXRJbWFnZUlPKG91dHB1dF9pbyk7DQogIG91dG5hbWUgPSAic3NfIiAr
IHN0ZDo6c3RyaW5nKGFyZ3ZbMV0pICsgIi5yYXciOw0KICB3cml0ZXItPlNl
dEZpbGVOYW1lKG91dG5hbWUuY19zdHIoKSk7DQovLyAgIHdyaXRlci0+U2V0
SW5wdXQoYnJlYWRlci0+R2V0T3V0cHV0KCkpOw0KICB3cml0ZXItPlNldElu
cHV0KHNzZmlsdGVyLT5HZXRPdXRwdXQoKSk7DQoNCiAgdHJ5IA0KICAgIHsN
CiAgICAgIHdyaXRlci0+V3JpdGUoKTsNCiAgICB9ICANCiAgY2F0Y2goIGl0
azo6RXhjZXB0aW9uT2JqZWN0ICYgZSApDQogICAgew0KICAgICAgbWVzc2Fn
ZSA9ICJFeGNlcHRpb24gY2F1Z2h0IGR1cmluZyBwcm9jZXNzaW5nLiBcbiI7
DQogICAgICBtZXNzYWdlICs9IGUuR2V0TG9jYXRpb24oKTsNCiAgICAgIG1l
c3NhZ2UgKz0gIlxuIjsNCiAgICAgIG1lc3NhZ2UgKz0gZS5HZXREZXNjcmlw
dGlvbigpOw0KICAgICAgZGllKG1lc3NhZ2UpOw0KICAgIH0NCn0NCg==
--0-1870838566-1037106531=:20163--