我试图用c++为高斯金字塔编写我自己的代码。
我试着用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边界设置我的图像维数吗?
发布于 2016-01-21 07:22:25
我把这一行包括在内解决了这个问题。
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
https://stackoverflow.com/questions/34916257
复制相似问题