Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image 如何将图像分解为8 x 8像素块?_Image_Matlab_Image Processing - Fatal编程技术网

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

Image 如何将图像分解为8 x 8像素块?,image,matlab,image-processing,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:

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

原因是打印时要显示的图像块比子地块空间多。将的
循环代码改为此:

 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

通过这种方式,您将拥有与要显示的像素块一样多的子地块空间进行打印。

通过
8x8
块,您是指
8x8
像素还是将图像划分为
8x8
网格?我是指8x8像素块对不起,因此每个块都有
64(=8x8)
像素?@ParagS.Chandakkar-是的。OP希望将图像分解为不重叠的8 x 8像素块,并将每个像素块显示在一个图形中。我只希望OP能够更好地沟通。@rayryeng是的。对我来说,8 x 8像素块比8 x 8像素块清晰得多。这是因为你需要生成一个新的图形。尝试执行
figure在<代码>之前进行<代码>循环,然后重试。我在循环之前做了两个数字,结果仍然是empty@R啊,拉哈尔,这对我有用。。。。我只是自己用彩色图像试了一下。我用修改过的代码运行了你的代码。我看到一个输出。确保加载彩色图像。如果您也向我们展示您使用的图像,这可能也会有所帮助。@RéaH.Rahhal-是的,您生成了两个图形,但您需要生成另一个。这两幅图是原始图像及其YCbCr等效图。您需要另一个来显示分解的块。原始图像尺寸为:。我在循环之前生成了3个图形,但仍然没有得到任何结果。我选择了一个尺寸可被8整除的图像
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