我想知道是否有人可以帮我理解RAW文件。我知道有很多不同的格式称为“RAW”,它通常是制造商,甚至是相机特定的。我已经读过一些据说包含某种“标题”的信息,它提供了有关文件/相机等的信息。
我正在尝试在Matlab中分析来自不同相机的不同RAW输出,据我所知,只要我能够在几天的搜索中找到它们,就没有多少文档或支持。流行的转换实用程序(Adobe DNG Converter和dcraw)无法识别这些文件。我有来自每个相机的5个图片文件,使用相机的专有软件拍摄,该软件应包含12位灰度数据。对于我来说,Endian-ness并不明显(尽管可能是对其他人?)。我知道的另一件事就是每张照片的尺寸应该是什么。
基本上,有没有一种方法可以对我拥有的RAW进行逆向工程,以便我能够理解如何将它们转换为.tif或者更多Matlab友好的东西?我对这一切都很陌生。
答案 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);
如果有标题,并且您对其大小有所了解,则可以先使用fread
或fseek
将其读入图像数据的开头(如果您不需要)内容。
答案 1 :(得分:0)
我首先阅读DC RAW文件:
http://www.cybercom.net/~dcoffin/dcraw/
然后我会使用这个MATLAB脚本: https://plus.google.com/u/0/105777071372887161480/posts/TkdqRq1acuF
...享受
答案 2 :(得分:0)