减少图像位深度

Reducing image bit depth

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

我的想法是在 matlab 中对矩阵的第一层进行子集化,但似乎我丢失了信息,因为我的矩阵中什么都没有了。

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

有什么想法吗?

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

rgb2gray 可能是将 M×N×3 图像转换为 M×N 的最安全方法。

这只是一种替代方法(因为您是 matlab 图像处理的新手,所以很高兴了解不同的方法)

gray_scale = Im4(:,:,1);

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

其他评论也在谈论 rgb 图像或 24 位灰度。一种简单的检查方法是拍摄原始图像(在处理之前)并输入 size(MY_IMAGE_NAME_HERE) 这应该会给你 2 个或更多数字。

  1. 行数
  2. 列数
  3. 如果有给出通道数,彩色图像通常有 3 个。如果没有第 3 个数字,则表示您有一个灰度二维数组