3.6 位平面分解

《OpenCV 轻松入门 面向Python》 学习笔记

将灰度图像中的像素值转换为二进制,然后将二进制的某一比特位上的值进行组合,这种 按照位分解的操作 叫做==“位平面分解”==。

举例:
在这里插入图片描述

针对RGB图像,将其R通道的第3个位平面,G通道的第3个位平面,B通道的第3个位平面进行合并,我们称合并后的图像为原RGB图像第个位平面。


用提取矩阵(提取因子),通过与原图像做按位与操作,提取位平面

提取因子是一个二进制为8位的数值。提取因子哪位上的值为1(其他位上全为0), 就可以提取图像像素哪位上的数字。将灰度图像与提取矩阵进行按位与运算,就能提取各个位平面。

比如:
在这里插入图片描述


阈值处理

通过就算得到的位平面是一个二值图像, 如果直接将上述得到的位平面直接显示出来,会得到一张近似黑色的图像。因为值为8的灰度像素颜色接近于黑色。要想让8显示为白色,必须要将8处理为255,语句为:

mask = result[:, :, i]>0
image[mask] = 255

mask为:
在这里插入图片描述

显示图像
import cv2
import numpy as np

image = cv2.imread("/Users/manmi/Desktop/lena.bmp", 0)
h, w = image.shape

x = np.zeros((h, w, 8), dtype=np.uint8)
for i in range(8):
    x[:, :, i] = 2 ** i

r = np.zeros((h, w, 8), dtype=np.uint8)
for i in range(8):
    r[:, :, i] = cv2.bitwise_and(image, x[:, :, i])
    mask = r[:, :, i] > 0
    r[mask] = 255

    cv2.imshow(str(i), r[:, :, i])

cv2.waitKey()
cv2.destroyAllWindows()

在这里插入图片描述

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Enzo 想砸电脑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值