Python中的图像处理 (16)

图 1-13:使用 ROF 模型对合成图像去噪:(a)为原始噪声图像;(b)为经过高斯模糊的图像(σ=10);(c)为经过 ROF 模型去噪后的图像

下面看一下在实际图像中使用 ROF 模型去噪的效果:

from PIL import Image from pylab import * import rof im = array(Image.open(\'empire.jpg\').convert(\'L\')) U,T = rof.denoise(im,im) figure() gray() imshow(U) axis(\'equal\') axis(\'off\') show()

经过 ROF 去噪后的图像如图 1-14c 所示。为了方便比较,该图中同样显示了模糊后的图像。可以看到,ROF 去噪后的图像保留了边缘和图像的结构信息,同时模糊了“噪声”。

Python中的图像处理

图 1-14:使用 ROF 模型对灰度图像去噪:(a)为原始噪声图像;(b)为经过高斯模糊的图像(σ=5);(c)为经过 ROF 模型去噪后的图像

练习

如图 1-9 所示,将一幅图像进行高斯模糊处理。随着 σ 的增加,绘制出图像轮廓。在你绘制出的图中,图像的轮廓有何变化?你能解释为什么会发生这些变化吗?

通过将图像模糊化,然后从原始图像中减去模糊图像,来实现反锐化图像掩模操作()。反锐化图像掩模操作可以实现图像锐化效果。试在彩色和灰度图像上使用反锐化图像掩模操作,观察该操作的效果。

除了直方图均衡化,商图像是另一种图像归一化的方法。商图像可以通过除以模糊后的图像 I/(IGσ) 获得。尝试使用该方法,并使用一些样本图像进行验证。

使用图像梯度,编写一个在图像中获得简单物体(例如,白色背景中的正方形)轮廓的函数。

使用梯度方向和大小检测图像中的线段。估计线段的长度以及线段的参数,并在原始图像中重新绘制该线段。

使用 label() 函数处理二值化图像,并使用直方图和标签图像绘制图像中物体的大小分布。

使用形态学操作处理阈值化图像。在发现一些参数能够产生好的结果后,使用 morphology 模块里面的 center_of_mass() 函数寻找每个物体的中心坐标,将其在图像中绘制出来。

代码示例约定

从第 2 章起,我们假定 PIL、NumPy 和 Matplotlib 都包括在你所创建的每个文件和每个代码例子的开头:

from PIL import Image from numpy import * from pylab import *

这种约定使得示例代码更清晰,同时也便于读者理解。除此之外,我们使用 SciPy 模块时,将会在代码示例中显式声明。

一些纯化论者会反对这种将全体模块导入的方式,坚持如下使用方式:

import numpy as np import matplotlib.pyplot as plt

这种方式能够保持命名空间(知道每个函数从哪儿来)。因为我们不需要 PyLab 中的 NumPy 部分,所以该例子只从Matplotlib 中导入 pyplot 部分。纯化论者和经验丰富的程序员们知道这些区别,他们能够选择自己喜欢的方式。但是,为了使本书的内容和例子更容易被读者接受,我们不打算这样做。

请读者注意。

更多IT系统运维、大数据实战、项目管理、商务英语及应用知识,扫描下方二维码关注公众号了解更多!!!

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgwdgy.html