3.6位平面分解
将灰度图像中处于同一比特位上的二进制像素值进行组合,得到一副二进制值图像,该图像被称为灰度图像的一个位平面,这个过程被称为位平面分解。例如,将一副灰度图像内所有像素点上处于二进制位内最低位上的值进行组合,可以构成“最低有效位”位平面。
Value=ɑ7×27+ɑ6×26+ɑ5×25+ɑ4×24+ɑ3×23+ɑ2×22+ɑ1×21+ɑ0×20
ɑi的可能值为0或1,各个ɑi 的权重是不一样的,ɑ7 的权重最高,ɑ0 的权重最低,这代表
ɑ7 的值对图像的影响最大,而ɑ0的值对图像的影响最小。
灰度图像O的像素值: 对应的二进制值为:
209 | 197 | 163 | 193 | 1101 0001 | 1100 0101 | 1010 0011 | 1100 0001 | |
125 | 247 | 160 | 112 | 0111 1101 | 1111 0111 | 1010 0000 | 0111 0000 | |
161 | 137 | 243 | 203 | 1010 0001 | 1000 1001 | 1111 0011 | 1100 1011 | |
39 | 82 | 154 | 127 | 0010 0111 | 0101 0010 | 1001 1010 | 0111 1111 |
第0个位平面图
1 | 1 | 1 | 1 |
1 | 1 | 0 | 0 |
1 | 1 | 1 | 1 |
1 | 0 | 0 | 1 |
1101 0001 | 1100 0101 | 1010 0011 | 1100 0001 |
0111 1101 | 1111 0111 | 1010 0000 | 0111 0000 |
1010 0001 | 1000 1001 | 1111 0011 | 1100 1011 |
0010 0111 | 0101 0010 | 1001 1010 | 0111 1111 |
其它位平面分解,依次类推。
位平面分解过程:
原图O像素值: 原图对应的二进制图RB
209 | 197 | 163 | 193 | 1101 0001 | 1100 0101 | 1010 0011 | 1100 0001 | |
125 | 247 | 160 | 112 | 0111 1101 | 1111 0111 | 1010 0000 | 0111 0000 | |
161 | 137 | 243 | 203 | 1010 0001 | 1000 1001 | 1111 0011 | 1100 1011 | |
39 | 82 | 154 | 127 | 0010 0111 | 0101 0010 | 1001 1010 | 0111 1111 |
如果要提取第3个位平面,
则先构造值均为23的数组BD 所对应二进制的形的BT
| 8 | 8 | 8 | 8 |
| 0000 1000 | 0000 1000 | 0000 1000 | 0000 1000 |
| 8 | 8 | 8 | 8 | 0000 1000 | 0000 1000 | 0000 1000 | 0000 1000 | |
| 8 | 8 | 8 | 8 | 0000 1000 | 0000 1000 | 0000 1000 | 0000 1000 | |
| 8 | 8 | 8 | 8 | 0000 1000 | 0000 1000 | 0000 1000 | 0000 1000 |
将RB与BT进行按位与运算,得到RE
RB | 11010001 | 11000101 | 10100011 | 11000001 |
01111101 | 11110111 | 10100000 | 01110000 | |
10100001 | 10001001 | 11110011 | 11001011 | |
00100111 | 01010010 | 10011010 | 01111111 | |
BT | 0000 1000 | 00001000 | 00001000 | 00001000 |
| 0000 1000 | 00001000 | 0000 1000 | 00001000 | |
| 0000 1000 | 00001000 | 0000 1000 | 00001000 | |
| 0000 1000 | 00001000 | 0000 1000 | 00001000 | |
RE | 00000000 | 00000000 | 0000 0000 | 0000 0000 |
| 00001000 | 00000000 | 0000 0000 | 0000 0000 | |
| 00000000 | 00001000 | 0000 0000 | 00001000 | |
| 00000000 | 00000000 | 00001000 | 00001000 |
RE所对应的十进制标记为RD:
0 | 0 | 0 | 0 |
8 | 0 | 0 | 0 |
| 0 | 8 | 0 | 8 |
| 0 | 0 | 8 | 8 |
阈值处理:
通过计算得到的位平面是一个二值图像,如果直接将上述得到的平面显示出来,则会得到近似黑色的图像。因为默认当前显示的图像是8位灰度图,而当其中的像素值较小时,显示的近乎黑色。例如,在图像RD中,最大像素值是8,几乎是黑色,要让8显示为白色,必须将8处理为255。
将得到的位平面RD进行阈值处理,将其中的8调整为255,具体语句为:
mask=RD[:,:,i]>0
RD[mask]=255
首先使用mask = rd[:,:,i]>0对rd进行处理:
将rd中大于0的值处理为真true,将rd中小于或等于0的值处理为假false
#3.13编写程序,观察灰度图像的各个位平面
import cv2
import numpy as np
lena=cv2.imread("lena.bmp",0)
cv2.imshow("lena",lena)
r,c=lena.shape
print(r)
print(c)
x=np.zeros((r,c,8),dtype=np.uint8)
for i in range(8):
x[:,:,i]=2**i
r=np.zeros((r,c,8),dtype=np.uint8)
for i in range(8):
r[:,:,i]=cv2.bitwise_and(lena,x[:,:,i])
mask=r[:,:,i]>0
r[mask]=255
cv2.imshow(str(i),r[:,:,i])
cv2.waitKey()
cv2.destroyAllWindows()


