0xS*_*ina 2 signal-processing image-processing avfoundation ios gpuimage
使用GPUImage,我能够检测图像中书籍/页面的角落.但有时,它会超过4个点,在这种情况下,我需要处理并找出这些点中最好的矩形.这是一个例子:

在这种情况下,找出最佳矩形的最有效方法是什么?谢谢
如果您正在使用角点检测算法,则可以根据检测到的角点的相对强度过滤结果.书角相对于当前背景的对比度似乎比木纹中的对比度强得多.是否存在与每个点相关的相对大小,或者您是否获得了分数?除非前景和背景的强度相对恒定,否则设置边缘强度的阈值可能意味着大量的摆弄.
您的示例图像可能会模糊或变形.例如,光像素上的正确形态"闭合"可以消除木纹中的纹理,而不会影响书的大小和形状.(http://en.wikipedia.org/wiki/Mathematical_morphology)
另一种可能性是将图像缩小到更小的尺寸,然后对其进行检测.调整图像大小将会消除微小的细节,例如当前检测到的任何木纹图案.
选择合适的镜头和照明可以使图像更容易处理.在处理之前尽量简化图像.如上所述,仅照亮书籍边缘的"暗场"照明将呈现用于处理的更简单的图像.写下约束可以使哪个解决方案最强大,最简单的实现更加明显.在图像中的任何位置查找任何矩形都非常困难; 如果矩形的尺寸至少为100 x 100像素,从正方形到图像边缘旋转不超过15度等,则在深色背景上找到浅色矩形要容易得多.
更多涉及的解决方案可分为两种方法:
1.解决只给出点数的程序 如果你通常只有5点或6点,如果你确信其中4点将属于你想要的矩形的角落,那么你可以试试这个:
http://en.wikipedia.org/wiki/Convex_hull
可以引入许多其他检查和约束.例如,如果凸包中3个连续点(点N到N + 1,N + 1到N + 2)的点到点距离接近书的预期宽度和高度,那么你可能会将这些标记为已知的优点,并仅测试其余的点以查看哪个是第四点.
如果你得到很多分数,上面的技术可能变得笨拙,但是如果预计在凸包上发现两个或三个书角点,它可能会起作用.
对于任何几何问题,我总是建议您查看GeometricTools.com,它有很多优秀的源代码可以解决各种问题.这本书也非常方便,特别是如果你能用AddAll.com找到便宜的副本.
http://www.geometrictools.com/
2.样本图像的其他图像处理技术 虽然我可能错了,但GPUImage似乎没有很多通用的图像处理算法.一些其他图像处理算法可以使这个问题更容易解决.
虽然这里没有空间,但成功进行图像处理的关键之一是适当的照明.确保你的照明是一致的.漫射光均匀照亮书本和背景,效果很好.您可以使用更有趣的灯光来简化问题:如果您有四个灯(或特殊的环形灯),您可以从顶部,底部,左侧和右侧提供水平照明,这将使书的边缘显得明亮,而其他表面看起来很暗. http://www.benderassoc.com/mic/lighting/nerlite/Darkfield.htm
如果您可以使用其他一些GPU库来进行图像处理,那么下列技术之一可以很好地工作:
最有效的算法技术将取决于您的约束:您是否正在寻找仅具有特定大小的矩形?前景和背景之间的对比是否一致?你能引入照明来简化图像的外观吗?等等.