我有一个二进制条形码图像,我想应用我创建的 sobel 过滤器,以便我可以检测条形码行的正/负垂直边缘,然后我可以使用它来确定每个条形码行的开始/结束。实现我自己的 sobel 过滤器的想法是,我可以保留极性(用于每个条码行的开始/结束),然后在标记条码中每个条的开始和结束的正/负值上绘制不同的颜色线。
我的问题是,当我在输出图像中应用过滤器时,我没有从原始条形码中获取每一行。任何人都可以在我的代码中看到问题吗?
Image =imread('barcode.jpg')
I = im2double(Image);
G = rgb2gray(I);
avgI=mean(mean(G))
Threshold = avgI;
T=(G<Threshold);
figure()
New = T.*G
imshow(New);
G = [1 0 -1
2 0 -2
1 0 -1];
Output = I;
for n = 1:1000
Output = conv2(New,G); % 2D Convolution Function
end
subplot(1,2,1), imshow (New);
subplot(1,2,2), imshow (Output);