我想在一张512 X 512像素大小的图片中检测抛物线(类型为y^2 = 4a*x)。我准备了一个累加器数组,acc(大小为512 X 512 X 512)。我准备了一个对应于该图像的矩阵。我使用了hough-transform方法。以下是我的操作过程:
for x = 1 to 512
for y= 1 to 512
if image_matrix(x,y)> 245//almost white value, so probable to be in parabola
{
for x1= 1 to 512
for y1= 1 to 512
{
calculate 'a' from (y-y1)^2 = 4*a*(x-x1).
increment acc(i,j,k) by 1
}
}
if acc(i,j,k) has a maximum value.
{
x1=i, y1=j,a =k
}
我面临以下问题:
1)acc[512][512][512]占用大量内存。它需要巨大的计算。如何减少数组大小并最小化计算? 2)不总是acc(i,j,k)的最大值项给出预期的输出。有时第二或第三个最大值,甚至第10个最大值可以给出所需的输出。我需要“a”,“x1”,“y1”的近似值(而非精确值)。
请帮忙。我的概念有什么错误吗?