什么是图像的位平面bit plane?
图像的位平面还是比较容易理解的。一幅256个灰度级的图像可以分解成8个位平面,原因就是2^8=256,换句话说每一个像素点的灰度值可以由8个二进制位来表示,所谓的位平面(bit plane)就是依次取出每个像素点的数值组成一个位平面。举一个简陋的例子,假设当前图像就有两个像素点,这两个像素点的灰度值分别是1和3,那么其对应的二进制位分别为10000000和11000000,那么该图像分解成8个位平面依次为11、01、00、00、00、00、00、00,即通过取前面两个二进制位的第一位、第二位、第三位等组成第一个位平面,第二个位平面,第三个位平面等。可以发现,每一个位平面均为一个二值图,也就是说像素点的灰度值非0即1。
位平面的matlab实现
X=double(rgb2gray(imread('C:\Users\NICAI\Desktop\test.bmp')));%将原始图像转换为灰度图像,如果本身就是灰度图可以去掉rgb2gray函数
[h w] = size(X);
subplot(3,3,1);
imshow(X,[]);
title('原始图像');
for k=1:8
for i=1:h
for j=1:w
tmp(i,j) = bitget(X(i,j),k);%bitget函数首先将X(i,j)处灰度值分解为二进制串,然后取第k位
end
end
subplot(3,3,k+1);
imshow(tmp,[]);
ind = num2str(k);
imti = ['第',ind,'个位平面'];
title(imti);
end
图像演示
代码部分函数参照网上解释给出,我对此不拥有版权,仅仅记录在此方便自己总结温习,倘若能顺便帮助一些人那就再好不过了!有任何问题可以发邮件至 jzwangATbjtuDOTeduDOTcn 讨论交流。