你点开了【学生会技术分享系列】的第3篇推送
全文字数: 707
阅读时间:5分钟
随着人工智能的快速发展,图像的处理成为了一项必不可少的操作,今天,刚刚接触一点点图像处理的小编就来为大家普及一下有关计算机图像的一些处理。
写在前面
一张图像是由许多的像素点组成的,这个大家都知道,随之而来的两个性质就是颜色通道与图像深度。
现在有许多针对图像处理的库可以使用,最普遍的比如C++中的Opencv库,Python中的PIL库以及matlab中的一系列图像处理函数。
图像
图像深度是指存储每个像素所用的位数,例如8位图像的像素值在0-255之间,即为灰度图。
每个图像都有一个或多个颜色通道,所有颜色通道中的颜色叠加混合产生图像中像素的颜色,例如RGB图像有三个通道,即R(红色),G(绿色),B(蓝色)。而RGBA图像在此基础上增加了Alpha(透明度)这一通道。
滤波
均值滤波
高斯滤波
图像滤波,指在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,滤波器有很多种,在这里我们只说两种种线性平滑滤波器。
均值滤波:在图像上对目标像素给一个模板,该模板包括了其周围的临近像素,再用模板中的全体像素的平均值来代替原来像素值。
高斯滤波:均值滤波为了取平均,所以模板的各个值都是一样的,但高斯滤波就是利用高斯分布,给滤波的模板赋相应的权重,将模板内像素进行加权平均得到输出像素值。
在图像滤波中,这个模板称为内核,步长决定了你每次移动内核的距离,有时你还可以使被替代像素的位置不是内核的中心像素。
灰度化
灰度图
灰度化,即根据Gray=R*0.3+G*0.59+B*0.11,将颜色空间缩小为0-255的灰度空间。灰度化生成的图像为灰度图。
二值化
二值化图像
二值化,即在灰度图的基础上,给定一个阈值,像素值若大于这个阈值,则为255(白色),小于这个阈值,则为0(黑色)
边缘检测
边缘检测的算法主要是基于图像强度的一阶和二阶导数,通过使用不同的算子进行处理,最后将结果显示在图像上即为检测出的边缘。
在这里我们只展示Canny算子和Sobel算子的效果,具体的操作原理不再详述。
sobel算子检测边缘
canny算子检测边缘
直方图均衡化
说到均衡化,就不得不提直方图的概念。
灰度直方图描述的是图像中具有相同灰度级的像素的个数,它是图像灰度的函数。在平面坐标系中,如果用横坐标表示灰度级(0-255),则纵坐标就代表该灰度级的像素的个数。
当然,如果是彩色图像,则可以画出RGB三个通道分别的直方图。即为彩色图片直方图。
直方图均衡化,简而言之,就是通过拉伸像素强度分布范围来增强图像对比度的方法。再说简单点,就是把像素值在0-255的灰度空间的分布按照概率平均到整个灰度空间。
左为原灰度图,右为均衡化后图像
关于图像的操作远不止于此,因为是科普性质的推文,所以许多原理与具体应用,小编用这点篇幅也无法全部说明。如果有错误,希望大家谅解并予以指正。
如果想在这方面做更深入地了解,以下链接供大家参考:
https://docs.opencv.org/master/d9/df8/tutorial_root.html
https://cn.mathworks.com/
领取专属 10元无门槛券
私享最新 技术干货