Re: binary import
- To: mathgroup at smc.vnet.net
- Subject: [mg25990] Re: binary import
- From: "Mariusz Jankowski" <mjkcc at usm.maine.edu>
- Date: Wed, 15 Nov 2000 02:09:41 -0500 (EST)
- Organization: University of Southern Maine
- References: <8ug936$id7@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Hi, The fastest method of reading binary data is ReadList. In version4 use the following command: strm = OpenRead["filename", DOSTextFormat->True]; (* the option is needed in Windows only *) data = Developer`ToPackedArray[ReadList[strm, Byte]]; Close[strm]; The new packed storage format uses 4 bytes per integer, so the ByteCount for data is 4 * Length[data]. Next convert the 1-byte per sample data to 2-bytes per sample (assuming LSB is first) by combining pairs of integers in data: data16bit = ({1, 256} . # &) /@ Partition[data,2] This operation is also reasonably fast. Of course you must also Partition data16bit, so that you obtain a 2D array. For that you must know the column dimension of your images. Mariusz -- ====================================================== Mariusz Jankowski University of Southern Maine mjkcc at usm.maine.edu "Bruyndonckx P." <pbruynd at vub.ac.be> wrote in message news:8ug936$id7 at smc.vnet.net... > I would like to use mathemtica to do some image processing. I have 2D images stored in a file as binary 16 bit data. When I > try to use the binaryimport, I seem to have two problems : > > 1) to read 100,000 binary 16 bit numbers, it takes about 255 seconds, only 392 numbers/s. Why is this so terribly slow ??? > 2) When I compare the memory in use (MemoryInUse[] command) before and after I use the BinaryImport command, it seems that I > need about 892,000 bytes to store these 100,000 number, ie nearly 9 bytes per 16 bit number. Why is MAthematica so > inefficient in storing a list of binary numbers ? Or does it use memory for some other purpose. > > When I used the command ReadListBinary it takes 320 seconds to read 100,000 16 bit numbers. > > Does anybody have a workable solution, memory wise as well as time wise ? > > Thanks >