减少图像位深度
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 1
的 all rows
和 all columns
并将其存储在名为 gray_scale
的变量中 RGB 图像的通道 1 指的是红色频道。
其他评论也在谈论 rgb 图像或 24 位灰度。一种简单的检查方法是拍摄原始图像(在处理之前)并输入 size(MY_IMAGE_NAME_HERE)
这应该会给你 2 个或更多数字。
- 行数
- 列数
- 如果有给出通道数,彩色图像通常有 3 个。如果没有第 3 个数字,则表示您有一个灰度二维数组
我正在处理位深度为 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 1
的 all rows
和 all columns
并将其存储在名为 gray_scale
的变量中 RGB 图像的通道 1 指的是红色频道。
其他评论也在谈论 rgb 图像或 24 位灰度。一种简单的检查方法是拍摄原始图像(在处理之前)并输入 size(MY_IMAGE_NAME_HERE)
这应该会给你 2 个或更多数字。
- 行数
- 列数
- 如果有给出通道数,彩色图像通常有 3 个。如果没有第 3 个数字,则表示您有一个灰度二维数组