1.基本概念
1. 图像的定义
- 图像:一幅图像是一个东西的另一种表示,是其所表示物体信息的一个浓缩和高度概括。
2. 图像分类
1. 模拟图像:连续变化的函数
2. 数字图像:离散的矩阵表示
数字图像的定义:
数字图像是指由被称为像素的小区域组成的二维矩阵。
数字图像类型:
二值图像:只有0、1 (黑、白)
彩色(索引)图像:两个矩阵,一个就是灰度图像的矩阵,另外一个是颜色映像表矩阵对应使用。
GRB彩色图像:每个像素由 RGB 组成。这是九个像素点,每个像素点有2^24中可能,所以也叫做24位真彩。
2. 图像概念
图像质量
- 灰度级:表示图像的明暗程度(例如:像素的取值范围为0-255,就称该图像为256个灰度级的图像)
- 量化级别:表示图像实际拥有的灰度级的数量(例如:具有32种不同取值的图像,可称该图像具有32个量化级别)图像数据的实际量化级别越多,视觉效果就越好,主要就是看起来过度很平滑,没有断层。
数字图像处理概念:对数字图像信息进行加工(处理)和分析,以满足人的视觉、心理需要;或者实际应用或某种目的(如机器识别)的要求。
图像质量参数
- 分辨率:分辨率就是图像的 水平方向的像素点数*垂直方向的像素点数
- 图像深度:一个像素点的颜色灰度所占用的二进制位的个数,如 RGB 是 256 * 256 * 256 也就是 2^24 称为 24 位真彩色。
- 图像数据量:图片占的磁盘空间。
数字图像处理系统:
- 采集:对某个电磁波的能量段,或者数码相机扫描仪等等
- 处理分析:可以采用软件完成也可使用硬件完成
- 通讯/存储:光盘,SD/计算机网络
- 显示:显示器,胶片等等
图像的数字化过程:
- 扫描:对图像进行遍历
- 采样:对于连续的图像编变成离散点的操作
- 量化:将采样得到的灰度值转换为离散的整数值
3. 影响清晰度的因素包括
- 亮度
- 对比度
- 尺寸大小
- 细微层次
- 颜色饱和度
4. 图像处理的层次:
- 图像处理:对图像进行处理加工以改。善视觉效果。他是一个图像到图像的过程。(比如:图像增强)
- 图像分析:以感兴趣的部分进行提取分隔和测量。他是一个图像到数据的过程。(比如:图像分割)
- 图像理解:分析的基础上做含义的理解。(比如:虹膜识别,人体识别)
2. Matlab 基础
1.主要窗口
- 命令窗口
- 命令历史窗口
- 工作空间窗口
- 当前路径窗口
2.常用命令
- whos 图像信息
- size 图像大小
- imshow(i,[low,high]) 高于 high 为白色,低于 low 为黑色,两者之间的进行比例拉伸
- figure;创建一个新的窗口,可以在不同窗口显示图像。
- Subplot(m,n,p)含义为:打开一个有m行n列图像位置的窗口,并将焦点位于第p个位置上。
- mat2gray(f,min,max) :介于min和max的数据归一化处理, 其余小于min的元素都变为0, 大于max的元素都变为1
- im2bw(I,T):亮度值<T的像素点全部转换为二值图像中值为0的像素点;亮度值>T的像素点全部转换为二值图像中值为1的像素点。
- rgb2gray(f):彩色图像转换为灰度图像
- 数组:
- a=1:10 表示创建一个 1-10 的一个行向量
- a=[1,2,3 ; 2,3,4] 创建一个二维的数组,用 ; 分隔
- 数组的索引是从 1 开始的
- a(1:5) 表示取 1-5 这5个索引处的数
- 多维数组用 a(2,3) 索引,表示 2 行 3 列的元素值
- 只有一个冒号表示选择所有的行或者列 如 a(:,2) 表示选择第2列的所有元素
- 如果直接是 a(:) 则是表示把所有的列拼接成一列然后显示
- zeros(n,m):n*m大小的 double 0 矩阵
- ones:同上 1 矩阵
- 向量化循环
3.图像增强
1.图像增强:
图像增强是指对图像进行加工处理,以得到更好的视觉效果和对机器感知来说更好的图像。
- 空域处理
- 亮度变换
- 空间滤波
- 频域处理
2.亮度变换
imadjust(f,[l_in,h_in],[l_out,h_out])
- <= l_in 映射值为 l_out
- >=h_in 映射值为 h_out
- 处于两者之间的按比例映射到 l_out 与 h_out 之间 就很像 imshow 函数
3. 灰度直方图
1.直方图基础
- 定义:图像中灰度级分布的统计,反映的是一幅图像中各灰度级像素出现的频率。
- 性质:如果一幅图像由两个不连续的区域组成,并且每个区域的直方图已知,则整幅图像的直方图是这两个区域的直方图之和。
- 核心函数:imhist(f,b) 对 f 这个图像分割成 b 个灰度级别进行统计
2. 直方图均衡化
通过对原始图像的灰度进行非线性的变化,使其直方图能够均匀的分布以增加灰度值的动态范围从而达到增强图像的整体的对比度。
图像均衡化处理后,图像的直方图是均匀分布的,即各灰度级具有相同的出现频数
均衡化的具体步骤
均衡化的内置函数:histeq(f,b) 这个 b 就是均衡化的灰度级数,默认值是 64 一般我们手动赋值为 256
3.直方图规定化
就是通过一个灰度映像函数,将原灰度直方图改造成所希望的直方图。
histeq(f,[]) 就是对 f 进行规定化让他近似的形成后面的那个行向量的结果。
4.空间滤波
空间滤波就是使用空间模板进行图像处理,模板本身称为空间滤波器。
分类
按照处理的效果分类:分为平滑滤波器和锐化滤波器
按照处理的方式分类:分为线性滤波(均值滤波高斯滤波,也就是原始数据和滤波结果是一中算术运算关系)和非线性滤波(采用一种逻辑关系进行滤波操作,最大值、最小值、中值滤波)。总的来说当邻域中像素的运算为线性运算时,就称为线性滤波,否则称为非线性滤波。
1.线性滤波
基本概念
- 卷积:是指掩膜w在图像f中移动前,先将w 旋转180º。
- 相关:模板w在图像上移动的过程。首先需要对齐然后进行零填充,对齐的过程就是把模板的最右下角和图像的左上角对齐,然后漏出来的部分就用零来填充。
- 卷积:模板 w 在图像上移动过程,移动之前是先把 w 旋转180 度。同上。
- 上面的两个操作都有一个full 和 same 的说法,其中 full 就是保持以前的零填充不变,然后 same 则是结果去掉以前的零填充。
空间滤波函数
- imfilter(f , w , ‘corr/conv’ , ‘replicate ‘ ,’same/full’ ) 手动线性滤波函数
- w = fspecial(‘average/gaussian/log/laplacian’,parameters[一般给0就行了]) 生成线性滤波器的工具箱函数
- 最后我们使用 imfilter 的执行结果是需要去除的东西,而非是我们滤波完成后的结果,也就是我们需要用原图像减去 imfilter 的结果,才是我们最后的滤波结果。这里需要注意的就是我们原图像需要转化成double 的。也就是 im2double(f)-imfilter(f,w,’corr’,’replicate’,’same’) 才是最终的结果。
2.非线性滤波
- 二维中值滤波:medfilt2(f,[n m],’zero/indexed’) 第二个参数指明的是邻域的范围。中值滤波对椒盐噪声的过滤效果非常好。
4. 频域滤波
1. 基本步骤:
- 使用paddedsize获取填充参数
- 获得傅立叶变换
- 生成滤波函数
- 与滤波函数相乘进行变换
- 获取变换结果的实部
- 将左上角的居心修剪为原始大小
代码:
1 | f=imread('path'); |
2. 频域滤波器和空域滤波器的比较
- 如果两个域中滤波器尺寸相同,那么通常频域中进行滤波计算更为有效,更为直观,但空域中更适用更小尺寸的滤波器,更为高效。
3. 低通滤波器
从名字就可以听出来就是允许低频的成分过去而去掉高频的成分。低频成分其实就是我们的频域图的中心的白色部分。这些低频成分保留了我们的色彩等信息,也就是如果我们只有一点点低频成分的话却掉所有的高频成分我们看到的是一堆模糊的颜色没有任何的细节。
![屏幕快照 2018-06-30 18.00.53](/Users/lwen/Pictures/screenshot/屏幕快照 2018-06-30 18.00.53.png)
振铃现象:就是图像出现加边现象。
- 理想的低通滤波器:就是他的效果不理想,会出现振铃现象。
- 巴特沃斯低通滤波器:对于2阶的这一类的低通的巴特沃斯低通滤波器是不会出现振铃现象的,但是如果随着阶数增加就会出现明显的振铃现象。
- 高斯低通滤波器:这种能够完成没有振铃现象的滤波效果,但是他的平滑效果要比巴特沃斯差一些。
- 以上三种滤波器他们的滤波效果从好到差,但是振铃现象就是从无到有。
4. 高通滤波器
- 高通滤波器就是滤掉高频的成分,保留低频的,也就是会失去色彩但是保留细节,那么出来的效果其实就是锐化图像。
- 同样的我们的高频滤波器经典的还是以上三种,因为我们的高通滤波器和低通滤波器不同点就是他们用1减去后就另外一个。然后他们的滤波效果也是同上,依次递减但是振铃现象也是一次递减。越是后面的越能够凸显出图像的细节,对于细小的物体就越清晰。
4. 图像分割
1.概念:
图像分割就是把图像分割成各具特征的区域,并提取感兴趣的目标的技术。
2.方法
- 基于边缘检测的方式:找出图像的边缘,检测出图像边缘的不连续性,再将它们连成边界,这些边界把图像分成不同的区域,从而分出各个区域。
- 基于阈值的方式:根据实现提供的阈值进行对图像中不同的对象进行分类提取需要的部分。
3.检测方法
1.点检测
使用 imfilter 来检测孤立点。具体的代码可以为 g=abs(imfilter(double(f),w))>T
也就是获取这样的点就是我们需要的点。我们的T值一般可以选择 max(g)
2. 线检测
也就是和上面的点检测一模一样只是我们的模板不同而已,然后我们只需要在里面找到最大的点然后依据他来进行划分就好了。例如下面一份完整的代码:
1 | f=imread('path'); |
3.边缘检测
边缘检测的方法有两大类:
- 一阶导数:梯度算子
- 二阶导数:拉普拉斯算子,拉普拉斯算子一般不做真正的边缘检测只是做辅助角色。
edge函数:
- 格式:edge(f,’Sobel/Roberts/Prewitt/Canny’,parameters)
一阶算子比较:
- Sobel 抗干扰能力强,但是检测出来的边缘很宽
- Prewitt 既能够抗干扰也能够有合适的边缘的宽度。
- Roberts 抗干扰能力不强,但是边缘窄
4.阈值分割
迭代法:就是先取 (max+min)/2 分成两部分,然后每一部分的图像平均值为 g1 和 g2 那么就可以算出下一个阈值为 (g1+g2)/2 重复上面的操作然后一直到达某一个特定的阈值之后才停止。这个过程可以手动编码一可以使用工具箱中的自带的函数
T=graythresh(f)
otsu()
函数计算阈值。
5.形态学处理
1.膨胀
腐蚀就是将一个模板进行原点的反转,然后和图形中的每一个像素进行移动,将模板与他交集不为空的位置设置为1。主要使用的函数就是 imdilate(f,w)
作用就是:使图像加粗变大,桥接裂缝。
2.腐蚀
腐蚀同上的操作只是只是在模板完全被包裹的时候这个模板的中心才是 1 ,其余位置都为 0。和他相关的函数就是imerode(f,w)
同样的他的作用就是使图像变小变细,消除边界点,消除联通,消除凸起,平滑图像。
3.开运算
开运算:使图像的轮廓变得光滑,断开狭窄的间断和消除细的突出物。 imopen(f,w)
先对A进行B腐蚀然后再进行B膨胀,因为主导地位的是腐蚀操作,所以基本他对外表示的特征就是腐蚀的特征。
4.闭运算
闭运算也能够平滑图像,它与开运算不同的就是它能够连接细长的鸿沟,填补裂痕。imclose(f,w)
他的操作也就是先进行膨胀操作然后进行腐蚀操作。
5.击中击不中变换
这个操作就是一个图像一个模板,第一次进行的是原图像和原模板进行击中变换操作其实就是类似于腐蚀操作,然后就是进行原图像的补与原模板的补的腐蚀操作,最后两次操作的结果进行与运算。
6.顶帽变换
其实这个变换就是原图像减去开运算的结果。也有对应的函数就是
1 | se=strel('disk',10); |
6.图像复原
1.基本概念
- 图像退化:图像退化指的就是由于成像系统的各种因素使得图像的成像质量变低
- 图像复原的目的:就是尽可能的消除图像在获取及传输过程中造成的图像的品质下降的即退化现象退服图像本来的面目。
- 图像增强:旨在改善图像质量。提高图像的可懂度。更偏向主观判断,即要突出所关心的信息,满足人的视觉系统,具有好的视觉结果。
- 图像复原:根据图像畸变或退化的原因,进行模型化处理,将质量退化的图像重建或恢复到原始图像,即恢复退化图像的本来面目,忠实于原图像。因此必须根据一定的图像退化模型来进行图像复原。
- 噪声模型:加型噪声,乘型噪声
- 几种常见的噪声:
- 高斯噪声:每一点都有噪声,但是噪声的幅值是随机的。
- 椒盐噪声:噪声的位置是随机的,但是噪声的幅值是基本相同。
- 图像复原:
- 如果是我们的图像的退化仅仅是由噪声引起的那么我们就应该使用空间滤波,至于线性和非线性都是可以的,如线性的就是 imfilter 还有非线性的 medfilt 、ordfilt
- 利用频域处理消除周期性噪声。
7.图像压缩
1.图像数据冗余:
- 编码冗余:编码冗余就是但我们的灰度级编码多余实际需要的编码的时候就会出现编码冗余。
- 像素间的冗余:单个像素携带的信息较少,单个像素的贡献是多余的。
- 心理视觉冗余:不重要的视觉信息称为心理视觉冗余。
- 图像压缩系统的基本结构
- 映射转换器:把输入图像转换成冗余度比较小的数据格式,便于压缩、
- 量化器:产生用于表示被压缩图像的有限数量的符号集合
- 符号编码器:对每一个符号分配一个码字或者二进制比特流。
- 符号解码器
- 反映射转换器
8. 试卷
- 图像工程的三个层次:图像处理、图像分析、图像理解
- 低频是细节、高频是轮廓、噪声一般也是高频的。
- 细节性的图像的空间分辨率精细幅度分辨率粗糙,而那种合照这是刚好相反。
- 当图像进行缩小变化的时候傅里叶图像是被延展的。
- K——L 变化成为最佳变换
- WHT 计算最简单但是效果最差
- DFT 回复图像有振铃现象
- 中值滤波器是在消除噪声的同时保护边缘信息。
- 三个小概念
- 亮度:指的是画面的明暗度,
- 对比度:画面的黑与白的渐变层次,比值越大就说明层次越多图像越清晰,色彩明晰靓丽。
- 饱和度:指的是颜色的纯度
- 图像分割的方法:
- 基于区域生长的
- 边缘检测
- 基于阈值的方法
- 拉普拉斯算子为二阶差分,其方向信息丢失,常产生双像素,对噪声有双倍加强作用,因此它很少直接用于边缘检测