2013-02-07 66 views
8

Tôi đang làm việc với opencv và tôi cần phải hiểu hàm fitEllipse hoạt động chính xác như thế nào. Tôi đã xem mã tại số (https://github.com/Itseez/opencv/blob/master/modules/imgproc/src/shapedescr.cpp) và tôi biết nó sử dụng các ô vuông nhỏ nhất để xác định các dấu chấm lửng có khả năng. Tôi cũng đã xem xét bài báo được đưa ra trong tài liệu (Andrew W. Fitzgibbon, RBFisher. Hướng dẫn của Người mua về Lắp ghép Conic. Hội nghị Tầm nhìn Máy Anh, Birmingham, trang 513-522, 1995.)FitEllipse hoạt động như thế nào trong OpenCV?

Nhưng Tôi không thể hiểu chính xác thuật toán. Ví dụ, tại sao nó cần phải giải quyết 3 lần vấn đề vuông góc nhất? tại sao bd được khởi tạo đến 10000 trước khi svd đầu tiên (tôi đoán nó là juste một giá trị ngẫu nhiên cho việc khởi tạo nhưng tại sao giá trị này có thể là ngẫu nhiên?)? tại sao các giá trị trong quảng cáo cần phải âm khi trước svd đầu tiên?

Cảm ơn bạn!

Trả lời

1

Đây là Matlab mã .. nó có thể giúp

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 

Fitzibbon giải pháp có một số ổn định số mặc dù. Xem công việc của Halir cho một giải pháp cho điều này.

Đây thực chất là giải pháp hình vuông nhỏ nhất, nhưng được thiết kế đặc biệt sao cho nó sẽ tạo ra một hình elip hợp lệ, không chỉ bất kỳ hình nón nào.

Các vấn đề liên quan