比特平面分层——Python实现

图像处理课程老师留了一个自己做比特分层的作业,借此机会水一篇博文

代码

废话不多说,直接上代码

from PIL import Image
import numpy as np
img = Image.open("./origin.jpg").convert('L')
img.save('BandW.jpg')
arr = np.asarray(img)
fltr = np.int8(np.ones(arr.shape))
for i in range(8):
    Image.fromarray(((fltr*(2**i))&arr)* 2 ** (7-i)).convert('L').save(f'{i}.jpg')

原理说明:

首先用pillow读入图片,然后把图片用convert方法转成黑白图。

img = Image.open("./origin.jpg").convert('L')
img.save('BandW.jpg')

然后把图片转成np.array

arr = np.asarray(img)

然后通过位与(&)的方法获取每一位,并保存。先生成一个滤波器数组fltr,然后通过每次乘2完成移位。并保存图像

fltr = np.int8(np.ones(arr.shape))
for i in range(8):
    Image.fromarray(((fltr*(2**i))&arr)* 2 ** (7-i)).convert('L').save(f'{i}.jpg')

好啦,水完了,希望对你有帮助!如果你也是完成作业,希望你看懂之后再自己复现一下。

效果图

原始图片如下
在这里插入图片描述灰度图如下
在这里插入图片描述0层到7层分别如下(即[0…7].jpg)
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
说实话,还是原图好看。。。。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值