




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 python在数字图像处理课程教学中的应用 李振江摘 要:为了更好地开展数字图像处理课程的教学,教师应在分析课程实际需求以及语言特点的基础上,将python选为课程实践语言,在引入python数字图像处理基本知识的基础上,对一些最基本的图像处理算法进行实现。文章就此对python在数字图像处理课程教学中的应用进行了分析。一、引言数字图像处理是一门综合性多领域交叉的学科,经过多年的发展,已经在机器视觉、自动控制、虚拟现实等领域取得了长足的发展。很多院校都在本科阶段开设了相关课程,其教学目的在于让学生了解数字图像处理的一般概念,掌握该领域最基本
2、的算法原理以及实现方法,为进一步的学习打下基础。在该课程的教学实践中,教师选择一门合适的语言工具进行授课尤为重要。语言工具的选择要注意这样几个问题;首先,语言要易于上手,这样才能让学生较快进入图像处理知识的学习而不是在一些编程细节上占用过多时间;其次,选择的语言要与当前新技术有较好的结合,这样在学习过程中才有助于开拓学生视野;最后,语言的扩展性要强,便于学生日后快速在其他相关领域展开学习应用。二、python语言的特点1.简单易用python是一种面向对象的解释型语言,在其丰富外部库的支持下,实现数字图像处理的基本算法,通常都只需要不多的几行代码,非常方便。一方面,编程能力较低的本科学生使用p
3、ython语言也可以对课程内容进行实现;另一方面,在具体实践中能让学生从烦琐的底层逻辑(如io操作、显示等)中摆脱出来,专注于图像处理的方法层面。从培养学生学习兴趣的角度讲,与早期选择使用的c+等语言相比,大部分学生都能使用python完成基本算法的实现并将结果图像进行显示,这在初期对学生的学习兴趣是一种极大的鼓舞。2.应用广泛python自20世纪90年代初诞生到现在,在各个领域都得到了广泛的应用。最初它的应用较为局限,大都以系统管理和web编程这两个方面为主。在该语言诞生之初,其一个核心的思想就是开放和开源,在众多开源社区的支持下,自2004年以来,python的使用率有一个明显的增长。2
4、017年ieee spectrum发布了第四届顶级编程语言交互排行榜,python高居排行榜榜首,说明时下python语言又成为业界应用的热点。尤其是在科学计算领域,随着深度学习技术引发的人工智能新一轮热潮,众多的代码都是基于python语言进行发布,给这一领域传统的霸主matlab带了来巨大的挑战。3.扩展性强python语言功能强大,有“胶水语言”的别称,能够方便地对其他语言实现的功能模块进行调用。对于某一具体问题,可以使用python搭建整体框架,然后在不同的位置调用已有的成熟模块进行实现,是一种快速的软件实现方法。同时python语言的扩展库数目繁多,在很多不同的应用领域,都有相应的库
5、与之配合,如数学工具库numpy、图形库tkinter或者pil、多媒体封装库pyopengl、数据库接口mysqldb、机器学习库scikit-learn等。结合数字图像处理课程本身的需求以及python语言的自身特点,选择python作为课程讲授的语言是较为符合实际需求的。同时,为了便于以后在数字图像处理方面的进一步学习,使用了opencv的python库作为主要的图像处理工具,同时使用numpy作为基础的数学库。三、python数字图像处理基础1.python的安装和库的导入有两种方式对python进行安装,使用第一种方式,在官网下载相应操作系统的安装包对语言本体进行安装,之后根据应用的
6、需求下载相应的库,手工对其进行安装配置。第二种方式则是直接选用第三方的集成安装管理环境对其进行安装。由于python功能库数目较多,且很多库与库之间还存在依赖关系,对于初学者建议使用第二种方式进行安装,推荐使用的安装工具为anaconda,该工具可以一键式安装python并对功能库进行集成化管理。在熟悉使用后,还可以使用第一种方式重新安装一次,以便进一步加深对python开发中使用到各种工具以及库的理解。预装好的anaconda中没有opencv,还需要在anaconda的库管理工具中对opencv进行安装。安装完成后,在代码中使用import命令导入相应的库,就可以方便地使用库的相关功能。2
7、.图像的读取、显示以及保存载入、显示并保存图像是数字图像处理的最基本操作,对于常见的各种图像格式,python的opencv库都能对其进行较好的支持,其代码如下所示:import cv2img = cv2.imread('d:/1.bmp')cv2.imshow('title', img)cv2.waitkey(0)cv2.destroyallwindows()cv2.imwrite('d:/1.jpg',img)第一行代码为引入opencv库,后空一行,开始对图像进行读取以及显示。第三行中,使用imread方法讀取了一幅图像,将该图像赋值给变量
8、img。第四行调用imshow方法绘制窗口并显示图像。第五行是对窗口的阻塞式显示,第六行销毁了所有窗口。第七行调用imwrite方法保存图像,这里的文件后缀由原始的bmp变为jpg,该方法可以根据文件后缀自动判别所需要保存的文件类型。3.图像的像素操作图像基本的像素操作包括像素值的读取与写入,在opencv中,一幅图像被看作一个数值矩阵,矩阵中点的值就是对应位置像素的值,所有和矩阵相关的操作都是调用numpy库来进行处理的,其代码如下所示:img = cv2.imread('d:/1.bmp')endprintpixel = img1,1,0print (pixel)pixel
9、 = 10img1,1,0 = 10print (img1,1,0)首先读取一幅图像,之后使用方括号索引对指定位置的像素进行读取,在上述代码中,索引位置为“1,1,0”,表示要读取的像素坐标为“1,1”,颜色通道为第0号通道。之后将数值10重新赋给这个坐标位置,同时将数值进行控制台输出,以便观察变化。除了以单个的方式对像素进行读写外,还可以以某一坐标范围对像素进行批量处理。四、基本的图像处理算法1.直方图处理灰度直方图是图像不同灰度级出现概率的统计,通过直方图可以非常直观地了解一幅图像的明暗程度以及色彩均匀程度,是多种空间域处理技术的基础。我们可以调用calchist方法来计算一幅图像的灰度直
10、方图,并调用matplotlib库的相关方法对其进行显示。同时,对于灰度级分布不均匀的图像,可以使用直方图均衡化方法对图像进行增强,调用equalizehist方法即可实现该操作。相关代码如下:import cv2import matplotlib.pyplot as pltimg = cv2.imread('d:/1.jpg',0) # 直接读为灰度图像hist_cv = cv2.calchist(img,0,none,256,0,256) # 计算灰度直方图plt.plot(hist_cv) # 使用matplotlib显示直方图res = cv2.equalizehist
11、(img) # 对原始图像进行直方图均衡化计算plt.subplot(121),plt.imshow(img,'gray') # 对比显示均衡化前后的图像plt.subplot(122),plt.imshow(res,'gray')plt.show2.空间滤波空间滤波是由一个邻域模板对原始图像进行卷积操作,将卷积的结果代替该位置的像素,以达到某种处理的效果。最常见的滤波方式有两种,一种是空间平滑滤波,常用于模糊处理和降噪处理;还有一种是空间锐化滤波,常用于突出边缘操作。以下代码演示了使用均值滤波器进行平滑滤波以及使用sobel滤波器进行锐化滤波。import c
12、v2img = cv2.imread(d:/1.jpg',0) # 直接读为灰度图像blur = cv2.blur(img,(5,5) # 使用5*5的模板對图像进行中值滤波sobelx = cv2.sobel(img, cv2.cv_64f, 1, 0) # 分别沿着x和y方向计算sobel图像sobely = cv2.sobel(img, cv2.cv_64f, 0, 1)sobelx = numpy.uint8(numpy.absolute(sobelx) # 将计算得到的图像转换为uint8类型sobely = numpy.uint8(numpy.absolute(sobely
13、)sobelcombine = cv2.bitwise_or(sobelx, sobely) # 合并两个方向的图像 得到最终的滤波结果3.图像分割图像分割是将图像的前景或感兴趣区域从背景中提取出来的一种技术手段,是从图像中提取相关语义信息的必要步骤。目前图像分割的技术手段多种多样,最基本的图像分割即图像的二值化处理,将整个图像划分为前景和背景两个部分。我们可以使用手工阈值方法对图像进行二值化处理,还可以使用自动阈值方法对其二值化。以下代码演示了使用手工阈值方法以及经典的自动阈值方法otsu对图像进行二值化分割。import cv2img = cv2.imread('d:/dd.jpg', 0) # 读取灰度图像ret1, bwimg1 = cv2.threshold(img,127,255,cv2.thresh_binary) # 手工阈值进行二值化ret2,bwimg2 = cv2.threshold(img,0,255,cv2.thresh_binary+cv2.thresh_otsu) # otsu二值化五、小结在数字图像处理课程的教学过程中,选择python作为实践教学使用的程序语
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 爬架安全专业试题及答案
- 口腔专业基础试题及答案
- 卫生应急专业试题及答案
- 湖北省孝感市2025-2026学年高二上学期9月起点考试物理试卷(含答案)
- 黑龙江省大庆市2025-2026学年高三第一次教学质量检测数学试题(含答案)
- 专业级试题及答案
- 历史专业期末试题及答案
- 广东省2025-2026年高三上9月月考历史试卷(含答案)
- 福建省泉州市安溪县2024-2025学年高二上学期11月期中考试化学试卷(含答案)
- 龙岗玻璃锁施工方案
- 2025年数据质量考试试题及答案
- 幼儿园获奖公开课:中班语言活动《我的幼儿园》课件
- TJPMA 022-2024 疾病预防控制业务档案管理规范
- 餐饮服务与数字化运营 习题及答案 项目七
- 携程定制师培训
- 《神经外科颅内压增高》教学课件
- 校园十防教育
- 中建中建滑模施工方案范本
- UL498标准中文版-2019插头插座UL标准中文版
- 铁路劳动安全 课件 第五章 安全标志标识
- 教师严慈相济课件
评论
0/150
提交评论