How to crop out the barcode??
古いコメントを表示
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;
採用された回答
その他の回答 (2 件)
Image Analyst
2012 年 2 月 11 日
1 投票
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
2012 年 2 月 11 日
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
2012 年 2 月 16 日
0 投票
I tried to use the code posted by Kim with the image above, but I obtained this figure:
How is it possible?
カテゴリ
ヘルプ センター および File Exchange で Image Processing Toolbox についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!