タイプの放物線を検出したい: y^2 = 4a*x 画像 [サイズ: 512 X 512]。アキュムレータ配列 acc[size: 512 X 512 X 512] を用意しました。そのイメージに対応したMATRIXを用意しました。ハフ変換を使用しました。これが私がやった方法です:
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) の最大値エントリが常に意図した出力を与えるとは限りません。場合によっては、2 番目または 3 番目の最大値、さらには 10 番目の最大値でも意図した出力が得られます。私は約が必要です。'a'、'x1'、'y1' の値 (正確な値ではありません)。
私を助けてください。私のコンセプトに何か問題はありますか?