2013-04-12 2 views
0

문자로 스캔 한 이미지를 찍은 다음 문자를 자르고 매트릭스에 저장했습니다.이진 이미지 데이터를 자체 구성 맵으로 보내는 방법

X={}; 
Y={}; 
for cnt = 1:50 
    rectangle('position',box(:,cnt),'edgecolor','r'); 
    X{cnt}=imcrop(I, box(:,cnt)); 
    Y{cnt}=im2bw(X{cnt}); 
end 

여기 상자에는 사각형의 좌표가 있습니다. 나는 newsom에 대한 입력으로 Y를 사용하여 자체 구성지도를 만들고 싶습니다. 하지만 오류가 발생합니다 :

net=newsom(Y', [10,1])
??? Error using ==> cat
CAT arguments dimensions are not consistent.

Error in ==> cell2mat at 89
m{n} = cat(1,c{:,n});

Error in ==> newsom>new_6p0 at 72
if isa(p,'cell'), p = cell2mat(p); end

Error in ==> newsom at 58
net = new_6p0(varargin{:});

형성된 이미지의 크기가 다릅니다 (12x6, 15x12 등). 아무도 내 접근 방식을 수정하여 newsom이 50 바이너리 이미지의 데이터를 가져 오는 방법을 알려 줄 수 있습니까?

+0

를 사용하여 내가 newsom''에 익숙하지 않은, 그래서이 알고리즘의 출력에 영향을 미칠 것인지 확신 것을 얻을 수 있습니다,하지만 당신은 제로 패드 수있는 모든 이미지가 같은 크기가되도록 세트의 가장 큰 이미지. – wakjah

답변

1

newsom을 사용하려면 입력 한 내용이 모두 동일한 크기 여야합니다. 당신은 imresize

n = 50; 
sz = [20 20]; this would be the size of ALL inputs 
X = cell(1,n); % pre-allocate outputs, this is good practice 
Y = cell(1,n); 
for cnt = 1:50 
    rectangle('position',box(:,cnt),'edgecolor','r'); 
    X{cnt}=imcrop(I, box(:,cnt)); 
    newSize = imresize(X{cnt}, sz, 'bicubic'); % resize to the predefined size 
    Y{cnt}=im2bw(newSize); % do binarization AFTER resizing! 
end 
+0

고마워, 나는 이것을 시도하고 그 문제를 없앴다. 그러나 새로운 문제가 있습니다 : >> net = newsom (Y, [10,1]) ??? ==> newsom> new_6p0 at 76을 사용하는 중 오류가 발생했습니다. 입력 값이 단일 행렬을 가진 행렬 또는 셀 배열이 아닙니다. ==> 5800의 오류 net = new_6p0 (varargin {:}); 나는 cell2mat를 시도했지만 그 중 하나도 해결책이 아닙니다. –

+0

@YashUpadhyay - 저는 soory이지만 SOM에 너무 익숙하지 않습니다. 바이너리 이미지를 두 배로 변환 해보십시오 (논리적 인 경우). – Shai

관련 문제