我正在尝试使用c ++编写自己的高斯金字塔代码。
我尝试了http://persci.mit.edu/pub_pdfs/pyramid83.pdf,等式(1)和(2)中所述的缩小和展开方程式。但是,当我尝试访问
时,我的数组索引超出范围 分别为 [2i + m][2j + n]
和[(i - m) / 2][(j - n) / 2]
。
我的高斯核:5x5矩阵; g1Image:原始图像缩小1级,行和列都是原始图像尺寸的一半。
我的m
和n
设置为-2 < m/n <= 2
,因此当我访问我的高斯内核时,我将索引加2,成为
w[m + 2][n + 2] * original_image[2i + m][2j + n]
我确实尝试将m
和n
设置为0 < m/n <=4
,等式变为
w[m][n] * original_image[2i + m][2j + n] or w[m][n] * original_image[2i + m - 2][2j + n - 2]
任何提到的等式都是超出界限的。
w[m][n] * original_image[2i][2j]
用于减少等式和
w[m][n] * g1Image[i / 2][j / 2]
扩展方程正在运行。
然而,显示的图像似乎没有平滑效果。
任何人都可以向我解释如何为每个高斯金字塔缩减,高斯金字塔扩展以及m和n边界设置图像尺寸?
答案 0 :(得分:-1)
我通过包含这一行解决了这个问题
index1 = (2 * h) + m; index2 = (2 * w) + n;
if(index1 >= 0 && index1 < Height && index2 >= 0 && index2 < Width)
temp = w[m + 2][n + 2] * original_image[index1][index2];