我一直试图在图像中找到抛物线。为了开始的目的,我拍摄了一张白色背景上带有黑色抛物线的图像。然后我使用 find 命令找到了图像上的黑色像素
[yi xi] = find(im<10); % im is the image with black parabola and white background
之后,我从集合中随机抽取 3 个点,并使用符号工具箱求解抛物线方程
syms x y;
%solve them for the parabola equation
A = [ x^2 x y 1 ;x0^2 x0 y0 1; x1^2 x1 y1 1; x2^2 x2 y2 1];
在哪里
%(x0,y0) = (104,137)
%(x1,y1) = (244,161)
%(x2,y2) = (300,229)
S = solve(det(A),y);
然后我得到系数 a,b,c 为
a = 0.0100
b = -1.6800
c = 254.1900
其中 a、b 和 c 是
a*x^2 + b*x + c = y;
从现在开始,我得到了 eqn,我通过放置系数值并取来绘制抛物线
xx = 1:300;
yy = a*xx.^2 + b*xx +c ;
然后我将图像上的抛物线绘制为
plot(xx,yy,'-');
为了确认我已经采取了正确的点,我还在图像上绘制了选定的点,它们正好位于图像中的抛物线上。所以这不是问题。
问题是:
- 我绘制的抛物线(蓝色)不在图像的抛物线上(黑色)。
当我将 x 坐标的值放入上述等式时。y 的值与 y 坐标的值不同。
例如:(104,137)
0.0100*104*104 -1.68*104 + 254.19 = 108.16 - 174.72 + 254.19 = 187.63 而应该是137
我的抛物线是错误的。任何帮助将不胜感激。图像是