减少图像位深度

时间:2015-05-15 14:04:38

标签: matlab image-processing bit

我正在使用深度为24( PNG 格式)的800 x 800像素图像。我认为这意味着3 x 8位。这些图像只是黑白(0或255)。 我希望将此深度减少到8位,因为*,当我在matlab中处理这些图像时,*我创建了一个800 x 800 x 3矩阵,其计算成本比计算2D矩阵更大。

我的想法是在 matlab 中对矩阵的第一层进行子集化,但似乎我已经丢失了信息,因为我的矩阵中没有任何内容。

`Im4=Im4(1:800,1:800);`

有什么想法吗?

我是图像处理的新手,我可能不知道基础......

2 个答案:

答案 0 :(得分:1)

rgb2gray可能是将M-by-N-by-3图像转换为M-by-N最安全的方式。

答案 1 :(得分:1)

这只是一个替代方案(因为你是matlab图像处理的新手,很高兴知道不同的方法)

gray_scale = Im4(:,:,1);

此方法仅适用,因为您的图像已经是灰度(这可能意味着红色=绿色=蓝色)。代码所说的是来自Im4 all rowsall columns channel 1并将其存储在名为gray_scale的变量中,因为RGB图像的通道1指的是红色信道。

其他评论也在谈论rgb图像或24位灰度。一个简单的检查方法是拍摄ORIGINAL图像(处理前)并输入size(MY_IMAGE_NAME_HERE),这样可以给你2个或更多数字。

  1. 行数
  2. 列数
  3. 如果它在那里给出了通道的数量,彩色图像通常有3.如果没有第3个数字意味着你有一个灰度的2d阵列