数字图像处理实验之比特平面分层

其实书本里讲的不是很清楚,我在这里用大白话的形式介绍一个比特平面分层的意思。这里用书中例子,100美元的图像来说明。图像是256级灰度图像,其中一个像素点是由8比特组成的,8比特图像由8个1比特平面组成,每个比特平面都是二值图像。例如灰度为194的像素点a,转换成二进值为 1 1 0 0 0 0 1 0,其中从左往右分别对应为 8 7 6 5 4 3 2 1 比特平面。每个比特平面中a像素点的值取决于a的灰度的二进制在该比特位的取值。100美元图像中,a像素点的8比特平面从高到低取值为 1 1 0 0 0 0 1 0,即灰度的二进制。
代码如下:

% 读取图像
img_1 = imread('Fig0314(a)(100-dollars).tif');
% 获取图像尺寸
[r, c] = size(img_1);
% 创建8比特平面
img_s = zeros(r, c, 8);
for x = 1 : r
    for y = 1 : c
        % 将灰度转换成二进制
        str = dec2bin(img_1(x, y), 8);
        for z = 1:8
            % 判断每个二进制位的取值
            if str(z) == '0'
                img_s(x, y, 9 - z) = 0;
            else
                img_s(x, y, 9 - z) = 1;
            end
        end
    end
end

% 显示图像
subplot(331), imshow(img_1);
subplot(332), imshow(img_s(:,:,1));
subplot(333), imshow(img_s(:,:,2));
subplot(334), imshow(img_s(:,:,3));
subplot(335), imshow(img_s(:,:,4));
subplot(336), imshow(img_s(:,:,5));
subplot(337), imshow(img_s(:,:,6));
subplot(338), imshow(img_s(:,:,7));
subplot(339), imshow(img_s(:,:,8));

实验结果如下:
数字图像处理实验之比特平面分层_第1张图片

你可能感兴趣的:(数字图像处理,数字图像处理实验,数字图像处理实验)