【问题标题】:How are Dubois anaglyph matrices calculated?Dubois 立体图矩阵是如何计算的?
【发布时间】:2021-05-29 22:15:42
【问题描述】:

我已阅读 Eric Dubois https://www.site.uottawa.ca/~edubois/icassp01/anaglyphdubois.pdf 的论文,但不明白如何计算一对特定彩色滤光片和显示设备的两个 3 x 3 矩阵。 Dubois 在https://www.site.uottawa.ca/~edubois/anaglyph/LeastSquaresHowToPhotoshop.pdf 提供了专为红色/青色眼镜和 CRT/等离子显示器设计的矩阵。

最令人费解的是,论文中说“近似是在每个 样本位置”,这意味着计算是依赖于图像的,而矩阵被表示为适用于任何图像。

【问题讨论】:

    标签: image-processing matrix stereo-3d


    【解决方案1】:

    Sanders 和 McAllister 在https://www.researchgate.net/publication/2852372_Producing_Anaglyphs_from_Synthetic_Images 上清楚地解释了计算。 (他们创建了一个 6 x 3 矩阵,而不是两个 3 x 3 矩阵。) 我已经用这个 Python 脚本复制了他们的矩阵 B:-

    import numpy as np
    AL = np.array([[5.42327, .807004, .047325], # Left anaglyph filter
                   [2.70972, .50201, .0250529],
                   [.0000550941, .000411221, .00240686]])
    AR = np.array([[.180431, 1.6395, 2.00309], # Right anaglyph filter
                   [.448214, 6.31551, 1.35757],
                   [.289201, 2.3925, 11.062]])
    R = np.concatenate((AL, AR))
    C = np.array([[11.6638, 8.3959, 4.65843], # CRT spectral distribution
                  [7.10807, 16.6845, 2.45008],
                  [.527874, 3.79124, 24.0604]])
    Z = np.array([[0, 0, 0],
                  [0, 0, 0],
                  [0, 0, 0]])
    D = np.concatenate((np.concatenate((C, Z), 1), np.concatenate((Z, C), 1)))
    B = np.dot(np.dot(np.linalg.inv(np.dot(R.transpose(), R)), R.transpose()), D)
    N = np.diagflat([1 / sum(B[0]), 1 / sum(B[1]), 1 / sum(B[2])])
    print(np.dot(N, B))
    
    [[ 0.45610004  0.50048381  0.17638087 -0.0434706  -0.08793882 -0.00155529]
     [-0.04008216 -0.03782458 -0.01575895  0.37847603  0.73363998 -0.01845032]
     [-0.01521607 -0.02059714 -0.00546856 -0.07215268 -0.11296065  1.2263951 ]]
    

    【讨论】:

      猜你喜欢
      • 2011-07-28
      • 2014-01-17
      • 2015-05-17
      • 2020-03-14
      • 1970-01-01
      • 2023-02-04
      • 2021-05-07
      • 1970-01-01
      相关资源
      最近更新 更多