我正在处理.raw图像文件,但我不确定图像是如何存储的。每个像素是无符号的16位值,典型值范围从0到大约1000(整数形式)。这对于十六进制值来说是不够的,而不是RGB(0-255),所以我不太确定它是什么。
额外奖励:如果你对如何在OpenCV(或数学上)将其转换为灰度有任何想法,那将是一个巨大的帮助。
答案 0 :(得分:11)
名称RAW来自这样的事实:存储在文件中的值不是像素RGB值,而是从相机本身测量的原始值。只有了解相机的工作原理,这些值才有意义。有一些标准,但实际上,您应该只考虑RAW是一个定义不明确,未记录的专有格式的集合,可能不会直观地匹配您对图像存储方式的任何想法。
查看DCRaw - 这是几乎所有支持RAW的程序使用的代码
http://www.cybercom.net/~dcoffin/dcraw/
作者反向设计并实施了几乎所有专有的RAW格式 - 并使其保持最新。
答案 1 :(得分:3)
其他答案是正确的,RAW不是标准,它是速记。相机CCD通常没有为每个像素分别设置红色,绿色和蓝色像素,相反,它们将使用所谓的Bayer Pattern,然后仅保存该模式的像素值。然后,您需要将该模式转换为rgb值。
另外,对于红利问题,如果您只是想将RGB图像转换为灰度等等,您可以使用矩阵运算符,也可以调用convertTO
答案 2 :(得分:1)
忘了16位的R / G / B是什么:
“红色可以有5位,绿色可以有6位,蓝色可以有5位”
http://en.wikipedia.org/wiki/Color_depth#16-bit_direct_color
之前看过它在游戏代码中使用过。
在黑暗中完成拍摄,尽管还有专有的RAW格式。