Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing fitEllipse如何在OpenCV中工作?_Image Processing_Opencv_Shape_Ellipse - Fatal编程技术网

Image processing fitEllipse如何在OpenCV中工作?

Image processing fitEllipse如何在OpenCV中工作?,image-processing,opencv,shape,ellipse,Image Processing,Opencv,Shape,Ellipse,我正在使用opencv,我需要了解函数fitEllipse到底是如何工作的。我查看了()中的代码,知道它使用最小二乘法来确定可能的椭圆。我还查看了文件中给出的论文(Andrew W.Fitzgibbon,R.B.Fisher.《圆锥拟合买方指南》,第五届英国机器视觉会议,伯明翰,第513-5221995页) 但我不能准确理解算法。例如,为什么它需要解3次最小二乘问题?为什么bd在第一个svd之前被初始化为10000(我想这只是初始化的一个随机值,但为什么这个值可以是随机的?)?为什么在第一次sv

我正在使用opencv,我需要了解函数fitEllipse到底是如何工作的。我查看了()中的代码,知道它使用最小二乘法来确定可能的椭圆。我还查看了文件中给出的论文(Andrew W.Fitzgibbon,R.B.Fisher.《圆锥拟合买方指南》,第五届英国机器视觉会议,伯明翰,第513-5221995页)

但我不能准确理解算法。例如,为什么它需要解3次最小二乘问题?为什么bd在第一个svd之前被初始化为10000(我想这只是初始化的一个随机值,但为什么这个值可以是随机的?)?为什么在第一次svd之前Ad中的值必须为负值


谢谢大家!

以下是Matlab代码。。也许会有帮助

function [Q,a]=fit_ellipse_fitzgibbon(data)
  % function [Q,a]=fit_ellipse_fitzgibbon(data)
  %
  % Ellipse specific fit, according to:
  %
  %  Direct Least Square Fitting of Ellipses,
  %  A. Fitzgibbon, M. Pilu and R. Fisher. PAMI 1996
  %
  %
  % See Also:
  %   FIT_ELLIPSE_LS
  %   FIT_ELLIPSE_HALIR

  [m,n] = size(data);
  assert((m==2||m==3)&&n>5);
  x = data(1,:)';
  y = data(2,:)';

  D = [x.^2 x.*y y.^2 x y ones(size(x))];   % design matrix
  S = D'*D;                                 % scatter matrix
  C(6,6)=0; C(1,3)=-2; C(2,2)=1; C(3,1)=-2; % constraints matrix
  % solve the generalized eigensystem
  [V,D] = eig(S, C);
  % find the only negative eigenvalue
  [n_r, n_c] = find(D<0 & ~isinf(D));
  if isempty(n_c),
    warning('Error getting the ellipse parameters, will do LS');
    [Q,a] = fit_ellipse_ls(data); %
    return;
  end
  % the parameters
  a = V(:, n_c);
  [A B C D E F] = deal(a(1),a(2),a(3),a(4),a(5),a(6)); % deal is slow!
  Q = [A B/2 D/2; B/2 C E/2; D/2 E/2 F];
end % fit_ellipse_fitzgibbon
function[Q,a]=fit_eliple_fitzgibbon(数据)
%函数[Q,a]=拟合椭圆fitzgibbon(数据)
%
%椭圆特定配合,根据:
%
%椭圆的直接最小二乘拟合,
%A.菲茨吉本、M.皮鲁和R.费舍尔。帕米1996
%
%
%另见:
%拟合椭圆
%拟合椭圆
[m,n]=尺寸(数据);
断言((m==2 | | m==3)和&n>5);
x=数据(1,:)';
y=数据(2,:)';
D=[x.^2 x.*y.^2 x y个(尺寸(x))];%设计矩阵
S=D'*D;%散射矩阵
C(6,6)=0;C(1,3)=-2;C(2,2)=1;C(3,1)=-2;%约束矩阵
%求解广义本征系统
[V,D]=eig(S,C);
%找到唯一的负特征值
[n_r,n_c]=find(D