【问题标题】:Wavelet rasterzation - Apply agorithm/understand algorithm小波光栅化 - 应用算法/理解算法
【发布时间】:2019-09-26 23:18:35
【问题描述】:

我在论文中尝试了三角形的算法有点 (0;0), (1;0), (1, 1/2) 但得到的答案我认为是错误的(计算如下): http://faculty.cs.tamu.edu/schaefer/research/wavelet_rasterization.pdf

基本思想是该算法使用Haar小波计算多边形覆盖在正方形区域内的派系区域,如果多边形覆盖整个区域大于值为1,如果一半1/2等。然后算法细分这个正方形区域(象限)并计算更正下一级更高分辨率。区域大小是 2 的幂,当区域大小变为 1 x 1 像素区域时停止细分。如果在该象限内有多边形边,则只需要细分该方形区域的象限(我猜象限的值小于 1 或大于 0)。

为了计算小波系数 c_xx,算法总是归一化具有坐标 0 ≤ x ≤ 1 的多边形边缘; 0 ≤ y ≤ 。有了小波系数后可以使用这个方程(如果我理解正确的话): g(p) = (++ c_00)•Ψ_00 + (++ c_10)•Ψ_10 + (++ c_01)•Ψ_01 + (++ c_11)•Ψ_11
用于计算每个象限中的值。我猜 g(p) 是派系区域多边形覆盖象限。
Ψ_00; Ψ_10、Ψ_01、Ψ_11为论文图2中的Haar小波函数。

对于应用算法,首先求和 (++ c_00) 使用整个正方形区域内的多边形边
c_00 += 1/2•det(v_0; v_1)
v_0; v_1 是一个多边形边的端点,归一化相对于正方形区域的坐标(0 ≤ v_0; v_1 ≤ 1)。

为了计算其他三个总和++ c_10、++ c_01、++ c_11,在每个象限中细分多边形边缘并在每个象限中归一化。纸的 4 个象限符号:
Q_00:左下子区域
Q_10:右下子区域
Q_01:左上子区域
Q_11:右上子区域

论文附录 A 中计算 c_10、c_01 和 c11 总和的方程式(我不想在此处输入它们)。

计算

对于实验,我使用这个三角形有边(已经标准化)
(0;0) 到 (1;0)
(1;0) 到 (1, 1/2)
(1, 1/2) 到 (0;0)

Triangle and quadrants. Coordinate for edges in quadrant Q00 and Q10 normalized in each quadrant

计算 c_00

边缘 (0;0) 到 (1;0)
c_00 = 1/2•(0•0 - 1•0) = 0
边 (1;0) 到 (1, 1/2)
c_00 = 1/2•(1•1/2 - 1•0) = 1/4
边缘
c_00 = 1/2•(1•0 - 0•1/2) = 0

对所有 3 条边求和 c_00:
++ c_00 = 0 + 1/4 + 0 = 1/4(三角形覆盖正方形区域的 1/4 面积,这个数字看起来正确)

计算 c_10、c_01、c_11

两个 qandrant Q_00 和 Q_10 中的边 (0; 0) 到 (1; 0)
Q_00: (0; 0) to (1/2; 0) normalize 变成 --> (0; 0) to (1; 0)
Q_10: (1/2;0) 到 (1; 0) 归一化变为 --> (0; 0) 到 (1; 0)
Lx_00 = 1/8•(0 - 0)•(0 + 1) = 0
Ly_00 = 1/8•(1 - 0)•(0 + 0) = 0
Kx_10 = 1/4•(0 - 0) = 0
Lx_10 = 1/8•(0 - 0)(0 + 1) = 0
Ly_10 = 1/8•(1 - 0)
(0 + 0) = 0
c_10 = 0
c_01 = 0
c_11 = 0

边缘 (1; 0) 到 (1; 1/2) 仅在象限 Q_10
Q_10: (1:0) to (1; 1/2) normalize 变成 --> (1; 0) to (1; 1)
Kx_10 = 1/4•(0 - 1) = -1/4
Lx_10 = 1/8•(0 - 1)(1 + 1) = -1/4
Ly_10 = 1/8•(0 - 0)(1 + 0) = 0
c_10 = 0 + 0 + -1/4 - (-1/4) + 0 + 0 = 0
c_01 = 0 + 0 + 0 - 0 + 0 - 0 = 0
c_11 = 0 - 0 + -1/4 - (-1/4) - 0 + 0 = 0

Q_00 和 Q_10 两个象限中的边 (1; 1/2) 到 (0; 0)
Q_00: (1/2; 1/4) 到 (0; 0) 归一化变为 --> (0; 0) 到 (1; 1/2)
Q_10:(1; 1/2) 到 (1/2; 1/4) 标准化变为 --> (1; 1) 到 (0; 1/2)
Lx_00 = 1/8•(1/2 - 0)•(0 + 1) = 1/16
Ly_00 = 1/8•(0 - 1)•(0 + 1/2) = -1/16
Kx_10 = 1/4•(1 - 1/2) = 1/8
Lx_10 = 1/8•(1 - 1/2)(0 + 1) = 1/16
Ly_10 = 1/8•(0 - 1)
(1 + 1/2) = -1/8*(3/2) = -3/16
c_10 = 1/16 + 0 + 1/8 - (1/16) + 0 - 0 = 1/8
c_01 = -1/16 + -3/16 + 0 - 0 + 0 + 0 = -1/4
c_11 = 1/16 - 0 + 1/8 - (1/16) - 0 + 0 = 1/8

++ c_00 = 1/4
++ c_10 = 1/8
++ c_01 = -1/4
++ c_11 = 1/8

计算最终结果:

g00 = c00 + c10 + c01 + c11 = 1/4 + 1/8 + (-1/4) + 1/8 = 1/4
g10 = c00 - c10 + c01 - c11 = 1/4 - 1/8 + (-1/4) - 1/8 = -1/4
g01 = c00 + c10 - c01 - c11 = 1/4 + 1/8 - (-1/4) - 1/8 = 1/2
g11 = c00 - c10 - c01 + c11 = 1/4 - 1/8 - (-1/4) + 1/8) = 1/2

但我猜正确的结果应该是:
g00 = 1/4
g10 = 3/4
g01 = 0
g11 = 0

【问题讨论】:

    标签: algorithm rasterizing haar-wavelet


    【解决方案1】:

    系数 c00 正确,但系数 c10、c01、c11 的符号相反:
    ++ c_00 = 1/4(正确)
    ++ c_10 = 1/8 --> -1/8
    ++ c_01 = -1/4 --> 1/4
    ++ c_11 = 1/8 --> -1/8

    计算最终结果

    g00 = c00 + c10 + c01 + c11 = 1/4 + (-1/8) + 1/4 + (-1/8) = 1/4
    g10 = c00 - c10 + c01 - c11 = 1/4 - (-1/8) + 1/4 - (-1/8) = 3/4
    g01 = c00 + c10 - c01 - c11 = 1/4 + (-1/8) - 1/4 - (-1/8) = 0
    g11 = c00 - c10 - c01 + c11 = 1/4 - (-1/8) - 1/4 + (-1/8) = 0

    为了找到这个问题,我使用矩阵数学。我认为 g00、g10、g01、g11 的使用值是正确的,Haar 小波函数 Ψ_00 的系数; Ψ_10, Ψ_01,Ψ_11 创建矩阵系统:
    |1 1 1 1| |c00| = |1/4|
    |1 -1 1 -1| |c10| = |3/4|
    |1 1 -1 -1| |c01| = | 0 |
    |1 -1 -1 1| |c11| = | 0 |

    并求解 c00、c10、c01、c11。我还尝试了其他测试三角形,结果完全相同,显示 c10、c01、c11 的符号相反。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-04
      • 2014-09-01
      • 1970-01-01
      • 2013-06-05
      • 1970-01-01
      • 2019-06-18
      • 1970-01-01
      • 2022-01-22
      相关资源
      最近更新 更多