How to crop out the barcode??

6 ビュー (過去 30 日間)
Kim
Kim 2012 年 2 月 11 日
コメント済み: Daniel Purba 2020 年 7 月 27 日
I have found out the way to determine the barcode and currently working on cropping out the barcode. How can I write the code so that it can crop out the barcode?? I have paste my original image and my coding below.
Original Image
Processed Image
% Read Image
rgb = imread('barcode.jpg');
% Resize Image
rgb = imresize(rgb,0.33);
%figure(),imshow(rgb);
% Convert from RGB to Gray
Igray = rgb2gray(rgb);
BW2 = edge(Igray,'canny');
%figure(),imshow(BW2);
% Perform the Hough transform
[H, theta, rho] = hough(BW2);
% Find the peak pt in the Hough transform
peak = houghpeaks(H);
% Find the angle of the bars
barAngle = theta(peak(2));
J = imrotate(rgb,barAngle,'bilinear','crop');
%figure(),imshow(J);
Jgray = double(rgb2gray(J));
% Calculate the Gradients
[dIx, dIy] = gradient(Jgray);
%if min(dIx(:))<= -100 && max(dIx(:))>=100 || min(dIy(:))<=-100 && max(dIy(:))>=100
if barAngle <= 65 && barAngle >=-65 && min(dIx(:))<= -100
B = abs(dIx) - abs(dIy);
else
B = abs(dIy) - abs(dIx);
end
% Low-Pass Filtering
H = fspecial('gaussian', 20, 10);
C = imfilter(B, H);
C = imclearborder(C);
%figure(),imshow(C);
figure(),imagesc(C);colorbar;

採用された回答

Chandra Kurniawan
Chandra Kurniawan 2012 年 2 月 12 日
D = C > 20;
Ilabel = bwlabel(D);
stat = regionprops(Ilabel,'boundingbox');
for x = 1 : length(stat)
Icrop{x} = imcrop(J,stat(x).BoundingBox);
end
  1 件のコメント
Daniel Purba
Daniel Purba 2020 年 7 月 27 日
Mas Chandra, saya menggunakan Code seperti diatas untuk cropping, hanya saja terkendala harus memilih mana cropping image yang mengandung barcode. Apakah ada code khusus untuk langsung mendapatkan cropped image yang mengandung barcode? Terimakasih.
Chandra, I tried the code you gave, the obstacle is we still have to choose a region that contains a barcode. Is there a way that directly displays a cropped image that contains a barcode? Thanks.

サインインしてコメントする。

その他の回答 (2 件)

Image Analyst
Image Analyst 2012 年 2 月 11 日
Looks like thresholding at about 20 should do it. Then label and use regionprops to do size filtering and get the bounding box. Then use imcrop to do the cropping.
  2 件のコメント
Kim
Kim 2012 年 2 月 11 日
How can I implement this to my coding??
Image Analyst
Image Analyst 2012 年 2 月 12 日
Looks like Chandra provided that to you. If you want just the biggest blob though, you'd have to do it slightly differently.

サインインしてコメントする。


Andrea Carron
Andrea Carron 2012 年 2 月 16 日
I tried to use the code posted by Kim with the image above, but I obtained this figure:
How is it possible?

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by