APP下载

PhotoShop与OpenCV在图形图像处理教学中的应用

2020-11-17张鑫鑫梁俊毅

教育观察 2020年26期
关键词:均衡化图形图像直方图

张鑫鑫,梁俊毅

(1.广西工业职业技术学院,广西南宁,530000;2.北海职业学院,广西北海,536000)

近几年,在国家的高度重视下,人工智能技术得到了快速的发展与应用。计算机视觉技术是人工智能的重要核心技术之一,也是计算机专业学生毕业后就业的重要方向。作为计算机视觉技术中的基础内容,图形图像处理的相关课程已在全国各大高校广泛开设,并被作为专业建设的重点方向。图形图像处理是用计算机对图像进行达到所需结果的处理的技术,主要内容包括图像编码、图像增强、图像复原、图像分割和图像分析等内容。在人工智能的应用中,通常需要大量数据来训练深度学习模型,目的在于避免过拟合。因此,图像增强在人工智能技术中不可或缺。

相对于其他专业基础课程而言,图形图像处理课程涉及的知识面较广,对学生的数学水平要求较高。特别是一些经典的图像处理算法,教师在介绍过程中虽然通过公式、文字、程序实现等各种方法进行讲解,但还是过于抽象,很多概念容易混淆不清,会使学生在理论学习过程中觉得课程难度很大,对具体的图像处理算法理解不深刻,不能工程化相关的图像处理技术,逐渐产生厌学心理。例如在人脸校正的处理中,要通过计算眼睛的旋转角度来矫正人脸,该算法涉及大量的数学公式,如果只通过讲授的方法,学生很难掌握。

一、两种教学软件相互配合使用

针对本课程的教学难度以及偏重于编程实践的专业特点,本文以OpenCV为实验教学的工具软件,以PhotoShop为辅助软件。在OpenCV功能实现过程中,PhotoShop可以将旋转角度、颜色通道等相关概念和过程以更加生动、直观的方式呈现给学生。[1]数字图像处理课程理论教学的核心内容包括直方图、点运算、滤波器、形态学运算、几何变换及彩色颜色空间等。其中,很多内容可以结合PhotoShop进行讲解,本文以直方图均衡化来为例,详细讲解实验设计方法,通过两种软件的对比达到最好的课堂效果。教师首先讲解理论原理,再通过PhotoShop进行效果展示,最后让学生可以在OpenCV中编程并给出最终的实验结果。[2]第一,实验设计降低了理论内容讲解的枯燥感。通过该软件不同参数下不同效果的演示和课堂互动,教师可以将理论教学上某些算法的效果以更加生动的方式呈现给学生,提高学生对原理的理解以及对图像处理算法的感性认识,调动学生学习的积极性。第二,实验设计消除学生对于课程实用性的疑虑,清楚本次课程学习的内容可以具体应用到什么环境中,可以解决哪些问题。第三,实验设计提高学生对于程序编写重要性的认识。通过编程的方式,程序员可以封装用户所需的各类功能,从而让用户在使用过程中直接调用开发好的软件,达到一个良好的用户体验,这才是软件开发的意义。因此,实验对比的教学方法可以启发学生将理论知识应用于实践,对于培养学生解决复杂工程技术问题、给出合理解决方案有直接作用。

二、图形与图像的基础知识

(一)位图与矢量图

计算机记录数字图像的方式有两种:一种是用像素点阵方法记录,即位图;另一种是通过数学方法记录,即矢量图。

位图图像是由许许多多的被称为像素的点组成。这些不同颜色的点按照一定的次序排列,组成图像。图像的大小取决于像素的多少,图形的颜色取决于像素的颜色。位图图像可以很容易地在不同软件之间交换文件,而缺点是在缩放和旋转时会产生图像失真现象。

矢量图形是以线条和颜色块为主构成的图形。矢量图形与分辨率无关,可以任意改变大小以进行输出,图片的观看质量也不会受到影响。这主要是因为其线条的形状、位置、曲率等属性都是通过数学公式进行描述和记录的。矢量图所占磁盘空间较小,但色彩较位图相对单调。

(二)分辨率

分辨率对于数字图像的显示及打印都起着至关重要的作用,一般情况下会分为图像分辨率及屏幕分辨率等。图像分辨率通常以“像素/英寸”来表示,指图像中每单位长度含有的像素数目。屏幕分辨率指显示器分辨率,即显示器上每单位长度显示的像素或点的数量,通常以“点/英寸”表示。

三、直方图均衡化的教学设计

(一)环境搭建

OpenCV是一个开源的跨平台计算机视觉库。[3]该库是以C/C++语言开发的,进行了大量优化,运行高效,实现了计算机视觉方面的很多通用算法,同时提供了C,C++,Python,Ruby,MATLAB等语言接口。在众多编程语言中,Python的最大优点是比其他语言更简单易学,功能强大的解释型编程语言。它有简洁明了的语法和高效率的高层数据结构,能够简单而有效地实现面向对象编程。除了 Google 的 AlphaGo 应用 Python 语言而大获成功以外,在 Facebook 开源了人工智能编程工具箱 PyTorch 后,更是奠定了其作为人工智能时代首选语言的地位。在选择开发软件及程序时,教师应以市场需求为主导,选择较为前沿的编程技术,真正实现学校教学内容对接企业生产过程。所以,本实验开发环境,操作系统为64位Windows系统,并选择OpenCV 3.4.1,Python3.6.5作为开发工具。

PhotoShop是一款图形图像处理软件,是平面、三维、建筑、影视后期等领域的设计师必备的一款图像处理软件。它可以精确完成图像编辑任务,可以对图像进行缩放、旋转或透视等操作,也可以进行修补、修饰图像的残缺等编辑,还可以将几幅图通过图层操作、工具应用等编辑手法,合成完整的、意义明确的设计作品。目前,Photoshop已是图像编辑领域众所周知的著名软件。在本实验中,本研究选择PhotoShop cc 2018作为辅助软件。

(二)直方图

1.直方图的概念讲解

直方图也被称为柱状图。在直方图中,横轴代表着照片亮度的等级,从左到右是暗色调到亮色调的渐变,将亮度分为256个等级;纵轴则表示像素个数,每个亮度等级都有相对应的像素个数。直方图波形将连续的像素值点连接,并将照片的曝光精度客观、全面地反映出来。

如果只是从理论上来讲直方图,非艺术专业的学生很难理解“亮度等级”等相关概念,更无法掌握什么是直方图。因此,教师可以在课堂中以PhotoShop为辅助软件,以图像的形式来讲解直方图的含义。

2.PhotoShop中的直方图展示

在 PhotoShop 中,通过单击“图像—调整—色阶”就可以看到该图片的直方图。[4]教师在此选择一张较为模糊的图片,进行对比分析,以便学生可以更好地理解直方图的概念。

如图1所示,在直方图中水平方向从左到右是从暗到亮的像素分布,黑色三角代表黑场,灰色三角代表灰场,白色三角代表白场,而垂直方向上的高度是代表着像素的数量。该图像的直方图中,像素大多集中在极暗区和中间区域,在极亮区没有像素分布,所以可以通过直方图发现整张图片色彩偏暗,从而对图像影调的正常与否作出初步的判断。从这一点可以对图片的亮度情况作出初步判断,该图像中最暗的部分尚未达到黑色,最亮的部分也尚未达到白色。整个图片看起来就是灰沉沉的,色调不够鲜艳,照片效果不好。

图1 Photoshop展示直方图

相比较于单纯的讲解,通过Photoshop的展示可以清晰地将直方图呈现出来,让学生更直观地看到直方图中像素出现的频率与图像质量的关系,更简单地掌握直方图以及理解亮度、色阶、通道等基本概念,并通过直方图的形状判断出图像的问题。在此基础上,再来学习OpenCV绘制直方图会更简单易懂。

3.OpenCV绘制直方图实验

在讲解原理并用PS展示之后,就可以让学生自己动手,采用OpenCV+Python的方法绘制直方图。[5]在实验环节,教师先开源代码,让学生按照实验要求,首先导入所需要的库,如 OpenCV、matplotlib,然后再读入原始图像并显示出来,对原始图片绘制直方图。在这种实现方法中,需要特别注意hist函数在调用过程中,它的语法格式是hist(数据源,像素级),包含两个参数,其中像素级的范围是[0,255],而数据源必须是一维数组,但是原始图片往往是二维的,那么此时就需要用.ravel()将原始图片处理成为一维数组。

图2 OpenCV绘制直方图代码

图3 OpenCV绘制直方图

由图可以看出,当图片不够清晰的时候,直方图的分布集会中在较窄的范围内,从黑到白的渐变层次很少,也就是对比度很低,所以在这种情况下,教师就要引入直方图均衡化的方法,使图像清晰度提高。

(三)直方图均衡化

1.直方图均衡化的概念讲解

由前文可知,清晰度不高的图像直方图的分布会比较集中,如果可以使直方图的灰度值覆盖了整个横轴的取值范围,那么这幅图像就具有较大的灰度动态范围和较高的对比度,同时图像的细节更为丰富。因此,直方图均衡化的基本思想是把原始图的直方图变换为均匀分布的形式,这样就增加了像素灰度值的动态范围,从而达到增强图像整体对比度的效果。为了形象理解直方图均衡化的概念,教师可以先使用PhotoShop动态的演示出直方图均衡化的效果,在灰度值分布变得均匀后,图像的对比度增强,细节变得清晰可见。

2.PhotoShop直方图均衡化展示

从图1可以看出,直方图像素集中在左侧,右侧几乎没有像素。此时教师可通过色阶对照片亮度进行调节,先将白场滑标慢慢向左移动,使之超过峰值起始点;或是将灰色滑标向左移动,减小灰色滑标与白色滑标的间距,从而将照片的亮度提高,并再进行进一步修正。同时,教师也可以在通道中,选择红、绿、蓝通道分别来调整,以实现直方图的均衡化。

图4 通过Photoshop实现直方图均衡化

3.OpenCV直方图均衡化实验

通过Photoshop中的直观演示可以看出,直方图均衡化的效果。在使用OpenCV处理彩色图片时,直方图均衡化的方法有很多种。本文以彩色通道分解法为例来讲解。[6]

在Photoshop的直方图展示中我们可以看到,彩色图像是由红、绿、蓝三种基色堆叠而成,每一种基色的图像都是一幅灰度图像。因此,在彩色直方图均衡化时可以先将彩色通道分解,也就是RGB三通道分开,对每一个通道分别均衡化之后再重新合并。在这种方法中,课题组调用了split()函数将三个通道拆分,然后使用equlizeHist()函数分别对各个通道进行均衡化,最后使用merge()函数将三个通道重新合并。

图5 直方图均衡化代码

图6 直方图均衡化后的效果对比

图7 均衡化后的直方图对比

四、PhotoShop在其他核心内容上的应用

除了直方图均衡化的实验设计外,对于数字图像处理课程理论教学的其他核心内容,教师也可以结合PhotoShop来讲解。例如,人工智能模型在训练的过程中需要输入大量数据才能提高模型的准确率,当数据集较小时,教师可以通过数据增强的方法来增加数据集,常用的有图像几何变换、图像色彩变化、添加噪声等。

(一)图像的几何变换

在几何变换的过程中,图像X轴方向的缩放比例为fx,Y轴方向的缩放比例为fy,那么对于原图的(x0,y0)点,对应于缩放后的图像(x1,y1),它们之间有如下关系:x0=x1/fx;y0=y1/fy。该算法可以通过PhotoShop进行展示,让学生对比出几种插值方法的不同效果。缩放后的图像会变得比较粗糙,图像质量有所下降。因此,在进行图像缩放时需要进行必要的插值操作,除了最近邻插值法外,还有效果更佳的双线性插值和高阶插值等。

(二)图像色彩变化

在图像色彩的讲解过程中,对于RGB、HSV、HLS颜色空间的概念,教师只通过公式讲解学生很难理解。此时教师通过PhotoShop中色相、饱和度、明度的调整,可以让学生直观地看到随着参数的变化,颜色不断发生变化,并对比调整后的效果。这种方法可以使学生更好地掌握相关概念。

(三)图像添加噪声

图像噪声是图像在获取或传输的过程中受到随机信号的干扰,在图像上出现的一些随机的、离散的、孤立的像素点,这些点会干扰人眼对图像信息的分析。因此,在图像中增加噪声,既可以扩大数据集,又可以提高系统的鲁棒性。但通常图像噪声是比较复杂的,很多时候将其看成是多维随机过程。因此,教师可以借助于随机过程描述噪声,即使用概率分布函数和概率密度函数。教师可以通过Photoshop在滤镜中为图像添加杂色或者在滤镜库中添加颗粒等操作方法,直观地展示出添加噪声后的图像效果,让学生理解添加噪声的意义。

图8 添加噪声

PhotoShop是广泛应用的图像处理软件,将其作为效果展示的辅助工具引入到图形图像处理课程中,可以让学生更清晰地理解课程中的相关概念以及功能实现的流程。而OpenCV作为跨平台计算机视觉库,简单易学,又有很多开源库可以免费调用,可以提高学生的学习兴趣。因此,两款软件的配合使用,从教学方式及教学内容上均可满足图形图像处理教学应用的需求,使学生深入理解图形图像处理的基础理论和编程的实践能力。

猜你喜欢

均衡化图形图像直方图
符合差分隐私的流数据统计直方图发布
Photoshop图形图像处理线上线下混合式教学模式探究
用直方图控制画面影调
基于数字图像直方图均衡化改进算法的设计研究①
浅析计算机图形图像处理技术偏技术
网页设计与图形图像处理技术探析
中考频数分布直方图题型展示
面向工艺设计的图形图像处理系统研究与实现
圆投影及直方图不变矩在多视角产品检测中的应用
制度变迁是资源均衡化的关键