가장자리 감지 기술을 사용하여 바코드 감지를위한 MATLAB 코드는 Hough tranform & 에지 감지 기술이 필요합니다.허프 변이 및 가장자리 감지를 사용하는 바코드 감지
나는 이것을 위해 MATLAB 기능을 내장 시도하지만, 에지 검출 또는 바코드 감지
그래서, 도움의 어떤 종류가 많이 감사를 Hough 변환에 대해 거의 알고 있기 때문에 결과를 가져올 수 없습니다. 지금까지 내가이 ..
a=imread('BEAN13.jpg');
b = rgb2gray(a);
rotI = imrotate(b,30,'crop');
%figure,imshow(rotI)
BW = edge(rotI,'sobel');
[H,T,R] = hough(BW);
imshow(H,[],'XData',T,'YData',R,...
'InitialMagnification','fit');
xlabel('\theta'), ylabel('\rho');
axis on, axis normal, hold on;
P = houghpeaks(H,5,'threshold',ceil(0.3*max(H(:))));
x = T(P(:,2)); y = R(P(:,1));
plot(x,y,'s','color','white');
lines = houghlines(BW,T,R,P,'FillGap',5,'MinLength',7);
figure, imshow(rotI), hold on
max_len = 0;
for k = 1:length(lines)
xy = [lines(k).point1; lines(k).point2];
plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green');
% Plot beginnings and ends of lines
plot(xy(1,1),xy(1,2),'x','LineWidth',2,'Color','yellow');
plot(xy(2,1),xy(2,2),'x','LineWidth',2,'Color','red');
% Determine the endpoints of the longest line segment
len = norm(lines(k).point1 - lines(k).point2);
if (len > max_len)
max_len = len;
xy_long = xy;
end
end
지금 내가 바코드 스캔/디코딩 알고리즘을 필요로했다 ... &도 허프 변환 할 수있는 더 나은 방법에 대한 제안을해야합니다.
고맙습니다 세그멘테이션. 그러나 나의 프로젝트는 hough transform & sub pixel edge detection의 사용을 요구한다. 그럼 바코드 디코딩 알고리즘이 필요해. –
위의 루프는 간단한 바코드 디코딩 알고리즘을 제공합니다. 'bars [] '벡터에서 합계의 크기를 조절하면됩니다. – DevNull
해결 방법이 있습니다. 기본적으로 이미지를 thresholding 한 다음 Hough 변환을 사용하여 Hough 변환에서 가장 큰 피크를 검색하여 바코드 2D 이미지에서 가장 긴 단일 라인을 감지합니다. 그런 다음 주성분 분석을 사용하여 선의 방향 각을 결정한 다음 회전을 통해 이미지를 표준화 할 수 있습니다.그럼 위의 간단한 선폭 감지 루프 코드를 사용할 수 있습니다. Hough 변환의 유일한 필요는 이미지가 사전 정렬되지 않은 경우입니다. – DevNull