如何将图像分解为8 x 8像素块?

时间:2014-11-22 06:25:42

标签: image matlab image-processing

 I=imread('X.jpg'); 
 [a b]=size(I);
 figure;imshow(I);
j=rgb2ycbcr(I);
figure;
imshow(j);
ca=mat2cell(j,8*ones(1,size(j,1)/8),8*ones(1,size(j,2)/8),3);
p=1; 

 for c=1:size(ca,1)
  for r=1:size(ca,2)
    subplot(8,8,p);
    imshow(ca{c,r});
    p=p+1;
    end
   end

我收到以下错误: 索引超过子图的数量。 有什么想法吗?

1 个答案:

答案 0 :(得分:1)

之所以如此,是因为您在绘图时显示的图像块多于子图空间。请将您的for循环代码改为:

p = 1;
figure;
for c=1:size(ca,1)
    for r=1:size(ca,2)
       subplot(size(ca,1),size(ca,2),p); %// Change
       imshow(ca{c,r});
       p=p+1;
    end
end

这样,您将拥有尽可能多的子绘图空间,以便显示像素块。