Bagaimana saya bisa mengubah formula untuk mendeteksi barcode di setiap sudut?
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
Persamaan Anda menyoroti area di mana besarnya gradien dalam arah X secara konsisten lebih tinggi daripada di arah Y. Untuk membuat ini bekerja di semua arah, maka Anda mungkin ingin area di mana besarnya gradien di segala arah tinggi.
Coba gunakan yang berikut ini:
Bukan berarti ini pada dasarnya akan menyorot setiap sisi, tetapi filter low-pass akan berarti Anda perlu beberapa sisi saling berdekatan.
sumber