杜波依斯浮雕矩阵是如何计算的?



我已经阅读了Eric Dubois https://www.site.uottawa.ca/~edubois/icassp01/anaglyphdubois.pdf的论文,但不理解如何为特定的一对彩色过滤器和显示设备计算两个3 × 3矩阵。Dubois给出了为红/青色眼镜和CRT/等离子显示设计的矩阵,地址为https://www.site.uottawa.ca/~edubois/anaglyph/LeastSquaresHowToPhotoshop.pdf。

最令人费解的是,这篇论文说"近似是在每个地方独立进行的。样本位置",这意味着计算是图像相关的,而矩阵被表示为适用于任何图像。

Sanders和McAllister在https://www.researchgate.net/publication/2852372_Producing_Anaglyphs_from_Synthetic_Images上清楚地解释了这个计算。(他们创建了一个6 × 3矩阵,而不是两个3 × 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 ]]

相关内容

  • 没有找到相关文章

最新更新