购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.2 彩色图像的灰度化处理

1.理论基础

一般情况下彩色图像每个像素用三个字节表示,每个字节对应着R、G、B分量的亮度(红、绿、蓝),由彩色图像转化为灰度图像的过程叫作灰度化处理,它是使RGB模型中的R、G、B分量值相等。常用的转换方式为:

Gray( i , j )=0.11× R ( i , j )+0.59× G ( i , j )+0.3× B ( i , j )

(2-1)

式中,Gray( i , j )为转换后的图像在( i , j )点处的灰度值,转换后:

R ( i , j )= G ( i , j )= B ( i , j )=Gray( i , j )

观察该式可见绿色所占的比例最大,所以转换时可以直接使用 G 值作为转换后的灰度。由于灰度图只能表现256种颜色,灰度化处理还有其他的方法,如:取三个分量的最大值、最小值、算术平均值等,目的都是使颜色的R、G、B分量值相等。在灰度图像中,每个像素由8位组成,因此可以表现出256(2 8 )种层次,所以分量值的取值范围是(0~255),灰度图像只能表现256种颜色,且灰度图像中只有灰度而没有色彩。

2.函数说明

(1)在OpenCV中,函数retval=cv2.imread(filename, flags)用于从指定的文件读取图像。

其中:

retval,返回值;

filename,读取图像的文件路径和文件名;

flags,读取图片的方式,它有以下几个参数可选:

● cv2.IMREAD_COLOR:读取彩色图像,忽略alpha通道

● cv2.IMREAD_GRAYSCALE:以灰度模式读取图像

● cv2.IMREAD_UNCHANGED:读取图像,包括alpha通道

其中,flags默认值为cv2.IMREAD_COLOR。

(2)在OpenCV中,cv2.cvtColor()函数用于实现色彩空间的转换,其一般格式为:

retval = cv2.cvtColor(src, code [, dstCn])

其中:

retval,表示与输入值具有相同类型和深度的输出图像;

src,表示原始输入图像;

code,是色彩空间转换码,常见的枚举值有cv2.cvtColor_BGR2RGB、cv2.cvtColor_ BGR2GRAY、cv2.cvtColor_BGR2HSV、cv2.cvtColor_BGR2YCrCb、cv2.cvtColor_BGR2HLS;

dstCn,表示目标图像的通道数。

(3)cv2.imwrite(filename, img[, params])用于保存图像。

其中:

filename,要保存的图像的完整路径名,包括文件的扩展名;

img,要保存的图像的名字;

params,要保存的图像的类型参数,可选。

3.编程代码

4.效果展示

彩色图像灰度化处理效果如图2-9所示。

图2-9 彩色图像灰度化处理效果 pwYlmpmMi3KwRFHmK6gmeC7YdscRY9hMZ0H/bRVcMIQeOQCHN8ZlHb/HOOyLM0W3

点击中间区域
呼出菜单
上一章
目录
下一章
×

打开