How 'imread' function works in Matlab?
16 次查看(过去 30 天)
显示 更早的评论
Hi,
I am using 'imread' function in Matlab to read images produced by X-Ray CT. Those images are in the greyscale.
When I use the 'imread' function, Matlab returns an array with the same size of the image but with numbers inside the cells (matrix is attached). The number represent a single pixel in that image while the minimum number is 3107 and the maximum is 40899.
I want to know how those numbers are calculated?
Thanks..
0 个评论
采纳的回答
Walter Roberson
2017-2-22
The png file you posted is 8 bits per channel, uint8, 3 channel, with a transparency (alpha) channel that is set to all 255 (uint8) which is completely opaque.
The .mat file you posted relates to a different image, and is a matrix of uint16 values.
Are you asking how the uint16 is represented inside the file? If so then the answer is that they are stored in http://stackoverflow.com/questions/2384111/png-file-format-endianness "Network Byte Order", more commonly known as "Big Endian". That is a byte order in which the most significant of the bytes occurs first and then the less significant. That is the opposite of the order used by the x86 architecture, but it is the same as the order reflected by dec2hex and sprintf() with '%x' format.
What do the values correspond to, what units are they? I would put it to you that the images have been extracted from DICOM files without the relevant headers. See http://www.idlcoyote.com/fileio_tips/hounsfield.html
更多回答(1 个)
Adam
2017-2-21
They aren't 'calculated', they are read in from the file as the name 'imread' and the help suggest.
2 个评论
Adam
2017-2-22
imread literally reads what is stored in the file. How those numbers were calculated comes from whatever process was used to create the image and save it originally.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Image Processing Toolbox 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!