Python实现数字图像处理经典算法之256色转灰度图

系统 1793 0

算法介绍

256色转灰度图是数字图像处理经典算法中最简单的算法之一

1、彩色数字图像中的颜色有红、绿、蓝三种颜色混合而成,对应的像素颜色通道就是RGB(R,G,B),R、G、B数值共有256个数值,也称为256阶,即0—255,计算机通过读取每一个通道的数值而确定显示的颜色。

2、灰度图像只有一个灰度色阶通道,我们可以标记为Gray,或者RGB(Gray、Gray、Gray),Gray共有256阶,即0—255,计算机通过读取该通道的值确定显示的颜色。

那么将彩色图像转换为灰色图像的思路就是将RGB数值转化为Gray数值。共有5种转化方式:
(1)浮点算法 :Gray=R * 0.3+G * 0.59+B * 0.11
(2)整数算法:Gray=(R * 30+G * 59+B * 11)/100
(3)移位算法:Gray =(R 28+G 151+B*77)>>8
(4)平均值法:Gray=(R+G+B)/3
(5)仅取绿色:Gray=G
下面我将使用Python语言分别实现上述5种方法并查看效果,操作的图像如下所示:
Python实现数字图像处理经典算法之256色转灰度图_第1张图片

代码实现

在介绍实现代码之前先介绍我们代码中借助的一个类库Matplotlib,它提供了将图像转化为数组的方法array,我们得到图像数组后可以使用坐标得到图像的颜色元组,里面有我们需要的颜色数值信息。
(1)浮点算法 :Gray=R * 0.3+G * 0.59+B * 0.11
代码如下:

            
              from PIL import Image
from pylab import *

im = array(Image.open('flower.jpg'))
im[:,:,0] = im[:,:,1] = im[:,:,2] = (im[:,:,0] * 0.3 + im[:,:,1] * 0.59 + im[:,:,2] * 0.11)
imshow(im)
show()

            
          

效果如下:
Python实现数字图像处理经典算法之256色转灰度图_第2张图片
代码讲解:
1、array(Image.open(‘flower.jpg’))可以将一个图像打开并且转化为数组类型,数据类型为元组,里面包含RGB数值信息
2、im[x,y,t]表示(x,y)坐标像素的t通道的数值,不明白 :的话建议复习Python,im[:,:,0] = im[:,:,1] = im[:,:,2] = (im[:,:,0] * 0.3 + im[:,:,1] * 0.59 + im[:,:,2] * 0.11)就将所有像素的所有通道值都改为重新计算后的值,也就是我们的浮点算法
3、最后是显示图像。

(4)平均值法:Gray=(R+G+B)/3
代码如下:

            
              from PIL import Image
from pylab import *

im = array(Image.open('flower.jpg'))
im[:,:,0] = im[:,:,1] = im[:,:,2] = (im[:,:,0] + im[:,:,1] + im[:,:,2])/3
imshow(im)
show()

            
          

效果如下:
Python实现数字图像处理经典算法之256色转灰度图_第3张图片
代码讲解:
其实和上一个大体一样,只是算法不一样

(5)仅取绿色:Gray=G
代码如下:

            
              from PIL import Image
from pylab import *

im = array(Image.open('flower.jpg'))
im[:,:,0] = im[:,:,1] = im[:,:,2] = im[:,:,2]
imshow(im)
show()

            
          

效果如下:
Python实现数字图像处理经典算法之256色转灰度图_第4张图片


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论