python 图像mode是什么_Python PIL库实现可设定阈值的二值图像转换
前言
最近一直在做深度学习图像分割方面的项目,本来是个很简单的二分类问题,但是最后输出后却发现不仅仅是0和255两种像素类型,后来思考后才发现他输出的是类似于置信度的东西,具体的我还没有完全明白,但是越白的像素值说明他越可能接近白这一类,越黑的就越可能接近黑这一类,所以这里铁定要进行阈值分割,而且通过阈值分割或许还能够得到更好的分割效果。
这里主要介绍用python PIL库的方法将输出的图片进行阈值分割。
方法
设定二值图像转换的阈值
PIL可以对图像的颜色进行转换,并支持诸如24位彩色、8位灰度图和二值图等模式,简单的转换可以通过Image.convert(mode)函数完成,其中mode表示输出的颜色模式,例如''L''表示灰度,''1''表示二值图模式等。但是利用convert函数将灰度图转换为二值图时,是采用 固定的阈 值127来实现的,即灰度高于127的像素值为1,而灰度低于127的像素值为0。为了能够通过自定义的阈值实现灰度图到二值图的转换,就要用到 Image.point函数。
Image.point函数有多种形式,这里只讨论Image.point(table, mode),利用该函数可以通过查表的方式实现像素颜色的模式转换,其中table为颜色转换过程中的映射表,每个颜色通道应当有256个元素,而 mode表示所输出的颜色模式,同样的,''L''表示灰度,''1''表示二值图模式。可见,转换过程的关键在于设计映射表,如果只是需要一个简单的箝 位值,可以将table中高于或低于箝位值的元素分别设为1与0。当然,由于这里的table并没有什么特殊要求,所以可以通过对元素的特殊设定实现 (0, 255)范围内,任意需要的一对一映射关系。
代码
from PIL import Image
im = Image.open("test.png")
# convert to grey level image
Lim = im.convert("L")
Lim.save("test_gray.png")
# setup a converting table with constant threshold
threshold = 200
table = []
for i in range( 256 ):
if i < threshold:
table.append(0)
else :
table.append(1)
# convert to binary image by the table
bim = Lim.point(table,"1" )
bim.save("test_binary.png")
Reference:
Python下利用PIL实现可设定阈值的二值图像转换_Python_Vange的专栏-CSDN博客blog.csdn.net上一篇: matplotlib同时画柱状图和折线图
下一篇: Java hashCode是什么