了解RAW图像文件

时间:2014-07-23 16:27:16

标签: matlab image-processing camera reverse-engineering tiff

我想知道是否有人可以帮我理解RAW文件。我知道有很多不同的格式称为“RAW”,它通常是制造商,甚至是相机特定的。我已经读过一些据说包含某种“标题”的信息,它提供了有关文件/相机等的信息。

我正在尝试在Matlab中分析来自不同相机的不同RAW输出,据我所知,只要我能够在几天的搜索中找到它们,就没有多少文档或支持。流行的转换实用程序(Adobe DNG Converter和dcraw)无法识别这些文件。我有来自每个相机的5个图片文件,使用相机的专有软件拍摄,该软件应包含12位灰度数据。对于我来说,Endian-ness并不明显(尽管可能是对其他人?)。我知道的另一件事就是每张照片的尺寸应该是什么。

基本上,有没有一种方法可以对我拥有的RAW进行逆向工程,以便我能够理解如何将它们转换为.tif或者更多Matlab友好的东西?我对这一切都很陌生。

3 个答案:

答案 0 :(得分:2)

只是一个注释 - 您建议的图像尺寸,您的图像可能存储为16位(可能只有12个在实践中使用)。

您确实需要联系制造商以确定。但是,如果您具有大小并知道精度,则可以使用fread并尝试使用字节顺序和方向。

因此,对于您的Lumenera示例,确切的字节数为4,456,448。这表明大小是正确的,bitdepth是16:width * height * bitdepth / 8.那么唯一的问题是大小的方式(1088x2048或2048x1088)和endianness。以下看起来对我来说是一个合理的形象(不完全确定... ...)

fid = fopen('Lumenera.raw');
A = fread(fid,[2048 1088],'uint16','l');
fclose(fid);

enter image description here

如果有标题,并且您对其大小有所了解,则可以先使用freadfseek将其读入图像数据的开头(如果您不需要)内容。

答案 1 :(得分:0)

我首先阅读DC RAW文件:

http://www.cybercom.net/~dcoffin/dcraw/

然后我会使用这个MATLAB脚本: https://plus.google.com/u/0/105777071372887161480/posts/TkdqRq1acuF

...享受

答案 2 :(得分:0)

据我所知,相机供应商经常提供WIC个编解码器来阅读他们的RAW(sample)。您可以尝试这种方式,特别是如果您不需要支持所有RAW格式。

我不熟悉MATLAB,但我确信必须有一种方法可以直接使用WIC,也可以通过第三方工具或SDK。