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

大纲

在《使用numpy处理图片------灰阶影像》一文中,我们将彩色图片转换成灰阶图片。本文将在这个基础上将灰阶图片转换成二值图像。

二值图像就是只有黑白两种颜色的图像。像素最终显示黑还是白,需要有一个判断标准。如果图片太白了,或者太黑了,会让图片丢失很多信息。于是我们需要找到一个平衡。

载入图像

python 复制代码
import numpy as np
import PIL.Image as Image

img = Image.open('lena.png')
data = np.array(img)

灰阶处理

python 复制代码
luminosityGrey = np.dot(data[...,:3], [0.2989, 0.5870, 0.1140]).astype(np.uint8)

二值处理

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

python 复制代码
sorted=np.sort(luminosityGrey.reshape(-1))

找到位于中位的数值

python 复制代码
mid = sorted[sorted.shape[0] // 2]

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

python 复制代码
binary = luminosityGrey > mid
binaryImg = Image.fromarray(binary.astype(np.uint8) * 255)
binaryImg.save('binary.png')
相关推荐
菜冻鱼3 天前
Python-sklearn-SVM
开发语言·人工智能·python·机器学习·支持向量机·numpy·sklearn
菜冻鱼4 天前
Python-sklearn-评估指标
开发语言·人工智能·python·机器学习·numpy·pandas·sklearn
菜冻鱼4 天前
Python-sklearn-模型选择
开发语言·人工智能·python·机器学习·numpy·pandas·sklearn
菜冻鱼4 天前
Python-sklearn-特征工程
开发语言·人工智能·python·机器学习·numpy·matplotlib·sklearn
菜冻鱼8 天前
Python-pandas-索引与筛选
开发语言·笔记·python·numpy·pandas·学习方法
小趴蔡ha9 天前
03 NumPy 入门:机器学习中的数组和矩阵
python·线性代数·机器学习·numpy
乱七八糟的屋子11 天前
【C++数值计算】NumCpp超详细入门教程(纯正Numpy语法、零学习成本、C++首选科学计算库、性能压测对比)
c++·数值计算·numpy·高性能计算·科学计算·ndarray
Lee_jerome12 天前
python神经网络编程入门(二十)——RNN LSTM 数学原理与结构拆解
深度学习·numpy·lstm·参数量·sigmoid·tanh·门控机制
赤羽尾风12 天前
NumPy快速入门
python·numpy
Xiaok101813 天前
NumPy 数组 vs PyTorch Tensor
人工智能·pytorch·numpy