数字图像处理概述 (1).pdf
《数字图像处理概述 (1).pdf》由会员分享,可在线阅读,更多相关《数字图像处理概述 (1).pdf(118页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、 Python 数字图像处理 实验讲义 目目 录录 实验一实验一 图像处理基本操作图像处理基本操作.1 实验二实验二 图像中的像素访问与图像直方图图像中的像素访问与图像直方图.6 实验三实验三 图像的傅里叶变换图像的傅里叶变换.11 实验四实验四 图像的卷积与滤波图像的卷积与滤波.20 实验五实验五 图像的边缘检测图像的边缘检测.27 实验六实验六 图像的数学形态学处理图像的数学形态学处理.35 实验七实验七 基于基于 pythonpython 的手写数字识别的手写数字识别.42 附录附录 1 Python 基础基础.49 第一章第一章 课程介绍课程介绍.49 第二章第二章 Python 变量
2、和数据类型变量和数据类型.49 2-1 数据类型数据类型.49 2-2 print 语句语句.50 2-3 注释注释.51 2-4 什么是变量什么是变量.51 2-5 定义字符串定义字符串.52 2-6 raw 字符串与多行字符串字符串与多行字符串.53 2-7 Unicode 字符串字符串.54 2-8 整数和浮点数整数和浮点数.55 2-9 布尔类型布尔类型.55 第三章第三章 List 和和 Tuple 类型类型.56 3-1 创建创建 list.56 3-2 按照索引访问按照索引访问 list.57 3-3 倒序访问倒序访问 list.57 3-4 添加新元素添加新元素.58 3-5
3、从从 list 删除元素删除元素.59 3-6 替换元素替换元素.60 3-7 创建创建 tuple.60 3-8 创建单元素创建单元素 tuple.61 3-9“可变可变”的的 tuple.61 第四章第四章 条件判断和循环条件判断和循环.63 4-1 if 语句语句.63 4-2 if-else.64 4-3 if-elif-else.64 4-4 for 循环循环.65 4-5 while 循环循环.66 4-6 break 退出循环退出循环.66 4-7 continue 继续循环继续循环.67 4-8 多重循环多重循环.68 第五章第五章 Dict 和和 set 类型类型.69 5-
4、1 什么是什么是 dict.69 5-2 访问访问 dict.70 5-3 dict 的特点的特点.71 5-4 更新更新 dict.72 5-5 遍历遍历 dict.73 5-6 什么是什么是 set.74 5-7 访问访问 set.74 5-8 set 的特点的特点.75 5-9 遍历遍历 set.76 5-10 更新更新 set.77 第六章第六章 函数函数.78 6-1 调用函数调用函数.78 6-2 编写函数编写函数.79 6-3 返回多值返回多值.80 6-4 递归函数递归函数.81 6-5 定义默认参数定义默认参数.82 6-6 定义可变参数定义可变参数.83 第七章第七章 切片
5、切片.84 7-1 对对 list 进行切片进行切片.84 7-2 倒序切片倒序切片.86 7-3 对字符串切片对字符串切片.86 第八章第八章 迭代迭代.87 8-1 什么是迭代什么是迭代.87 8-2 索引迭代索引迭代.88 8-3 迭代迭代 dict 的的 value.89 8-4 迭代迭代 dict 的的 Key 和和 value.90 第九章第九章 列表生成式列表生成式.91 9-1 生成列表生成列表.91 9-2 复杂表达式复杂表达式.92 9-3 条件过滤条件过滤.92 9-4 多层表达式多层表达式.93 附录附录 2 Anaconda 介绍、安装与使用介绍、安装与使用.94、序
6、、序.94 一、什么是一、什么是 AnacondaAnaconda?.94 1.1.简介简介.94 2.2.特点特点.94 3.Anaconda3.Anaconda、condaconda、pippip、virtualenvvirtualenv 的区别的区别.94 AnacondaAnaconda.94 condaconda.95 pippip.95 virtualenvvirtualenv.95 pip pip 与与 conda conda 比较比较.96 condaconda 与与 pippip、virtualenvvirtualenv 的关系的关系.96 二、二、AnacondaAnaco
7、nda 的适用平台及安装条件的适用平台及安装条件.96 1.1.适用平台适用平台.96 2.2.安装条件安装条件.97 三、三、AnacondaAnaconda 的安装步骤的安装步骤.97 1.macOS1.macOS 系统安装系统安装 AnacondaAnaconda.97 图形界面安装图形界面安装.97 命令行安装命令行安装.99 2.Windows2.Windows 系统安装系统安装 AnacondaAnaconda.101 3.Linux3.Linux 系统安装系统安装 AnacondaAnaconda.103 四、管理四、管理 condaconda.104 0.0.写在前面写在前面.
8、104 1.1.验证验证 condaconda 已被安装已被安装.105 2.2.更新更新 condaconda 至最新版本至最新版本.105 3.3.查看查看 condaconda 帮助信息帮助信息.105 4.4.卸载卸载 condaconda.105 Linux Linux 或或 macOSmacOS.105 WindowsWindows.105 五、管理环境五、管理环境.106 0.0.写在前面写在前面.106 1.1.创建新环境创建新环境.106 2.2.切换环境切换环境.106 Linux Linux 或或 macOSmacOS.106 W Windowsindows.106 提示
9、提示.106 3.3.退出环境至退出环境至 rootroot.107 Linux Linux 或或 macOSmacOS.107 WindowsWindows.107 提示提示.107 4.4.显示已创建环境显示已创建环境.107 5.5.复制环境复制环境.107 6.6.删除环境删除环境.108 六、管理包六、管理包.108 1.1.查找可供安装的包版本查找可供安装的包版本.108 精确查找精确查找.108 模糊查找模糊查找.108 2.2.获取当前环境中已安装的包信息获取当前环境中已安装的包信息.108 3.3.安装包安装包.108 在指定环境中安装包在指定环境中安装包.108 在当前环境
10、中安装包在当前环境中安装包.109 使用使用 pippip 安装包安装包.109 从从 Anaconda.orgAnaconda.org 安装包安装包.109 4.4.卸载包卸载包.111 卸载指定环境中的包卸载指定环境中的包.111 卸载当前环境中的包卸载当前环境中的包.111 5.5.更新包更新包.111 更新所有包更新所有包.111 更新指定包更新指定包.112 七、参考资料七、参考资料.112 1 实验实验一一 图像图像处处理理基本操作基本操作 一实验目的实验目的 (1)了解 Python 语言(2)了解 Anaconda 平台使用(3)掌握基本图像处理操作 二实验设备与软件实验设备与
11、软件 PC 机一台,Anaconda 平台 三实验内容实验内容 利用 Python 语言编程实验简单图像基本操作。四实验原理实验原理 要使用 python 进行各种开发,就必须安装对应的库。这和 matlab 非常相似,只是 matlab里面叫工具箱(toolbox),而 python 里面叫库或包。安装这些库,一般都是使用 pip 来安装。使用 python 进行数字图片处理,还得安装 Pillow 包。虽然 python 里面自带一个 PIL(python images library),但这个库现在已经停止更新了,所以使用 Pillow,它是由 PIL 发展而来的。pip install
12、 Pillow 一、图片的打开与显示一、图片的打开与显示 from PIL import Image img=Image.open(d:/dog.png)img.show()虽然使用的是 Pillow,但它是由 PIL fork 而来,因此还是要从 PIL 中进行 import.使用open()函数来打开图片,使用 show()函数来显示图片。这种图片显示方式是调用操作系统自带的图片浏览器来打开图片,有些时候这种方式不太方便,因此我们也可以使用另一种方式,让程序来绘制图片。from PIL import Image import matplotlib.pyplot as plt img=Ima
13、ge.open(d:/dog.png)plt.figure(dog)plt.imshow(img)plt.show()这种方法虽然复杂了些,但推荐使用这种方法,它使用一个 matplotlib 的库来绘制图片进行显示。matplotlib 是一个专业绘图的库,相当于 matlab 中的 plot,可以设置多个 figure,设置 figure 的标题,甚至可以使用 subplot 在一个 figure 中显示多张图片。matplotlib 可以直接安装。pip install matplotlib 2 figure 默认是带 axis 的,如果没有需要,我们可以关掉 plt.axis(off)
14、打开图片后,可以使用一些属性来查看图片信息,如 print(img.size)#图片的尺寸 print(img.mode)#图片的模式 print(img.format)#图片的格式 显示结果为:(558,450)RGBA PNG 二、图片的保存二、图片的保存 img.save(d:/dog.jpg)就一行代码,非常简单。这行代码不仅能保存图片,还是转换格式,如本例中,就由原来的 png 图片保存为了 jpg 图片。在进行图像显示时,需要依次打开多张图片,也就是上一张关闭,下一张打开的这种顺序操作,此时需要将交互操作模式打开 plt.ion():import matplotlib.pyplot
15、 as plt plt.ion()#绘图或者从磁盘读取图像并进行图像处理操作#图像显示 plt.imshow(image)#保存图像 savefig(savename)#暂停一秒钟 plt.pause(1)#关闭当前显示的图像 plt.close()三三、图像通道、图像通道 1、彩色图像转灰度图、彩色图像转灰度图 3 from PIL import Image import matplotlib.pyplot as plt img=Image.open(d:/ex.jpg)gray=img.convert(L)plt.figure(beauty)plt.imshow(gray,cmap=gra
16、y)plt.axis(off)plt.show()使用函数 convert()来进行转换,它是图像实例对象的一个方法,接受一个 mode 参数,用以指定一种色彩模式,mode 的取值可以是如下几种:1(1-bit pixels,black and white,stored with one pixel per byte)L(8-bit pixels,black and white)P(8-bit pixels,mapped to any other mode using a colour palette)RGB(3x8-bit pixels,true colour)RGBA(4x8-bit p
17、ixels,true colour with transparency mask)CMYK(4x8-bit pixels,colour separation)YCbCr(3x8-bit pixels,colour video format)I(32-bit signed integer pixels)F(32-bit floating point pixels)2、通道分离与合并、通道分离与合并 from PIL import Image import matplotlib.pyplot as plt img=Image.open(d:/ex.jpg)#打开图像 gray=img.conver
18、t(L)#转换成灰度 r,g,b=img.split()#分离三通道 pic=Image.merge(RGB,(r,g,b)#合并三通道 plt.figure(beauty)plt.subplot(2,3,1),plt.title(origin)plt.imshow(img),plt.axis(off)plt.subplot(2,3,2),plt.title(gray)plt.imshow(gray,cmap=gray),plt.axis(off)plt.subplot(2,3,3),plt.title(merge)plt.imshow(pic),plt.axis(off)4 plt.subp
19、lot(2,3,4),plt.title(r)plt.imshow(r,cmap=gray),plt.axis(off)plt.subplot(2,3,5),plt.title(g)plt.imshow(g,cmap=gray),plt.axis(off)plt.subplot(2,3,6),plt.title(b)plt.imshow(b,cmap=gray),plt.axis(off)plt.show()四四、裁剪图片、裁剪图片 从原图片中裁剪感兴趣区域(roi),裁剪区域由 4-tuple 决定,该 tuple 中信息为(left,upper,right,lower)。Pillow 左边
20、系统的原点(0,0)为图片的左上角。坐标中的数字单位为像素点。from PIL import Image import matplotlib.pyplot as plt img=Image.open(d:/ex.jpg)#打开图像 plt.figure(beauty)plt.subplot(1,2,1),plt.title(origin)plt.imshow(img),plt.axis(off)box=(80,100,260,300)roi=img.crop(box)plt.subplot(1,2,2),plt.title(roi)plt.imshow(roi),plt.axis(off)pl
21、t.show()5 用 plot 绘制显示出图片后,将鼠标移动到图片上,会在右下角出现当前点的坐标,以及像素值。五五、几何变换、几何变换 Image 类有 resize()、rotate()和 transpose()方法进行几何变换。1、图像的缩放和旋转、图像的缩放和旋转 dst=img.resize(128,128)dst=img.rotate(45)#顺时针角度表示 2、转换图像、转换图像 dst=im.transpose(Image.FLIP_LEFT_RIGHT)#左右互换 dst=im.transpose(Image.FLIP_TOP_BOTTOM)#上下互换 dst=im.tran
22、spose(Image.ROTATE_90)#顺时针旋转 dst=im.transpose(Image.ROTATE_180)dst=im.transpose(Image.ROTATE_270)transpose()和 rotate()没有性能差别。6 实验实验二二 图像中的像素访问图像中的像素访问与与图像直方图图像直方图 一实验目的实验目的 (1)了解 Python 语言(2)了解 Anaconda 平台使用(3)掌握基本图像处理基本操作 二实验设备与软件实验设备与软件 PC 机一台,Anaconda 平台。三实验内容实验内容 利用 Python 语言编程实验图像中的像素访问,利用 Pyth
23、on 语言实验图像直方图绘制。四实验原理实验原理 利用 Image.open()来打开一幅图像,然后直接对这个 PIL 对象进行操作。如果只是简单的操作还可以,但是如果操作稍微复杂一些,就比较吃力了。因此,通常我们加载完图片后,都是把图片转换成矩阵来进行更加复杂的操作。python 中利用 numpy 库和 scipy 库来进行各种数据操作和科学计算。我们可以通过 pip来直接安装这两个库 pip install numpy pip install scipy 以后,只要是在 python 中进行数字图像处理,我们都需要导入这些包:from PIL import Image import nu
24、mpy as np import matplotlib.pyplot as plt 打开图像并转化为矩阵,并显示:from PIL import Image import numpy as np import matplotlib.pyplot as plt img=np.array(Image.open(d:/lena.jpg)#打开图像并转化为数字矩阵 plt.figure(Lena)plt.imshow(img)plt.axis(off)plt.show()调用 numpy 中的 array()函数就可以将 PIL 对象转换为数组对象。查看图片信息,可用如下的方法:print img.s
25、hape print img.dtype print img.size print type(img)如果是 RGB 图片,那么转换为 array 之后,就变成了一个 rows*cols*channels 的三维矩阵,因此,我们可以使用 imgi,j,k 来访问像素值。例 1:打开图片,并随机添加一些椒盐噪声 7 from PIL import Image import numpy as np import matplotlib.pyplot as plt img=np.array(Image.open(d:/ex.jpg)#随机生成 5000 个椒盐 rows,cols,dims=img.s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字图像处理概述 1 数字图像 处理 概述
限制150内