当前位置:   article > 正文

使用numpy处理图片——二值图像

使用numpy处理图片——二值图像

在《使用numpy处理图片——灰阶影像》一文中,我们将彩色图片转换成灰阶图片。本文将在这个基础上将灰阶图片转换成二值图像
二值图像就是只有黑白两种颜色的图像。像素最终显示黑还是白,需要有一个判断标准。如果图片太白了,或者太黑了,会让图片丢失很多信息。于是我们需要找到一个平衡。

载入图像

import numpy as np
import PIL.Image as Image

img = Image.open('lena.png')
data = np.array(img)
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述

灰阶处理

luminosityGrey = np.dot(data[...,:3], [0.2989, 0.5870, 0.1140]).astype(np.uint8)
  • 1

在这里插入图片描述

二值处理

我们将灰阶处理后的数组打平成一维数组,然后排序。

sorted=np.sort(luminosityGrey.reshape(-1))
  • 1

找到位于中位的数值

mid = sorted[sorted.shape[0] // 2]
  • 1

然后以此为判断标准,大于它的显示白色,小于它的显示黑色。

binary = luminosityGrey > mid
binaryImg = Image.fromarray(binary.astype(np.uint8) * 255)
binaryImg.save('binary.png')
  • 1
  • 2
  • 3

在这里插入图片描述

代码地址

https://github.com/f304646673/numpy-example/tree/main/grey

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/article/detail/40667
推荐阅读
相关标签
  

闽ICP备14008679号