2013-03-29 2 views
3

자연스러운 이미지의 텍스트를 감지하는 matlab 프로그램을 작성 중입니다. 나는 this video lecture and paper의 도움을 받는다. 처음 몇 단계를 이해하고 가장자리 감지를 수행했습니다 (아래 이미지 추가). 이제 최종 이미지에서 텍스트 만 추출 (분리)하고 싶습니다. 어떻게해야합니까?Matlab을 사용하여 이미지에서 텍스트 영역을 추출하는 방법은 무엇입니까?

내 코드 :

i = imread('f:\new.jpg'); 
i1 = rgb2gray(i); 
imshow(i1); 

i2 = edge(i1,'canny',0.3); 
imshow(i2); 

se = strel('square',2); 
i3 = imdilate(i2,se); 
imshow(i3); 

i4 = imfill(i3,'holes'); 
imshow(i4); 

[Ilabel num] = bwlabel(i4); 
disp(num); 
Iprops = regionprops(Ilabel); 
Ibox = [Iprops.BoundingBox]; 
Ibox = reshape(Ibox,[4 92]); 
imshow(i); 

hold on; 
for cnt = 1:92 
    rectangle('position',Ibox(:,cnt),'edgecolor','r'); 
end 

최종 이미지 : enter image description here

답변

1

이미지의 일부를 잘라내는 인덱스를 경계 것 알고 행렬에서 부분 행렬을하는 것입니다.

submat = mainmat(y1:y2,x1:x2); 

하위 행렬을 추출하기 전에 당신이 얻을 수있다 : 예를 들어 서브 매트릭스 (모든 경계 포함) 당신이 하위 행렬을 얻을 것 x2y2 행과 x1 열에서 y1 행에서 스트레칭하는 경우 모든 글자의 경계 좌표. 한 글자의 좌표가 y이고 x 인 경우; 문자 그럴 수 후 별도의 문자 하나 모두를 위해 위의 절차를 수행 한 후

% x-coordinates of the region are in the vector x 
x1 = min(x(:)); 
x2 = max(x(:)); 
% y-coordinates of the region are in the vector y 
y1 = min(y(:)); 
y2 = max(y(:)); 

: 그것은 이미지의 영역의 모든 좌표, 또는 단지 지역의 가장자리의 좌표, 당신과 좌표를 경계 얻을 수 있습니다 - 하나씩, 그러나 문자의 연결된 영역을 분리하려면 문자의 경계 사각형이 겹쳐져 있는지 확인해야합니다.

+0

답장을 보내 주셔서 감사합니다. 하지만 불필요한 것들을 둘러싼 상자가 있기 때문에 텍스트 영역을 자르려면 어떻게해야합니까?이 문제에 대해 도움을 줄 수 있습니까? – Heisenberg

+0

@Heisenberg 다음과 같이 구체적으로 설명해야합니까? 1. 특정 사례에서 경계 좌표를 찾는 절차? 2. 편지의 연결된 지역을 얻는가? 나는 그 순간에 그것을 할 수 없지만 나중에 시간이있을 것입니다 ... – plesiv

+1

당신의 도움에 감사드립니다. 나는 적어도 다음에 무엇을해야하는지에 대한 단서를 가지고있다. :) – Heisenberg

관련 문제