图像位平面分解

时间:2015-05-25 07:25:16

标签: matlab image-processing image-compression decomposition

我想知道如何在MATLAB中提取图像的位平面以进行图像压缩?

1 个答案:

答案 0 :(得分:2)

在MATLAB中获取单个位平面非常简单。使用bitget功能。

bitget接受一个整数类型(uint8, uint16等)的数组/矩阵,它返回一个相同大小的数组/矩阵,它给出了指定位置的位。 / p>

例如,假设您的图片大小为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