[Insight-users] DICOM 3D Reader Attached. Problems in ImageFunction, RawImageIO

Reinhold Füreder R.Fureder@exeter.ac.uk
Fri, 18 Oct 2002 14:18:20 +0100


This is a multi-part message in MIME format.

------=_NextPart_000_007C_01C276B1.35F87700
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: 7bit

Hi,

1) Attached is the patched DicomImageIO which is now able to read the most
basic 3D dicom files as before. That means the image must meet the following
requirements:
* either 8 or 16 bit per pixel (not 12)
* no RLE or JPEG compression
New is the check for:
* frames
* spacing between slices & slice thickness
* transfer syntax UID (littel vs big endian; compression)

It is not perfect but works!

--------
(Comment for the other points below: I use MSVC 6.0)
--------
2) ImageFunction (itkimagefunction.h):
May it be that there is one include missing? Because if I include #include
<itkImageBase.h> in my own file (probably before the include or usage of the
above class) the following error doesn't pop up:

d:\yann\cvs\insight\code\common\itkimagefunction.h(61) : error C2039:
'GetImageDimension' : is not a member of 'itk'
        d:\yann\cvs\insight\code\common\itkimagefunction.h(181) : see
reference to class template instantiation
'itk::ImageFunction<TInputImage,TOutput,TCoordRep>' being compiled
... (and so on)
--------
3) RawImageIO (itkrawimageio.h):
If I want to use RawImageIO (#include <itkRamImageIO.h>) the link error
LNK2005 pops up. Now I use according to one mailinglist posting the compiler
flag /FORCE:MULTIPLE to turn them into warnings. Of course, I have to admit,
I use other libraries (e.g. wxWindows):

msvcprtd.lib(MSVCP60D.dll) : error LNK2005: "public: void __thiscall
std::basic_ifstream<char,struct std::char_traits<char> >::`vbase
destructor'(void)"
(??_D?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXXZ) already defined
in swRamImageIOIncludingFile.obj
msvcprtd.lib(MSVCP60D.dll) : error LNK2005: "public: void __thiscall
std::basic_ifstream<char,struct std::char_traits<char> >::open(char const
*,int)" (?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPBDH@Z)
already defined in swRamImageIOIncludingFile.
obj
... (and so on)

The solely use of DicomImageIO doesn't make any problems and the difference
in reference to the std::string staff is maybe just <string> vs. <string.h>?
RawImageIO.h:
#include <fstream>
#include "itkImageIOBase.h"
#include "itkIndex.h"
#include "itkImageRegion.h"
#include "itkPixelTraits.h"
#include "itkByteSwapper.h"
#include "itkVersion.h"
#include <string>

DicomImageIO.h:
#include "itkDicomImageIO.h"
#include "itkExceptionObject.h"
#include "itkByteSwapper.h"
#include <iostream>
#include <list>
#include <string.h>
#include <math.h>

Thanks,
    Reinhold

------------------------------
University of Exeter
School of Engineering and Computer Science
Harrison Building
North Park Road
Exeter, EX4 4QF
UK


------=_NextPart_000_007C_01C276B1.35F87700
Content-Type: application/octet-stream;
	name="swDicomImageIO.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
	filename="swDicomImageIO.zip"

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
AAIAAgB+AAAAMxoAAAAA

------=_NextPart_000_007C_01C276B1.35F87700--