【问题标题】:How does rawPy reads DNG framesrawPy如何读取DNG帧
【发布时间】:2017-01-05 23:24:17
【问题描述】:

这个问题是我上一个dng-raw-pictures-imported-as-16-bit-deep-but-unexpected-plt-show-result 的后续问题,之后我继续搜索。

由于回复获得了 16 位的可视化,但每个通道的通道运行良好。我决定拍摄一系列 50 个 BIAS 帧。这是在完全黑暗中以 ISO 100 和 1/8000 秒的曝光时间(最低 ISO 的最短曝光)拍摄的照片。偏置帧显示传感器在没有光进入时看到的内容,传感器后面的 ADC 应该为每个像素提供一个“0”值。情况并非总是如此,我想分析一下这个值有多少变化。我不希望有大的变化或大的错误值。

用我上一个问题中解释的方法,我一一读取我的 50 帧并查看随机像素的 R、G、B 值(随机但始终相同),让我们说有位置的像素[1500, 1500]。

在运行序列时,我将像素值与行和列的平均值进行比较。除了平均值之外,我还计算了行和列的标准差。

这是我发现的:

我个人觉得这些波动很大,没想到对于 14 位深度的 ADC 会出现这种情况。可能我查看数据的方式有问题,我犹豫了一下,但担心它再次与 ColorMapping、Demosaicing 等有关。

为了进行交叉检查,我想确保我从 Python 脚本中获得的像素 [1500,1500] 的值可以重现。因此,我安装了 ImageJ 或者也调用了它的最新版本 Fiji。使用 DCRAWreader 插件,我可以读取相同的 16 位帧并使用像素检查工具来查找位置 [1500,1500] 中著名像素的值。

ImageJ 值与我使用 Python 获得的值不对应。

我现在的问题是:“我应该如何解释在 Python 中上传的图片像素背后的 rgb 数字?它们与像素的传感器阱中产生并由 ADC 转换为数字价值?”

【问题讨论】:

  • 写得很好的问题。很抱歉,我无法回答这个问题,但由于您的问题相当“低级”,您可以考虑在信号处理专家社区dsp.stackexchange.com 上发帖。

标签: python image-processing imagej dng


【解决方案1】:

可以在https://letmaik.github.io/rawpy/api/rawpy.Params.html 找到后处理选项及其默认值。

在创建偏置帧的统计信息时,您需要禁用任何自动调整亮度等机制。以下选项应该使您的绘图更有意义:output_bps=16, no_auto_scale=True, no_auto_bright=True, gamma=(1,1)

您还可以更进一步,通过访问二维 numpy 数组 raw.raw_image 对未插值的 RAW Bayer 数据进行分析。

电子数和 RAW 值之间应该或多或少存在线性关系,但是如果没有校准,将 RAW 值分配给电子计数几乎是不可能的。对于甚至对 RAW 值应用变换的消费级相机来说尤其如此。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-24
    • 2022-11-30
    • 1970-01-01
    • 1970-01-01
    • 2020-05-07
    相关资源
    最近更新 更多