Reading a 3d .RAW voxel file

8 views (last 30 days)
Itzik Ben Shabat
Itzik Ben Shabat on 3 Dec 2012
Hi, I have a .RAW file that represent a 3d volume using pixels (its basically a 3d matrix containing 1 or 0 wherever there is or there isnt colume).' I am using multibandread() to read it and it works great but, multibandread requires the dimensions of the inpt (the 3 sizes of the3d matrix). how can i get these values from the file ? thanks, itzik
  1 Comment
Jan
Jan on 3 Dec 2012
Edited: Jan on 3 Dec 2012
It depends how this information is stored in the file. Files with the ".raw" extension could have many different formats. Therefore more information is required to identify where the wanted information is found in the file. E.g. how has this file been created?

Sign in to comment.

Answers (4)

Itzik Ben Shabat
Itzik Ben Shabat on 4 Dec 2012
Edited: Itzik Ben Shabat on 4 Dec 2012
OK so i figured out 2 ways to do this, they both seem to work (the files are always symetric to all sides) 1.
fileID=fopen(file);
[A, count] = fread(fileID);
m_hight=nthroot(count,3);
m_width=nthroot(count,3);
m_depth=nthroot(count,3);
2.
VoxelMat= multibandread(file, m_hight,m_width,m_depth],'uint8',0,'bip','ieee-le');
  2 Comments
Itzik Ben Shabat
Itzik Ben Shabat on 4 Dec 2012
hi , i did as you ask (sorry for the mess, im relatively new here) I left the answer containing the code since it does answer the question. if you still wish for me to remove it let me know and i will

Sign in to comment.


Walter Roberson
Walter Roberson on 3 Dec 2012
If there is no header on the file, then it is not possible to determine the dimensions just by looking at the file. If the size of the file happens to be a composite number that is the product of three primes then you can determine the dimensions but not the order of the dimensions.
  1 Comment
Image Analyst
Image Analyst on 4 Dec 2012
Not without a lot of trial and error "looking" at a slice to see if it looks "correct" (without skewing), which is a tedious manual method. Then you'd have to keep going through a bunch of trial image widths until the skewing eventually went away and the image looked normal. I have done things like get the rows and columns reversed, and you can kind of make out that it is your image but it's skewed or scrambled. It's always better to ask the person or organization that created the image (if you can't find it in any header or other file).

Sign in to comment.


Itzik Ben Shabat
Itzik Ben Shabat on 3 Dec 2012
hmmm... thats a great question. I dont really know. is there a way/test to run that i can figure out the format? do you know where i can find a source specifying these different formats ( i tried googling it but couldnt find something)
  3 Comments
Itzik Ben Shabat
Itzik Ben Shabat on 4 Dec 2012
the files were generated from a matalb\c program that someone wrote. apperantly it stores the data in a simply long array.

Sign in to comment.


Image Analyst
Image Analyst on 4 Dec 2012
There is no standard raw. Anybody can do whatever they want. A common one is just simply a pixel dump and nothing else. Just pixel after pixel until all of them are there. But someone could have gone down rows then over columns, or vice versa. But those are possibly the two most common ways. If you can take a look at the data in hex (unfortunately MATLAB's editor is missing this very useful capability) then you might see a difference after about 6 or 12 bytes or so in the appearance of the numbers. If that's true, then it's possible the creator wrote the rows, columns, and number of slices as the first 3 numbers in the file.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by