【问题标题】:Simulate Camera in Numpy在 Numpy 中模拟相机
【发布时间】:2020-09-02 08:05:39
【问题描述】:

我的任务是模拟具有每个传感器元件 10.000 个光子的全阱容量的相机 在麻木。我的第一个想法是这样做:

camera = np.random.normal(0.0,1/10000,np.shape(img))
Imgwithnoise= img+camera

但它几乎没有显示出效果。 有人知道怎么做吗?

【问题讨论】:

  • 这是否意味着不会记录大于 10,000 的信号?此外,1/10,000 比例意味着您添加到图像中的噪声非常小,因此您可能不会看到 Imgwithnoise 的任何差异,具体取决于它们的值。如果您可以为img 等提供一些数字,并更全面地解释您想要的输出,将会有所帮助。
  • 感谢您的回复!那么问题是我不确定自己的输出。我猜 10.000 可能意味着没有更大的信号,是的,但我不知道这意味着什么以及如何在噪声方面暗示它......

标签: numpy noise


【解决方案1】:

根据我从您的问题中的解释,如果传感器的每个物理像素都有 10,000 个光子的限制,这表明您的图像上可以有一个数字像素最亮。同样,0 个入射光子构成图像中最暗的像素。

您必须创建从物理传感器到数字图像的映射。为简单起见,假设我们使用灰度图像。
您的首要任务是修复图像的颜色位深度。也就是说,你的图像是8位彩色图像吗? (通常是这种情况)如果是这样,最亮像素的亮度值 = 255(= 28 - 1,8 位。)最暗的像素总是选择值为 0。

因此,您必须从0 --> 10,000(传感器)范围映射到0 --> 255(图像)。最自然的想法是做一个线性映射(即图像的每个像素都通过传感器每个像素的相同乘法因子获得),但要正确解释(根据人眼)@987654323 产生的亮度@ 入射光子,通常使用不同的传递函数
简化版本中的传递函数只是处理此映射的数学函数 - 对数 TF 很常见。

此外,由于您似乎正在产生噪音,因此将camera 本身添加到图像img 是不明智的并且在概念上是错误的。你应该做的是,首先修复一个噪声阈值 - 这可以对应于作为最大噪声值的可以影响像素读数的最大光子数。然后在0 --> noise_threshold 范围内生成随机数(根据某些分布,如果需要)。最后,您使用之前创建的地图将此噪声添加到图像数组中。

希望这会有所帮助,并且与您希望做的事情保持一致。干杯!

【讨论】:

    猜你喜欢
    • 2013-01-06
    • 2013-09-05
    • 2014-07-25
    • 2011-02-22
    • 2012-08-04
    • 2021-06-03
    • 1970-01-01
    • 2016-08-28
    • 1970-01-01
    相关资源
    最近更新 更多