2013-02-07 8 views
8

मैं ओपनसीवी के साथ काम कर रहा हूं और मुझे यह समझने की जरूरत है कि फ़ंक्शन फिट कैसे कार्य करता है। मैंने कोड को देखा (https://github.com/Itseez/opencv/blob/master/modules/imgproc/src/shapedescr.cpp) और मुझे पता है कि यह संभावित अंडाकारों को निर्धारित करने के लिए कम से कम वर्गों का उपयोग करता है। मैंने प्रलेखन में दिए गए पेपर को भी देखा (एंड्रयू डब्ल्यू फिट्जगिबोन, आरबीफ़िशर। कॉनिक फिटिंग के लिए एक क्रेता गाइड। प्रो .5 ब्रितानी मशीन विजन सम्मेलन, बर्मिंघम, पीपी 513-522, 1 99 5।)ओपनसीवी में फिट एलीपसे कैसे काम करता है?

लेकिन मैं बिल्कुल एल्गोरिदम नहीं समझ सकता। उदाहरण के लिए, कम से कम वर्ग समस्या को हल करने की आवश्यकता क्यों है? बीडी को पहले एसवीडी से पहले 10000 में क्यों शुरू किया गया है (मुझे लगता है कि यह प्रारंभिकरण के लिए एक यादृच्छिक मूल्य है लेकिन यह मान यादृच्छिक क्यों हो सकता है?)? विज्ञापन में मूल्यों को पहले svd से पहले ऋणात्मक क्यों होना चाहिए?

धन्यवाद!

उत्तर

1

यहाँ मैटलैब कोड है .. यह मदद कर सकता है

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 समाधान हालांकि कुछ संख्यात्मक स्थिरता है। इस समाधान के लिए हलीर के काम को देखें।

यह अनिवार्य कम से कम वर्गों समाधान है, लेकिन विशेष रूप से इतना है कि यह एक वैध अंडाकार, बस किसी भी शांकव नहीं उत्पादन करेगा बनाया गया है।

संबंधित मुद्दे