欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python 图像mode是什么_Python PIL库实现可设定阈值的二值图像转换

程序员文章站 2022-06-19 10:59:49
...

前言

最近一直在做深度学习图像分割方面的项目,本来是个很简单的二分类问题,但是最后输出后却发现不仅仅是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
python 图像mode是什么_Python PIL库实现可设定阈值的二值图像转换
使用python PIL将RGB图像转换为纯黑白图像​www.jianshu.com
python 图像mode是什么_Python PIL库实现可设定阈值的二值图像转换
PIL包中Image模块的convert()函数_Python_宝宝的宝宝爱写代码-CSDN博客​blog.csdn.net
python 图像mode是什么_Python PIL库实现可设定阈值的二值图像转换