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

news/2024/11/22 16:23:26/

算法介绍

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 =(R28+G151+B*77)>>8
(4)平均值法:Gray=(R+G+B)/3
(5)仅取绿色:Gray=G
下面我将使用Python语言分别实现上述5种方法并查看效果,操作的图像如下所示:
操作的图像

代码实现

在介绍实现代码之前先介绍我们代码中借助的一个类库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()

效果如下:
在这里插入图片描述
代码讲解:
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()

效果如下:
在这里插入图片描述
代码讲解:
其实和上一个大体一样,只是算法不一样

(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()

效果如下:
在这里插入图片描述


http://www.ppmy.cn/news/556359.html

相关文章

计算机论文图片大小,对一副大小为256*256的bmp格式256色的灰度图象进行霍夫曼和字典编码压缩处理...

内容简介: 课程设计 对一副大小为256*256的bmp格式256色的灰度图象进行霍夫曼和字典编码压缩处理,共31页,6992字 目录 绪论1 1原理分析2 1.1数字图象2 1.1.1灰度图象2 1.1.2灰度直方图3 1.2霍夫曼(Huffman)编码5 1.2.1截断霍夫曼编码5 1.2.2自适应霍夫曼编码7 1.3LZW编码原理…

用PS制作256色的BMP图片

1.打开PS,新建文件,颜色模式为RGB,位数为8位,大小为640X480像素,其它默认 2.文件->打开,选中素材图片 3.将素材图片放到新建的图层上 4.打开文件菜单,存储为WEB和设备所用格式,设…

真彩色转256色算法

位图常用的一种压缩方法。从位图图片中选择最有代表性的若干种颜色(通常不超过256种)编制成颜色表,然后将图片中原有颜色用颜色表的索引来表示。 这样原图片可以被大幅度有损压缩。适合于压缩网页图形等颜色数较少的图形,不适合压…

计算机颜色格式(真彩、256色等)

原文链接:https://www.cnblogs.com/jackStudy/archive/2012/06/26/2563261.html 常见的颜色有 8位 16位 24位 32位色,其中24位及以上称为真彩,是PC上最常用的颜色,其他基本用于嵌入式系统或一些工控领域,详情可查阅一…

RGB转8色16色256色

RGB色的图片有255*255*25516581375种颜色,如果再加上透明度ARGB就要再乘以255,这么多的颜色在图形处理中有时不需要使用那么多的颜色,只需要转化成8色、16色或者256色就可以了,而透明度则作特殊处理,比如在阀值80以下的…

matlab 256灰度图像,MATLAB实现256色灰度图像的Arnold置乱

MATLAB实现256色灰度图像的Arnold置乱 下面的程序实现256色灰度图像的Arnold置乱。以前用VC做很麻烦,但在matlab中却显得非常简洁。matlab不愧是一款很受欢迎的辅助研究工具。 ------&#xff0…

用C++实现RGB转256色

前言 RGB图片转256色,我知道的有两种方法: ①用Windows系统自带的画图工具打开图片,再另存为256色bmp图片 ②用Photoshop打开图片,然后图像→模式→索引颜色,选择局部(可感知)→确定→存储为…

256色图像不一定是灰度图像。

256色图像属于伪彩色图像,但是他也是8位的呀,他和256灰度图有什么差别?256色图像是如何表示颜色的? 灰度图像:每个像素由一个字节,即是八位,共256种色,且红绿蓝三原色分量相等。&…