【问题标题】:RAW Image file - what format is my data in?RAW 图像文件 - 我的数据采用什么格式?
【发布时间】:2020-02-16 16:45:20
【问题描述】:

我正在处理 .raw 图像文件,但我不确定图像是如何存储的。每个像素都是一个无符号的 16 位值,典型值范围从 0 到大约 1000(整数形式)。这对于十六进制值来说是不够的,它不是 RGB (0-255),所以我不太确定它是什么。

奖励:如果您对如何在 OpenCV 中将其转换为灰度(或仅在数学上)有任何想法,那也将是一个巨大的帮助。

【问题讨论】:

  • 嗯,你从哪里得到这张图片的?因为有数百种原始格式。
  • 首先,你没有说哪种格式(和版本),因为有好几种。其次,我建议使用现有的库。处理 RAW 图像文件并非易事,因为这些值通常需要额外处理才能生成图像。即使在同一制造商的不同相机型号之间,格式也可能略有不同。这些程序/库中的大多数都是专有的并且要花钱,这是有原因的。
  • 我在一家小公司实习时得到了这些图片,他们也不确定这些值与颜色的关系。他们只知道它在 matlab 中工作,但他们希望我用 C++ 重新编码。我正在学习使用 OpenCV 进行处理,但是在 OpenCV 中查看图像会得到一个非常黑的图像,只有少数深灰色和白色区域。 opencv 图像与实际图像相似,但色调更暗。

标签: image-processing opencv image-manipulation


【解决方案1】:

RAW 的名称来源于文件中存储的值不是像素 RGB 值,而是从相机本身测量的原始值。仅当您知道相机的工作原理时,这些值才有意义。有一些标准,但实际上,您应该只将 RAW 视为定义不明确、未记录、专有格式的集合,这些格式可能与您对图像存储方式的任何想法不符。

查看 DCRaw - 这是几乎所有支持 RAW 的程序都使用的代码

https://www.dechifro.org/dcraw/

作者对几乎所有专有的 RAW 格式进行了逆向工程和实施——并使其保持最新状态。

【讨论】:

    【解决方案2】:

    其他答案是正确的,RAW 不是标准,它是简写。相机 CCD 通常不会为每个像素提供单独的红色、绿色和蓝色像素,相反,它们将使用所谓的 Bayer Pattern,然后只保存该图案的像素值。然后,您需要将该模式转换为 rgb 值。

    另外,对于额外的问题,如果您只是想将 RGB 图像转换为灰度图像或类似的东西,您可以使用矩阵运算符,或致电convertTO

    【讨论】:

      【解决方案3】:

      忘了 16 位的 R/G/B 是什么:

      "红色可以有 5 位,绿色可以有 6 位,蓝色可以有 5 位"

      http://en.wikipedia.org/wiki/Color_depth#16-bit_direct_color

      之前在游戏代码中看到过。

      虽然也有专有的 RAW 格式,但在黑暗中完成拍摄。

      【讨论】:

      • 谢谢建议,我试试看!
      猜你喜欢
      • 1970-01-01
      • 2021-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多