计算机视觉入门之图像处理<二>:图像处理基础概念

往期文章回顾
计算机视觉入门之<零>
计算机视觉入门之图像处理<一>:图像处理基础概念


接着上一篇文章计算机视觉入门之图像处理<一>:图像处理基础概念继续了解图像处理的相关基础知识,本篇文章主要包括颜色模型、图像灰度化及图像的取样和量化等基础概念。本系列文章并未涉及到图像处理所有的知识,若有不足之处,请多多包含!

对比度

对比度指的是不同颜色之间的差别。对比度=最大灰度值-最小灰度值,根据公式可知,图像的颜色差异越大,对比度也就越大。

RGB模型

RGB模型基于笛卡尔右手坐标系,黑色位于原点处,白色位于离原点最远的对角顶点处,在黑色到白色的这条对角线上,R、G、B三个通道的灰度值相同,灰度沿着这条对角线从黑色延伸到白色。

频率

频率是灰度值变化剧烈程度的指标,表示为图像在空间域上的梯度。频率越高,梯度越大,说明相邻像素差值较大,像素值变化明显;频率越低,梯度越小,说明相邻像素差值较小,像素值基本无变化。
频率高的部分称为高频,即该部分图像可能存在不连续情况(如图像的边缘,物体与背景不连续,像素值变化大),因此可利用此特点进行图像边缘特征提取;频率低的部分称为低频,该部分图像像素连续且变化不明显。

图像取样和量化

一幅图像可以定义一个二维函数f(x, y),对于任何一对空间坐标(x, y)处的函数值f称为图像在该点处的强度或灰度,而当x、y和灰度值f均为有限的离散值时,这幅图像被称之为数字图像。因此数字图像可以理解为一个三维数组如img[x, y, c],x表示x坐标,y表示y坐标,c表示对应的通道,(c=0表示B通道, c=1表示G通道, c=2表示R通道,基于opencv)
为了表示一幅数字图像,首先需要将传感器输出的连续感知数据转换为数字形式,这个转换过程主要包括:取样和量化

对坐标值进行数字化称为取样,取样的过程类似于连续信号离散化采样的过程,如上图所示,若单位面积内采样间隔和行间隔越大,则像素点数越少,分辨率越低,图像细节表示不清晰,因此,图像取样质量的高低可以用图像分辨率来衡量。

对幅值的数字化过程称为量化,为了方便图像存储和运算,需要将连续的幅值数字化,根据不同的需求,可以进行不同级别的量化。如上图所示,量化就是将某个连续区间内的灰度值都用某一个整数灰度值表示,这样根据需要,调整连续区间的大小即可进行不同级别的量化。量化等级越大,则图像表现的灰度级就越广(8bit量化最大灰度值可达到255),量化等级越小,则图像表现的灰度级就越窄。

图像灰度化

为什么要进行图像灰度化?首先,图像的颜色受光照等多种因素影响,颜色本身不能提供本质性的特征,而图像灰度化更有利于获取关键信息;其次,图像的灰度化将三通道的的彩色图像转换为单通道灰度图,实际应用中这大大减少了数据的运算量和存储量;最后,大多数的特征提取运用到的梯度需要在灰度图中进行计算,而某些实际运用中加上了颜色信息会降低系统的鲁棒性[1]。
图像灰度化就是把彩色图像转换为灰度图像的过程, 其中二值图是灰度图的一个特例。通常采用以下几种方法(图像灰度化有很多种方法,在此不一一列举):

  • (1)均值法:gray = (R+G+B)/3
  • (2)加权平均法:gray = R0.299+G0.587+B*0.144(权重是根据大量实验数据得到,G通道权重大更符合人眼视觉特性)[2]

核心代码如下:

gray_result_1 = np.zeros([result.shape[0], result.shape[1]], dtype=result.dtype)#创建和原图像尺寸(270,405)一样大的零数组
for i in range(result.shape[0]):
    for j in range(result.shape[1]):
        sum = 0
        for k in range(result.shape[2]):
            sum += result[i, j, k]       #取出各个通道对应坐标的灰度值相加再取平均:(R+G+B)/3
        gray_result_1[i, j] = int(sum/3) #将均值取整赋值到空数组中,另外加权平均的方法修改权重即可实现

gray_result_2 = np.zeros([result.shape[0], result.shape[1], 3], dtype=result.dtype)
for i in range(result.shape[0]):
    for j in range(result.shape[1]):
        sum = 0
        for k in range(result.shape[2]):
            sum += result[i, j, k]
        gray_result_2[i, j, 0] = gray_result_2[i, j, 1]= gray_result_2[i, j, 2] = int(sum/3)#将均值取整后分别赋值到灰度图的各个通道对应的坐标

运行结果:

上图中,图片gray_result_1和图片gray_result_2是图片result灰度化的结果,图片gray_result_1_1和图片gray_result_2_2是图片gray_result_1和图片gray_result_2在同一位置放大后灰度值显示的结果。看到这里可能就会有疑问:灰度图不应该是单通道的吗?为什么三个通道中对应灰度值相等的图还是灰度图?其实我也是不太明白,后来问了老师,老师说图片gray_result_2确实是灰度图,同样可以用RGB(gray, gray, gray)来对图像进行灰度化,彩色图像是三个波段的组合形式,单个波段的都是灰度图像(因为是邮件回复,没有解释太清楚)。所以有没有大佬解释一下,为什么图片gray_result_2是灰度图(这可是三个通道啊)?后续有正确解答的话我会更正文章

小结

图像处理基础概念(并非所有基础概念)到此结束了,文中可能存在许多不足之处,希望大家多多指正,一起学习,一起进步!!!

参考文章: [1]很多图片识别为什么将彩色图像灰度化?
[2][Python图像处理] 一.图像处理基础知识及OpenCV入门函数
[3]数字图像处理:第3版/(美)冈萨雷斯(Gonzalez,R.C),(美)伍兹(Woods, R.E.)著.阮秋琦等译

[Until: 2020年12月26日16时,上面的那个问题困扰了好久,可最后也是不明不白,还是得好好看书,愿所有的深情都不要被辜负,所有的努力都会有回报]

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值