모든 각도에서 바코드를 감지하도록 공식을 변경하려면 어떻게해야합니까? -MATLAB


14

모든 각도에서 바코드를 감지하도록 공식을 변경하려면 어떻게해야합니까?

공식

원본 이미지 처리 된 이미지

 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

답변:


8

당신은 당신을 위해 충분히 작품을 필터, 당신은 간단하게 사용할 수있는 경우 imrotate소스 이미지의 여러 회전 된 버전을 만들기 위해, 당신은 그들 각각에있는 필터를 사용 (확인 사용할 수 있도록 bilinear합리적인 파생 상품을 얻기 위해)


충고 감사합니다. 회전 된 버전을 여러 개 만들려면 어떻게해야합니까 ?? 죄송합니다, MatLab을 처음 사용합니다

바코드를 세로 또는 가로로 가져옵니다. 그러나 수식은 가로 바코드 만 감지 할 수 있습니다. 세로 및 가로 모두 바코드를 감지 할 수 있도록 수식을 변경할 수 있습니까?

mathworks.com/matlabcentral/fileexchange/31727-barcode-reader 이 링크를 확인할 수 있습니다
vini

7

방정식은 X 방향의 그라디언트 크기가 Y 방향보다 일관되게 높은 영역을 강조 표시합니다. 이 작업을 모든 방향으로 수행하려면 모든 방향의 그래디언트 크기가 높은 영역을 원할 것입니다.

다음을 사용해보십시오.

B = double(sqrt(dIx.^2 + dIy.^2) > 0)

이것이 기본적으로 모든 모서리를 강조하지는 않지만 저역 통과 필터는 여러 모서리를 서로 가깝게 만들어야한다는 것을 의미합니다.


코딩 주셔서 감사합니다! 그러나 수식을 바꾸려고 할 때 코드를 어디에 넣을 지 모르겠습니다. 모든 것이 녹색이었습니다.

업데이트 된 버전을 사용해보십시오.
Nzbuu

그러나 이제 전체 이미지가 빨간색으로 바뀝니다!
Kim

바코드를 세로 또는 가로로 가져옵니다. 그러나 수식은 가로 바코드 만 감지 할 수 있습니다. 세로 및 가로 모두 바코드를 감지 할 수 있도록 수식을 변경할 수 있습니까?
Kim

나는이 furmule을 테스트합니다 ''B = double (sqrt (dIx. ^ 2 + dIy. ^ 2)> 0) "작동하지 않습니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.