如何在MATLAB中以二维数组存储图像信息?

时间:2011-12-28 03:57:17

标签: matlab

我试图在matlab中将彩色图像划分为100个相同大小的块,然后以10 * 10的2d数组存储盒子中存在的最大颜色信息。

示例:

如果块中存在的最大颜色是

  • 黑色,那么它应该存储0
  • 白色然后1,
  • red然后2,
  • ...

在2d数组的相应单元格中。

我的图片中颜色数量有限。我在blockproc上阅读了一篇文章,但我无法实现它。

我该怎么做?

编辑:(评论代码)

I=imread('Untitled.png'); 
I = I(1:290,1:288,:); 
[m n o] = size(I); 
r = m/240; 
c = n/240; 
fun = @(block_struct) max(block_struct.data(:)); 
J = blockproc(I,[r c],fun); 
imshow(J); 

1 个答案:

答案 0 :(得分:0)

如果图像中的颜色数量有限,则可以通过调用indexed将其从3D RGB图像转换为rgb2ind图像:

 myColMap; % this is your color map: 
           % it should have black as its first entry, 
           % white in second, red in third etc.
 indImg = rgb2ind( I, myColMap ); % convert RGB image to indexed one

要在每个补丁中找到最“流行”的颜色(请注意,这不是max颜色,而是mode

 fun = @(block_Struct) mode( block_struct.data(:) )
 J = blockproc( indImg, [r c], fun );

请注意,修补程序大小[r c]应为整数编号。因此,如果240(如您的示例中)无法分割图像大小,则可能会导致问题。检查blockproc参数以帮助您处理此情况。