我有一个积分图像,我从一个普通的灰色图像计算出来。我检查了它,它看起来像这样:
现在我在积分图像上应用了一些Box滤镜,例如SURF中使用的Box滤镜。
现在我的问题是滤镜在Image角落处作出反应。我认为它来自过滤箱的外移。所以现在我知道我必须实施一些边界处理。首先,我认为将Integralimage的第一行和第一列设置为零会有所帮助,但它没有帮助。 我在Stackoverflow上找到了这个:
Dealing with Boundary conditions / Halo regions in CUDA
将此技术应用于Integralimage的最佳方法是什么?为积分图像构建一些边缘镜像,夹具等是否有意义?或者我应该使用InputeImage来计算积分图像?有人有经验或有一种典型的方法来处理这个问题吗?
编辑:
“相反,当你在边境时,你想要在你的过滤器代码中做一些索引。”好的,此刻我这样做,所以我只能重复一遍,IntegralImage的第一列和第一行是零。
int GetBoxIntegral(int xUp, int yUp, int xBot, int yBot)
{
yUp = Math.min(Math.max(0, yUp), m_integralImage.GetHeight() - 1);
xUp = Math.min(Math.max(0, xUp), m_integralImage.GetWidth() - 1);
yBot = Math.min(Math.max(0, yBot), m_integralImage.GetHeight() - 1);
xBot = Math.min(Math.max(0, xBot), m_integralImage.GetWidth() - 1);
int A = 0, B = 0, C = 0, D = 0;
A = m_integralImage.GetPixel(xUp, yUp);
B = m_integralImage.GetPixel(xBot, yUp);
C = m_integralImage.GetPixel(xUp, yBot);
D = m_integralImage.GetPixel(xBot, yBot);
return Math.max(0, A + D - B - C);
}
答案 0 :(得分:0)
1)"将这些技术应用于我的Integralimage的最佳方法是什么?"这一切都取决于你想要的结果。例如,对于特征检测,没有必要赶上靠近边框的像素,并且所有滤镜都应位于图像内。
2)"为积分图像构建一些边缘镜像,夹具等是否有意义?或者我应该使用InputeImage来计算积分图像?"更快地构建带边框的整体图像,可以减少计算量。
3)"有经验的人还是有一种典型的方法可以解决这个问题?"我知道2种典型的解决方案首先,忽略需要在图像外进行计算的所有像素(特征检测)。其次,夹紧整数图像查询的矩形(框模糊滤镜)。