APP下载

基于OpenCV与Java的图像处理自主学习软件设计

2019-10-15陈小宇魏静静

软件导刊 2019年8期
关键词:图像处理

陈小宇 魏静静

摘 要:《数字图像处理》课程存在理论知识枯燥、实践性强和学习难度大等问题。为了帮助学生自主学习该课程,利用JavaGUI组件和OpenCV图像处理库设计了图像处理学习软件平台,实现图像滤波、图像增强、图像加噪、图像翻转等常用功能,且可任意添加或删除某一功能。实验结果表明,该平台具有操作方便、代码开源、直观形象的特点,加深了学生对理论知识的理解,有助于提高学生自主学习能力。

关键词:图像处理;学习软件; JavaGUI;OpenCV图像库

DOI:10. 11907/rjdk. 182785 开放科学(资源服务)标识码(OSID):

中图分类号:TP319文献标识码:A 文章编号:1672-7800(2019)008-0116-03

Design of Image Processing Autonomous Learning Software

Based on OpenCV and Java

CHEN Xiao-yu,WEI Jing-jing

(Central China Normal University,Academy of Physical Science and Technology,Wuhan 430079,China)

Abstract: The course of Digital Image Processing suffers from problems like dull theoretical knowledge, stronger practicality and difficulty in learning. In order to help students to learn the course independently, we have designed an image processing learning software platform based on JavaGUI components and OpenCV image processing library, which realizes some common function modules, image filtering, image enhancement,image noise addition, image rollover and other common functions. Meanwhile, it can add or delete some function modules arbitrarily. It is confirmed that the platform has the characteristics of easy operation, open source code and visual image, and it contributes to enhance students understanding of theoretical knowledge and improve students ability of autonomous learning.

Key Words: image processing; learning software; JavaGUI; OpenCV image library

基金項目:华中师范大学基本科研业务费专项资金项目(CCNU16A02018)

作者简介:陈小宇(1972-),男,博士,华中师范大学物理科学与技术学院副教授、硕士生导师,研究方向为光电信号检测、信号与信息处理、嵌入式系统与应用;魏静静(1992-),女,华中师范大学物理科学与技术学院硕士研究生,研究方向为图像处理。

0 引言

《数字图像处理》课程是很多高校信息类专业重要的基础课[1]。该课程具有知识体系严谨、概念抽象、理论推导繁琐复杂、理论与实际联系紧密等特点[2]。

授课一般采用理论讲解、公式推导和Matlab演示相结合的方式,使抽象的理论知识具体化和形象化。张晓强等[3]利用Matlab图形用户接口设计了一个具有常见图像处理功能的演示平台,实现了该课程中核心教学内容的交互式仿真;肖龙飞等[4]利用Matlab GUI 设计的数字图像教学软件,涵盖图像空间域处理、图像频率域处理和插值放大3大模块,满足本科课程的基本教学需求;杨淑莹等[5]基于VC++6.0开发了一套集理论教学与实验教学于一体的软件设计方法;张雁腾等[6]利用可视化编程语言VC++的MFC功能,针对数字图像处理内容编写了GUI人机交互图形用户界面。这些平台主要用于教师作教学演示,具有交互性,但学生不能查看其函数库内部的具体实现过程,不利于学生深刻理解图像处理技术。本文采用JavaGUI组件和OpenCV图像处理库相结合的方式设计学习平台,使学生在学习理论知识的同时,可以自主查看并学习函数的具体实现过程(OpenCV的开源性[7-10])。Java语言具有跨平台性[11-12],因此该软件可以运行在不同的操作系统上,更便于学生自主学习。

1 系统架构

本文根据常用的图像处理基本操作流程和图像处理技术设计学习平台。首先设计一个含有开放源码的可视化图像处理操作界面,然后对这个界面中所列出的功能进行后台回调函数编写,从而完成整个图像处理学习系统设计。系统由拍照、图像加噪、图像滤波、图像翻转、图像特殊处理和帮助6个功能模块构成,结构如图1所示。

图1 系统框架结构

拍照为一个单独模块,其首要作用是为了验证Java对OpenCV图像库的调用以及文件操作是否成功,其次用来实现拍照功能。

系统设计关键步骤:①明确教学系统实现的主要功能,应该包含哪些模块;②先画出大概的图像处理教学软件的界面草图,然后稍作修改,最后确定界面布局方案;③根据最终方案,使用Java语言GUI组件在Eclipse平台上编写图形操作界面及其它菜单项目;④编写每个菜单的功能回调函数并逐项进行功能检查,排除所有功能Bug使系统稳定运行;⑤完成帮助部分,详细说明软件操作指南。

2 系统设计

2.1 关键点设计

本学习软件内部参数和变量较多,正确设置各个参数及明确各参数之间的关系至关重要。任何一个函数在操作之前都要确定操作对象,确保不同回调函数与图像数据之间传输的正确性。在软件启动时,默认打开拍照界面(见图2拍照操作界面),以验证Java与OpenCV图像处理库的链接是否成功。

图2 拍照操作界面

2.2 图像滤波

图像滤波指在尽量保留原图像特征的条件下对图像进行噪声抑制。滤波方法可分为空域滤波和频域滤波[13-14],这里主要讲解空域滤波。空域滤波即直接对像素灰度值进行处理,如式(1)所示。其中,[f(x,y)]为原图像的像素灰度值,[g(x,y)]为处理后的像素灰度值,T是作用于[(x,y)]邻域的算子。

[g(x,y)=T[f(x,y)]]                (1)

该功能模块主要实现中值滤波与均值滤波两种方法。

中值滤波是常用的非线性滤波方法,其主要思想是对像素邻域向量化取中值进行滤波,其运算简单、高效,如式(2)所示。

[Vout=median{a1,a2,a3,?,an}]       (2)

核心操作代码如下:

Mat srcImage = Imgcodecs.imread("picture_path");

Mat dstImage = srcImage.clone();

Imgproc.blur(srcImage,dstImage,newSize(9,9),newPoint(-1,-1), core.BORDER_DEFAULT);

Imgcodecs.imwrite("D:\\java_opencv\\blur.jpg", dstImage);

均值滤波又称邻域平均法,将单个像素及指定邻域内的所有像素按某种规则或模板计算平均灰度值,作为新图像中的对应像素值。均值滤波模板为ones(m,n),模板内所有元素均为1,它们的权重相同,其降噪平滑后的图像表达式如下:

[g(x,y)=1M(i,j)∈sg(i,j)]            (3)

其中,s是点[(x,y)]邻域内的点集,M是点集s中的总点数。

核心操作代码如下:

Mat srcImage = Imgcodecs.imread("picture_path");

Mat dstImage = srcImage.clone();

Imgproc.medianBlur(srcImage, dstImage, 7);

Imgcodecs.imwrite("D:\\java_opencv\\medianBlur.jpg", dstImage);

滤波操作界面如图3所示。

图3 滤波操作界面

2.3 图像加噪

噪声可以看作随机信号,具有统计学上的特征属性[15]。常见的噪声有高斯噪声和椒盐噪声[16]。高斯噪声由摄像机传感器元器件内部产生,可用上述的均值滤波去除噪声,它的概率密度函数服从高斯分布[17],见式(4)。椒盐噪声是切割图像时产生的黑白相间的亮暗点噪声,椒即黑,盐即白,是一种因为信号脉冲强度引起的噪声,又称脉冲噪声,可通过上述的中值滤波很好地去除,其概率密度函数表达式如式(5)所示。

[P(z)=12πσe-(z-μ)2/2σ2]                    (4)

[P(z)=Pa,z=aPb,z=b0,other]                          (5)

2.4 图像翻转

图像翻转操作是最基础也是最重要的一种图像几何变换。几何变换直观上是改变图像的大小、方向等,实则是对图像像素空间关系的改变[18]。翻转又称图像的镜像,分为垂直镜像和水平镜像两种。水平镜像是翻转后图像每个像素点的横坐标与翻转前對应像素点的横坐标关于图像的竖直中心线对称,即左右翻转;垂直镜像则是翻转后图像每个像素点的纵坐标与翻转前对应像素点的纵坐标关于图像的水平中心线对称,即上下翻转。该功能模块主要实现这两种翻转操作。

2.5 特殊处理

特殊处理模块包含灰度化操作和直方图统计操作。

将一幅彩色图像变换成单一灰色图像的过程即为灰度化[19],如一幅彩色图像的深度为8,那么一个像素点就有[255×255×255]种颜色变化范围,而灰度化后像素变换范围为255种,大大减少了图像内存,后续操作处理计算量少、运算速度快、内存占用量少,因此一般进行图像处理时会先将图像转化为灰度图像。

灰度直方图是对一幅图像中出现的各个灰度等级的一种统计表示,通过直方图可以看出图像的灰度分布情况[20]。图像的视觉效果与其直方图有着对应关系,每一幅图像都有自己对应的直方图,不同图像对应的直方图也不一样。直方图是图像处理的一种基本操作,通过观察直方图,可以分析图像的灰度范围、分布情况、整幅图像的亮度均值以及亮暗对比度等,以此为基础对图像进行后续处理。

3 应用效果分析

为评估图像处理学习平台对学生自主学习情况的影响,将学习《数字图像处理》课程的学生分为5个班,分别进行目的性试验学习测试。其中一班、二班、三班学生未进行自主学习实践操作,四班、五班学生安装该学习软件并进行自主学习实践操作。

3.1 学生成绩分析

成绩的统计分析在一定程度上可以反映学生自主学习状况,各班学生成绩情况如表1所示。表1数据表明:与一班、二班和三班相比,四班和五班学生成绩中优秀和良好的比例均较高,平均分明显提高,中等和及格的比例较低。

表1 学生成绩情况                                       (%)

3.2 學生问卷调查

问卷调查能反映出学生对该平台的认可度。对四班和五班的学生进行问卷调查,如表2所示。表2中数据表明:认为该平台对学生学习起作用的人所占比例为96.2%,推荐使用该平台的人所占比例为95.7%。

表2 问卷调查内容及结果                                 (%)

4 结语

本文利用Java语言的跨平台性和OpenCV开源性特点设计了图像处理自主学习软件,充分激发了学生自主学习的兴趣。通过改变输入参数进行学习,加深对数字图像处理理论知识的理解,进一步提高学生的编程能力。但该平台内容还不够丰富,后期可添加一些与图像处理技术相关的应用进行完善。

参考文献:

[1] 杜云明,郝兵,刘文科. 《数字图像处理》课程任务驱动教学模式的实践[J]. 中国电力教育,2013(10):113-114.

[2] 梁志贞,江海峰,杨小冬. 基于“卓越计划”的《数字图像处理》课程教学改革实践[J]. 高教学刊,2016(3):146-147.

[3] 张晓强,王雪松. 基于Matlab GUI的图像处理演示平台设计[J]. 中国医学教育技术,2018,32(3):279-281.

[4] 肖龙飞,李金龙,杨凯. 基于Matlab的数字图像处理教学软件的设计[J]. 信息技术,2014(12):185-187.

[5] 杨淑莹,张桦. 《数字图像处理》教学软件的开发设计[J]. 天津师范大学学报:自然科学版,2009,29(4):76-80.

[6] 张雁腾,黄勇, 朱昌洪,等. 《数字图像处理》可视化教学软件的设计[J]. 电子技术与软件工程, 2017(14):74-75.

[7] 阴法名. 基于OpenCV图像处理[J]. 科技信息,2009(32):220-221.

[8] 黎松,平西建,丁益洪. 开放源代码的计算机视觉类库OpenCv的应用[J]. 计算机应用与软件,2005,22(8):134-136.

[9] 方玫,喻擎苍,李华强. C++Builder下基于OpenCV的数字图像处理[J]. 计算机工程与设计,2008, 29(4):882-884.

[10] ZELINSKY A. Learning OpenCV—computer vision with the opencv library[J]. IEEE Robotics & Automation Magazine,2009,16(3):100-101.

[11] 高彦卿. Java语言特点与未来发展趋势探析[J]. 中国电子商务, 2013(21):50-51.

[12] 韦东. Java语言与Java技术[J]. 计算机光盘软件与应用, 2011(18):208-209.

[13] PELI T,LIM J S. Adaptive filtering for image enhancement[C].  IEEE International Conference on Acoustics, Speech, & Signal Processing. IEEE, 1982.

[14] MCADAMS H P, JOHNSON G A,SUDDARTH S A,et al. Implementation of adaptive filtration for digital chest imaging[J]. Optical Engineering, 1987, 26(7):669-674.

[15] 王连利,刘增力,刘康,等. 基于灰度直方图的单一图像噪声类型识别研究[J]. 软件导刊,2018,17(4): 197-200.

[16] 郭忠明. 基于CUDA的并行图像处理性能优化[D]. 大连:大连理工大学,2012.

[17] 冈萨雷斯. 数字图像处理[M]. 北京: 电子工业出版社, 2005.

[18] 徐鹏飞. 图像处理中几种几何变换的实现[J]. 电脑知识与技术, 2017(35):210-211.

[19] 付钦学. 循环流化床锅炉排渣含碳量在线检测方法设计[D]. 北京:华北电力大学, 2014.

[20] 苏慧娟,于正林,张桂林. 基于OpenCV的图像处理[J].  科技资讯,2014,12(8):18-19.

(责任编辑:杜能钢)

猜你喜欢

图像处理
海战场侦察图像处理技术图谱及应用展望
人工智能辅助冠状动脉CTA图像处理和诊断的研究进展
基于ARM嵌入式的关于图像处理的交通信号灯识别
基于图像处理的机器人精确抓取的设计与实现
机器学习在图像处理中的应用
Bayesian-MCMC算法在计算机图像处理中的实践
改进压缩感知算法的图像处理仿真研究
基于图像处理的定位器坡度计算
基于图像处理的晶圆表面缺陷检测
对图像处理中ROF全变分模型的两种算法的比较研究