Как я могу изменить формулу, чтобы обнаружить штрих-код под каждым углом?
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
Ваше уравнение выделяет области, где величина градиента в направлении X постоянно выше, чем в направлении Y. Чтобы это работало во всех направлениях, вам, вероятно, нужны области, где величина градиента в любом направлении велика.
Попробуйте использовать следующее:
Не то чтобы это в основном подсвечивало каждое ребро, но фильтр нижних частот будет означать, что вам нужно несколько ребер близко друг к другу.
источник