高斯金字塔超出界限

时间:2016-01-21 05:48:39

标签: c++ arrays image-processing gaussian

我正在尝试使用c ++编写自己的高斯金字塔代码。

我尝试了http://persci.mit.edu/pub_pdfs/pyramid83.pdf,等式(1)和(2)中所述的缩小和展开方程式。但是,当我尝试访问

时,我的数组索引超出范围 分别为

[2i + m][2j + n][(i - m) / 2][(j - n) / 2]

我的高斯核:5x5矩阵; g1Image:原始图像缩小1级,行和列都是原始图像尺寸的一半。

我的mn设置为-2 < m/n <= 2,因此当我访问我的高斯内核时,我将索引加2,成为

w[m + 2][n + 2] * original_image[2i + m][2j + n]

我确实尝试将mn设置为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边界设置图像尺寸?

1 个答案:

答案 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];

更多信息:
http://www.songho.ca/dsp/convolution/convolution.html