Wie kann ich die Formel ändern, um den Barcode in jedem Winkel zu erkennen?
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
Ihre Gleichung hebt Bereiche hervor, in denen die Größe des Gradienten in X-Richtung konstant höher ist als in Y-Richtung. Damit dies in alle Richtungen funktioniert, benötigen Sie wahrscheinlich Bereiche, in denen der Gradient in einer beliebigen Richtung hoch ist.
Versuchen Sie Folgendes:
Dies hebt im Grunde nicht jede Kante hervor, aber der Tiefpassfilter bedeutet, dass Sie mehrere Kanten nahe beieinander benötigen.
quelle