Wie kann ich die Formel ändern, um den Barcode in jedem Winkel zu erkennen? - MATLAB

  • Wie kann ich die Formel ändern, um den Barcode in jedem Winkel zu erkennen?

    Wie kann ich die Formel ändern, um den Barcode in jedem Winkel zu erkennen? - MATLAB

    Wie kann ich die Formel ändern, um den Barcode in jedem Winkel zu erkennen? - MATLAB Wie kann ich die Formel ändern, um den Barcode in jedem Winkel zu erkennen? - MATLAB

      rgb = imread('barcode4.jpg');
    % Resize Image
    rgb = imresize(rgb,0.33);
    figure(),imshow(rgb);
    % Convert from RGB to Gray
    Igray = double(rgb2gray(rgb));
    % Calculate the Gradients
    [dIx, dIy] = gradient(Igray);
    B = abs(dIx) - abs(dIy);
    % Low-Pass Filtering
    H = fspecial('gaussian', 20, 10);
    C = imfilter(B, H);
    C = imclearborder(C);
    figure(),imagesc(C);colorbar
     
    31 January 2012
    Eldila
2 answers
  • Wenn der von Ihnen verwendete Filter gut genug für Sie ist, können Sie einfach imrotate verwenden, um mehrere gedrehte Versionen des Quellbilds zu erstellen und den jeweils verwendeten Filter zu verwenden (stellen Sie sicher, dass Sie bilinear um sinnvolle Ableitungen zu erhalten)

    30 January 2012
    The How-To Geek
  • Ihre Gleichung hebt Bereiche hervor, in denen der Gradient in X-Richtung konstant höher ist als in Y-Richtung. Damit dies in alle Richtungen funktioniert, möchten Sie wahrscheinlich Bereiche, in denen der Gradient in allen Richtungen hoch ist.

    Versuchen Sie, Folgendes zu verwenden:

     B = double(sqrt(dIx.^2 + dIy.^2) > 0)
     

    Dies bedeutet nicht, dass im Grunde jede Kante hervorgehoben wird. Der Tiefpassfilter bedeutet jedoch, dass Sie mehrere Kanten nebeneinander benötigen.

    30 January 2012
    Nzbuu