如何将二进制图像数据发送到自组织映射

时间:2013-04-12 09:33:16

标签: matlab image-processing neural-network som

我拍摄了带有字符的扫描图像,裁剪了字符并将其存储在矩阵中。

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

这里,box有矩形的坐标。我想使用Y作为newsom的输入来创建自组织地图。但是我得到了错误:

  

net = newsom(Y',[10,1])
  ???使用==>时出错猫
  CAT参数维度不一致。

     

==>中的错误cell2mat at 89
             m {n} = cat(1,c {:,n});

     

==>中的错误newsom> new_6p0 at 72
             if isa(p,'cell'),p = cell2mat(p);端

     

==>中的错误新闻报58岁              net = new_6p0(varargin {:});

形成的图像具有不同的尺寸(12x6,15x12等)。 谁能告诉我如何纠正我的方法,以便newsom获取50个二进制图像的数据?

1 个答案:

答案 0 :(得分: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