【问题标题】:Demosaicing algorithm for constructing an image (received from a Bayer Filter Sensor) in Java from binary file去马赛克算法,用于从二进制文件用 Java 构造图像(从拜耳过滤器传感器接收)
【发布时间】:2016-04-11 17:12:18
【问题描述】:

我应该从 Java 程序读取的二进制文件中用 Java 构建图像。该文件来自拜耳过滤器传感器。该文件由每个像素的二进制值组成。每个像素由 10 位表示。需要编写去马赛克算法才能从二进制数据构建图像。有 1024*1280 像素。因此,1280*1024*10 = 13107200 位 = 1638400 字节是图像大小。有人用Java实现了这样的算法吗?如果有人可以提供帮助,我会很高兴。非常感谢。

【问题讨论】:

  • 尝试将任务分解为更小的任务,一次解决一个。例如,首先解决如何读取 10 位数据(它们是原始样本,还是以任何方式压缩?)。您可能希望将其存储为 8 位 (byte) 或 16 位 (short) 样本(向上/向下缩放值)。然后,尝试将图像读入灰度图像(强度不会是线性的,但至少您应该识别图像)。然后执行去马赛克以获得全彩色图像。人们可能已经解决了所有或部分这些任务,谷歌是你的朋友。 :-)
  • 发布源二进制文件,如果您还知道过滤器的配置,则需要尝试所有组合并选择正确的组合...如果您需要完整的 30 位色深,请使用 HDR或任何更高颜色深度的文件格式,否则会截断为每像素 24 位 RGB ...位图或其他任何内容。另见imatest.com/docs/raw
  • @haraldK :二进制数据来自相机传感器。是不是我必须首先将此二进制文件转换为原始拜耳图像(为了创建原始拜耳图像,是否需要使用 OpenCV Java 接口),然后应用去马赛克算法来获取每个像素的 RGB。而当我拥有它时,我可以简单地使用 BufferedImage 的 setRGB 函数来创建图像吗?
  • 不知道为什么你需要 OpenCV 来做这个..?您也许可以使用BufferedImage.setRGB(...),但请记住,这使用 32 位“打包”ARGB 布局,仅提供 8 位/组件。如果您的原始数据是 10 位,您将失去一些精度。也许对你来说不是问题?您可能还需要进行一些色彩空间转换(ColorConvertOp 会这样做),以将您的数据置于 sRGB 色彩空间中。

标签: java image-processing javax.imageio demosaicing


【解决方案1】:

解决方案是使用外部库。 有一个名为 OpenCV 的库可用于 Java。函数 Imgproc.demosaicing() 将原始拜耳图像转换为所需格式。谢谢大家的帮助。

【讨论】:

    猜你喜欢
    • 2018-08-05
    • 1970-01-01
    • 1970-01-01
    • 2021-08-07
    • 2020-12-26
    • 1970-01-01
    • 2017-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多