【发布时间】:2015-08-06 15:06:25
【问题描述】:
我想知道如何在 MATLAB 中提取图像的位平面以进行图像压缩?
【问题讨论】:
标签: matlab image-processing image-compression decomposition
我想知道如何在 MATLAB 中提取图像的位平面以进行图像压缩?
【问题讨论】:
标签: matlab image-processing image-compression decomposition
在 MATLAB 中获取单个位平面非常容易。使用bitget 函数。
bitget 接收一个整数类型的数组/矩阵(uint8, uint16 等),它返回一个大小相同的数组/矩阵,为您提供指定位置的位。
例如,假设您的图像是A,大小为M x N,并且您想要最低有效位,您可以这样做:
B = bitget(A, 1);
B 将是一个M x N 矩阵,其中每个位置为您提供图像中相应像素的最低有效位。您可以将第二个参数从 1 更改为支持的类型的位数,以获得所需的位位置,因此从 1(最低有效位)到 K(最高有效位)。
如果您希望所有位平面都位于单个 3D 矩阵中,可以通过以下方式轻松完成,假设存储在 A 中的 8 位无符号整数灰度图像:
B = zeros(size(A, 1), size(A, 2), 8, 'uint8');
for idx = 1 : 8
B(:,:,idx) = bitget(A, idx);
end
这将生成 8 个切片的 3D 矩阵 B,其中第一个切片 (B(:,:,1)) 表示每个像素位置的 LSB,直到最后一个切片 (B(:,:,8)) 表示每个像素位置的 MSB。
在 MathWorks 的函数官方文档中了解更多关于 bitget 的信息:http://www.mathworks.com/help/matlab/ref/bitget.html
【讨论】: