¿Cómo puedo cambiar la fórmula para detectar el código de barras en cada ángulo?
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
Su ecuación resalta áreas donde la magnitud del gradiente en la dirección X es consistentemente más alta que en la dirección Y. Para que esto funcione en todas las direcciones, entonces probablemente desee áreas donde la magnitud del gradiente en cualquier dirección sea alta.
Intenta usar lo siguiente:
No es que esto básicamente resalte cada borde, pero el filtro de paso bajo significará que necesita varios bordes muy juntos.
fuente