这个系列是针对数学图像处理课程的实验以及大作业写的手册。原始代码已上传至github。四次实验的内容分别为:
Lab1: 图像增强的空域方法
Lab2: 图像增强的频域方法
Lab3: 图像压缩编码实现
Lab4(大作业): 美颜算法原理及其实现
实验内容(Lab1)
- 读入一副彩色图像(非卡通), 大小为256*256, 观察它的每个点象素;将该彩色图像变成灰度图像; 将该图像的直方图画出来, 要求自己编写函数绘制直方图的函数。
- 自己编写函数,进行直方图均衡化,并显示均衡化后的图像。
- 将该彩色图像使用 imnoise 函数加入各种噪声,显示图像;或者读入一副低
质量被噪声污染的图像。 - 分别使用 conv2 函数、fspecial 函数和 imfilter 函数,对受噪声污染的图像进行均值滤波和中值滤波、高斯滤波。要求设置不同大小的均值滤波模板,改变权值,测试试验结果。中值滤波要求能设置不同的滤波窗口大小,显示结果。请尽量使用矩阵的整体运算,来代替循环计算。
- 读入另外一副图像,对其采取不同的 roberts/laplace/sobel/priwitt 边缘锐化算子进行边缘增强和锐化,并显示不同算子的计算结果。对原始图像加入噪声,观察锐化后的效果。要求:请尽量避免循环运算,而使用矩阵整体运算。
- 结合试验结果,对不同图像空域增强方法进行分析和比较,写出你的实验体会。
- 对锐化算子的处理结果中,如果计算得到小于零的值,对小于 0 的部分,采用不同的方法标准化到[0,255]时,图像的显示效果有什么不同?为什么?
实验原理
这个实验没什么好讲的,实验内容比较简单,也比较繁杂,更多细节请看代码注释。
T6
- 均值滤波和高斯滤波:这两种方法都是线性滤波器,主要用于减少图像中的噪声。均值滤波器简单易用,但可能会使图像变得模糊。高斯滤波器可以更好地保留图像的细节,但计算复杂度较高。
- 中值滤波:中值滤波是一种非线性滤波器,特别适合于去除椒盐噪声。它可以保留图像的边缘信息,但可能会导致图像的纹理信息丢失。
- Sobel、Laplace、Prewitt和Roberts边缘检测:这些方法都是用于图像的边缘检测和锐化。Sobel和Prewitt操作符可以更好地保留边缘信息,但对噪声敏感。Laplace操作符可以检测所有方向的边缘,但可能会导致边缘变得较薄。Roberts操作符简单易用,但可能会错过一些细微的边缘信息。
总的来说,如果图像中存在大量的高斯噪声,应该选择使用高斯滤波器。如果需要检测图像的边缘,则应该选择使用Sobel或Laplace操作符。
T7
在图像处理中,像素值通常被标准化或缩放到[0,255]的范围。当我们应用锐化算子后,有可能得到小于0的值。对于这些小于0的值,我们需要进行处理以便能在[0,255]的范围内表示。以下是两种常用的处理方法:
- 截断处理:这种方法将所有小于0的值设为0。这是最直接的方法,但可能会导致一些信息丢失,因为所有小于0的值都变成了同样的值(即0)。
- 缩放处理:这种方法将所有的值(包括大于0的值)线性缩放到[0,255]的范围。这种方法可以保留更多的信息,因为它保持了原始数据中的相对差异。但这种方法可能会使图像看起来较暗,因为所有的值都被缩小了。
这两种方法会导致不同的显示效果。截断处理可能会导致图像在某些地方看起来有”断裂”,因为所有小于0的值都变成了0,可能会造成边缘信息的丢失。而缩放处理则能保留更多的边缘信息,但可能会使整个图像看起来较暗。