【问题标题】:Reducing image bit depth减少图像位深度
【发布时间】:2015-05-16 01:14:42
【问题描述】:

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

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

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

有什么想法吗?

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

【问题讨论】:

  • Matlab 可以并且确实以double 格式保存图像,这意味着在存储图像时位深度并不重要(重要但 matlab 会处理它)。它绝对不会创建 800x800x3 矩阵,除非每个像素的 24 位实际上不是位深度而是颜色的 3RGB 通道。

标签: matlab image-processing bit


【解决方案1】:

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

【讨论】:

  • 但是,OP 声称图像是 24 位深度,而不是 RGB!如果他想要改变位深度,那么gray2ind(I,256) 是解决方案,而不是rgb2gray!!
  • 那么让我们等待OP的澄清。
  • 鉴于答案已被接受,我只能假设它适用于 OP?
  • 是的,它对我来说确实很好用(我还没有足够的声望来投票)。也许图像是RGB(即使它只有两种颜色,黑色和白色)?我对图像知之甚少......我还在学习。
  • @Sarahdata,我猜你已经获得了足够的声望来投票。当您拥有 15 名以上的代表时,将获得投票特权。你可以试试:)
【解决方案2】:

这只是一种选择(因为您是 matlab 图像处理的新手,很高兴知道不同的方法)

gray_scale = Im4(:,:,1);

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

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

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

【讨论】:

    猜你喜欢
    • 2016-03-12
    • 2011-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多