[Insight-developers] Re: Limitation in MetaIO causing
problems initkNeuralNetworkFileReader/Writer
kent williams
norman-k-williams at uiowa.edu
Tue Aug 21 11:35:44 EDT 2007
I noticed that you were a co-author of the PDF for the Insight Journal...
I'm checking in a bounds check to the metaUtils for MET_InitWritefield. This
will prevent crashes.
The problem with endian-ness comes in the itkNeuralNetworkFileReader -- if
the WeightValuesType is BINARY, it simply reads in a chunk to fill out the
network, without regard for endianness. It doesn't use metaAraray to read
and write the data.
I'll try and study up on metaIO and see if I can't put some sanity into the
itkNeuralNetworkFileReader/Writer.
On 8/21/07 9:53 AM, "Stephen R. Aylward" <Stephen.Aylward at Kitware.com>
wrote:
> Hi,
>
> Actually - MetaIO does correctly handle byte ordering - there are
> functions to do an explicit swap on binary data as well as functions
> that swap only if needed to convert the binary data into the native byte
> order for the machine. Handles 64bits as well as 32 bits, etc.
>
> I suspect that the NN IO libraries need help. They may be breaking the
> MetaIO standard - not the users fault - really the library developers
> fault...and the library came in part from my old lab at UNC :) So...if
> they are flawed...blame UNC :) Actually, I should take at look at
> them...just wish there were more hours in a day/week/lifetime...
>
> s
>
> kent williams wrote:
>> I certainly am not proposing to break existing, released code.
>>
>> Looking at the MetIO classes more closely this morning, it appears that it
>> already supports binary data output, which doesn't have the limitations that
>> The ASCII record type has with respect to data size.
>>
>> Like the vnl_matlab classes, it needs to take into account machine
>> endianness, which right now it ignores.
>>
>> So in contrast to yesterday evening, I'm no longer running around with my
>> hair on fire ;-)
>>
>>
>> On 8/21/07 6:12 AM, "Atwood, Robert C" <r.atwood at imperial.ac.uk> wrote:
>>
>>>
>>> I for one would not be too happy with any such breakage, The intent as I
>>> understand (and agree with) is that the meta-header is human readable,
>>> and sticking tons of data into the tags would break this design idea,
>>> let alone code using it.
>>>
>>> I use it all the time and can easily write separate (.mhd) headers by
>>> hand, or by little scripts, for 3rd party and legacy image formats/image
>>> series formats, and thus I can avoid using import filter code. My vote
>>> is to please maintain this design.
>>>
>>> Robert
>>>
>>>> -----Original Message-----
>>>> From:
>>>> insight-developers-bounces+r.atwood=imperial.ac.uk at itk.org
>>>> [mailto:insight-developers-bounces+r.atwood=imperial.ac.uk at itk
>>>> .org] On Behalf Of Stephen R. Aylward
>>>> Sent: 20 August 2007 23:20
>>>> To: kent williams
>>>> Cc: Hans Johnson; ITK
>>>> Subject: [Insight-developers] Re: Limitation in MetaIO
>>>> causing problems initkNeuralNetworkFileReader/Writer
>>>>
>>>> Seems like the metaio library is being misused. The fields are only
>>>> intended for holding tag/value pairs. Reading/writing large
>>>> amounts of
>>>> data should done directly to the file or to an external file.
>>>>
>>>> Look at how matrix, arrays, and images are read/written -
>>>> first read the
>>>> tag/value pairs that specify how much data should be
>>>> read/written, and
>>>> then directly read/write the data from the file after the tag/value
>>>> pairs. Also, it should support writing those arrays as ascii
>>>> or binary
>>>> data.
>>>>
>>>> It could be done the way you suggested, but that was not the
>>>> design for
>>>> metaIO.
>>>>
>>>> Hope this helps,
>>>> Stephen
>>>>
>>>> kent williams wrote:
>>>>> I logged this as a bug: http://www.itk.org/Bug/view.php?id=5545
>>>>>
>>>>> The bug report has more details, but there are 2
>>>> limitations with MetaIO, in
>>>>> the context of the NeuralNet I/O classes: The
>>>> MET_FieldRecordType is a C
>>>>> structure, not a C++ class, and it contains a value array
>>>> with a fixed size
>>>>> of 255.
>>>>>
>>>>> I'm testing a very quick and dirty fix -- simply enlarging
>>>> the value array
>>>>> so that Hans can move forward with his NeuralNetwork code
>>>> testing*, but
>>>>> MetaIO maybe deserves some new scrutiny.
>>>>>
>>>>> Given that it's been around for years in ITK, I can't think
>>>> of what I'd do
>>>>> that wouldn't break backwards compatibility. The obvious
>>>> thing to do would
>>>>> be to move MET_FieldRecordType to a C++ class, make the value array
>>>>> resizable, etc. Any code depending on the current state of
>>>> play would
>>>>> break.
>>>>>
>>>>>
>>>>> * and putting a test in MET_InitWriteField so it won't
>>>> scribble all over
>>>>> memory. There are, as I count them, 4 separate potential
>>>> buffer overruns in
>>>>> that function.
>>>>>
>>>>>
>>>> --
>>>> =============================================================
>>>> Stephen R. Aylward, Ph.D.
>>>> Chief Medical Scientist
>>>> Kitware, Inc. - Chapel Hill Office
>>>> http://www.kitware.com
>>>> Phone: (518)371-3971 x300
>>>> _______________________________________________
>>>> Insight-developers mailing list
>>>> Insight-developers at itk.org
>>>> http://www.itk.org/mailman/listinfo/insight-developers
>>>>
>>> _______________________________________________
>>> Insight-developers mailing list
>>> Insight-developers at itk.org
>>> http://www.itk.org/mailman/listinfo/insight-developers
>>
>>
More information about the Insight-developers
mailing list