交叉口寻找算法的优化

时间:2011-10-10 22:08:15

标签: algorithm line intersection

在我用MIPS程序集编写代码之前,我正在尝试大量优化我编写的一段代码。以下是我的代码的链接:http://dl.dropbox.com/u/7264839/P1-3.c

问题是在64x64矩阵中找到1个不同颜色的像素宽线之间的交叉点数。交叉点不计入T个交叉点。此外,行之间总是至少有1个像素的空间。这是一张图片的样子。

http://dl.dropbox.com/u/7264839/Pics/pile1.png

我的基本算法是查看每个像素(除了周边的像素),如果是黑色,则忽略它。如果它不是黑色,检查两个侧面,如果它们是相同的颜色而不是黑色,检查另一侧,如果它们是相同的颜色,而不是黑色,并且与另一侧的颜色不同,则有一个路口。此外,如果找到交叉点,则可以忽略下一个像素。

我已经找到了几个优化但是动态执行时间的条件仍需要快得多。你们有任何关于加速它或一个更好的算法的技巧。非常感谢!

1 个答案:

答案 0 :(得分:1)

你可以在黑色区域上优化你的算法:因为相交线在两个方向上需要至少3个像素长,你可以使用以下模式检查每组9个像素只有3个像素:

X  .  .
.  X  .
.  .  X

如果每个3x3正方形上没有像素是非黑色的,则跳过方形。如果至少有一个是非黑色的,则使用原始算法。

如果您的彩色/黑色比率较低,则可以将代码提高约3倍。