Algorithm 积分图像边界处理
我有一个积分图像,我从一个正常的灰度图像计算出来。我检查了一下,它看起来像这样: 现在我在积分图像上应用了一些盒子过滤器,例如SURF中使用的盒子过滤器 我现在的问题是,过滤器会在图像的各个角落做出反应。我认为这是由于过滤器箱的换档速度变慢造成的。所以现在我知道我必须实施一些边境管理。首先,我认为将Integralimage的第一行和第一列设置为零会有帮助,但没有帮助。 我在Stackoverflow上找到了这个: 如何将此技术应用于我的图像?在整体图像上构建一些边缘mirro、夹具等有意义吗?或者在计算积分图像之前,我应该用输入图像来做这件事吗?是否有人对此有经验,或者是否有一种典型的方法来处理此问题 编辑: “相反,当你在边界上时,你想在你的过滤代码中做一些索引修改。”好的,现在我这样做,所以我只能重复我自己,IntegralImage的第一列和第一行是零Algorithm 积分图像边界处理,algorithm,image-processing,feature-detection,surf,Algorithm,Image Processing,Feature Detection,Surf,我有一个积分图像,我从一个正常的灰度图像计算出来。我检查了一下,它看起来像这样: 现在我在积分图像上应用了一些盒子过滤器,例如SURF中使用的盒子过滤器 我现在的问题是,过滤器会在图像的各个角落做出反应。我认为这是由于过滤器箱的换档速度变慢造成的。所以现在我知道我必须实施一些边境管理。首先,我认为将Integralimage的第一行和第一列设置为零会有帮助,但没有帮助。 我在Stackoverflow上找到了这个: 如何将此技术应用于我的图像?在整体图像上构建一些边缘mirro、夹具等有意
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);
}
1) “如何将此技术应用于我的Integralimage的最佳方法?”这完全取决于您想要的结果。例如,对于特征检测,捕捉边界附近的像素是没有意义的,所有过滤器都应该位于图像内部
2) “在积分图像上构建一些边缘mirro、climp等有意义吗?或者我应该在计算积分图像之前使用输入图像进行此操作吗?”构建带边框的积分图像的速度越快,计算量越少
3) “有没有人有过这样的经验,或者有没有一种典型的方法来处理这个问题?”我知道两种典型的解决方案。首先,忽略所有需要图像外部计算的像素(特征检测)。第二,钳制整型图像查询的矩形(框模糊过滤器)。谢谢你的回答,现在我在边界处镜像图像。工作正常,但需要更多的内存用于整体图像。忽略需要来自图像外部的信息的点听起来似乎是合理的。Think将实现它,以便您可以同时做到这两个方面。镜像版本会使兴趣点的数量增加很多。