《数字图像处理(中卫第3版)》
http://blog.csdn.net/zqckzqck/article/details/47148465
比特平面分层
比特平面分层,代替突出灰度级范围,突出特定比特来为整个图像外观做出贡献。像素是比特组成的数字,一幅8比特图像,可以认为是8个1比特的平面组成,其中平面1包含图像中所有像素的最低阶比特,而平面8包含图像中所有像素的最高阶比特,b表示比特(下标从0开始),B表示比特平面(下标从1开始)。
基本思想:比特平面本质上是原图像通过某个函数(或者某种映射关系)变换得来的,也就是位平面F(Bn)=T(r),r为原图像,T表示映射关系,T(r)表示映射之后的像素值。
示例:当我们单独拿出B4比特平面时,也就是取出b3位相对应的位平面,一个比特位的取值只能是0或者1,对于8个比特位的图像来说,将b3取值为0和1时的情况全部罗列出来(这里只罗列前面几组,并得出映射关系):
00000000,00000001,00000010,00000011,00000100,00000101,00000110,00000111-------当取值为0-7时,b3位一直取值为0,T(r) = 10
00001000,00001001,00001010,00001011,00001100,00001101,00001110,00001111-------当取值为8-15时,b3位一直取值为1,T(r) = 13
00010000,00010001,00010010,00010011,00010100,00010101,00010110,00010111-------当取值为16-23时,b3位一直取值为0,T(r) = 17
00011000,00011001,00011010,00011011,00011100,00011101,00011110,00011111-------当取值为24-31时,b3位一直取值为1,T(r) = 26
。
。
。
继续取值的话,可以得出映射关系:当取出Bn比特平面时,也就是取出bn-1位平面,取值间隔为2n-1,即每经过2n-1个值,b3位是0和1交替互换(这是最初的理解,可以说非常低级),但是在像素点映射取值的时候是可以随便赋值的,因此比特平面分层后的图像的像素值是可以自己定义的。
比特平面分层的本质:只要让所有像素与00001000进行位与操作就可以将所有b3位取值为0和1的像素点分开,只不过这样的缺点是只能将所有像素点映射成两类,当然了这两类像素值是可以自己随意取的。
比特平面分层的程序实现
程序思想:在8比特下,遍历整个图像,用像素值与各比特面的值2n-1(n为比特面)进行位与操作,判断该像素值在该比特面是否存在即该比特位是否为1,如果存在进行二值化给该像素值所在位赋值为255,这也是突出显示该比特的核心,否则赋值0。
位与操作是将两个十进制数值变成二进制,然后按位进行与操作,如果对应的;两个值均为1,则为1,否则均为0(对应位为0,值为0)。
程序思想的意思是确认该比特位是否为1(因为对应的比特平面值,仅有该比特位为1,其他为均为0),如果该比特位为1,则对该比特平面没有贡献,映射成一个值(一般为255),如果该比特位不为0,则对该比特平面没有贡献,映射成另一个值(一般为0)。
originalImg = imread('Fig0314(a)(100-dollars).tif'); tempImg = originalImg; figure; subplot(3,3,1); imshow(originalImg); title('原始图像'); height = size(originalImg,1); width = size(originalImg,2); for n = 1:8 for i=1:height for j=1:width gray =bitand( originalImg(i,j), 2^(n-1) );%位与操作判断 if(gray==2^(n-1)) tempImg(i,j) = 255;%二值化 突出比特平面 else tempImg(i,j) = 0; end end end subplot(3,3,n+1); imshow(tempImg); title(['第',num2str(n),'比特图像 ']); end
图像重建
比特平面分层一般用于图像的压缩,在图像压缩中重建一幅图像所用的平面要比全部平面少,但是重建之后的图像肯定有一些细节是丢失的,因为在分割成位平面的时候就已经丢失了细节。
基本思想:重建是使用第n个平面的像素乘以常数2n-1来完成的,使用多个平面重建时,将对应像素直接相加。
例如,我们只用比特平面7重建图像时,用64乘以比特平面7就可以了,如果用比特平面7和8进行重建一幅图像时,我们用128乘以平面8,用64乘以平面7,然后把这两个比特平面相加。