《数字图像处理》第一次作业 :MATLAB 函数功能与数学原理
matlab 数字图像处理************************************************************************
> File Name: 《数字图像处理》第一次作业 :MATLAB 函数功能与数学原理
> Author: 罗天涵
> Student-Id: 16121141
> Mail: luotianhan@126.com
************************************************************************
一. 搜集图像处理及其相关网站
二. 体验 google map
我在googlemap上找了找上大和喜马拉雅山的地图。在此附上几个截图
上海大学[]
喜马拉雅山[]
三.熟悉Matlab图像处理工具包
除了一般我们使用的工具外,还有一些别的内容。包括了绘图和应用程序
比如在绘图页面,我们可以产生出各种各样的图片。【a 为 长度为 100 的数组】
另外还支持了其他的图片,比如极坐标
应用程序页面有很多的应用程序,但是我还不是很用的来。随便挑选了一个,输入坐标系。看上去是生成3D模型的。
四.imadjust
函数用法
函数 imadjust 是用于灰度级图像进行灰度变黄。该函数的一般格式如下所示
G=IMADJUST(I,[LOW_IN;HIGH_IN],[LOW_OUT;HIGH_OUT],GAMMA)
该函数的功能是将图像f中灰度值映射为图像g找那个的新值。也就是将 [LOW_IN; HIGH_IN] 映射到 [LOW_OUT; HIGH_OUT] 之间,不在 in 区间的值则被去除。
参数分析
图像矩阵I要求数据类型uint8、uint16、double、single和int16
[LOW_IN; HIGH_IN]要求要求范围都要在[0 1]区间
[LOW_OUT; HIGH_OUT]要求要求范围都要在[0 1]区间
GAMMA正整数
用于指定从图像f的灰度值映射生成图像g的曲线形状。如下图所示
运算分析
对于上述图像,我们可以用一个表达式来概括,如下所示:
那么,曲线(A,C)->(B,D)可以用这个公式概括: 利用两点可求
其中
之后,对所有图像的像素点 进行上述变换,令
最终,矩阵 B 就是 新图G的矩阵
五. imfilter
函数用法
对任意类型数组或多维图像进行滤波(线性)。其函数定义如下:
g=imfilter(f,w,filtering_mode,boundary_options,size_options)
其中,f为输入图像,w为滤波掩模,g为滤波后图像。filtering_mode用于指定在滤波过程中是使用“相关”还是“卷积”。boundary_options用于处理边界充零问题,边界的大小由滤波器的大小确定
参数分析选项
描述
w
滤波掩模
filtering_mode
‘corr’
通过使用相关来完成,该值为默认。
‘conv’
通过使用卷积来完成
boundary_options
‘X’
输入图像的边界通过用值X(无引号)来填充扩展 其默认值为0
‘replicate’
图像大小通过复制外边界的值来扩展
‘symmetric’
图像大小通过镜像反射其边界来扩展
‘circular’
图像大小通过将图像看成是一个二维周期函数的一个周期来扩展
size_options
‘full’
输出图像的大小与被扩展图像的大小相同
‘same’
输出图像的大小与输入图像的大小相同。这可通过将滤波掩模的中心点的偏移限制到原图像中包含的点来实现,该值为默认值。
运算分析
关于滤波的计算方式,我觉得书上的内容不是很直观,用了网上的几个样例来帮助自己自己理解
一维相关空间滤波
一维卷积空间滤波
二维相关空间滤波从一维扩展过去,比如说这里的25 (中心点),是通过
得到的
-->
二维卷积空间滤波,和一维的相似,在此不多做提及,由此可见w 是相关算子,可以通过 fscpecial 来生成
filtering_mode控制是相关还是卷积
boundary_options控制对边缘的填充
size_options控制输出属性
以下是 matlab 的验证程序
f=
00100
00100
11111
00100
00100
w=
123
456
789
>>gd=imfilter(f,w)
>>gd=imfilter(f,w,'full')
gd=
0098700
0015131100
917333129157
61127252394
3521191731
0097500
0032100
六. fspecial
函数用法
fspecial函数用于建立预定义的滤波算子,其语法格式为:
h=fspecial(type)
h=fspecial(type,para)
其中type指定算子的类型,para指定相应的参数;
参数分析type= 'average' 大小为r *c 的矩形滤波器
type= 'disk' 半径为 r 的圆形平均滤波器,包含在 2r + 1 大小的正方形内。默认半径为 5
type= 'gaussian',为高斯低通滤波器,参数有两个,n表示模版尺寸,默认值为[3,3],sigma表示滤波器的标准差,单位为像素,默认值为0.5。
type= 'laplacian',为拉普拉斯算子,参数为alpha,用于控制拉普拉斯算子的形状,取值范围为[0,1],默认值为0.2。
type= 'log',为拉普拉斯高斯算子,参数有两个,n表示模版尺寸,默认值为[3,3],sigma为滤波器的标准差,单位为像素,默认值为0.5
type= 'motion' 输出一个滤波器来近似计算len各像素的线性运动,类似于相机与景物的关系,运动方向为theta,单位为°。水平方向参考逆时针运动,默认值为9和0,表示水平方向9个像素的运动
type= 'prewitt',为prewitt算子,用于边缘增强,无参数。
type= 'sobel',为著名的sobel算子,用于边缘提取,无参数。
type= 'unsharp',为对比度增强滤波器,参数alpha用于控制滤波器的形状,范围为[0,1],默认值为0.2。
运算分析这里就分析一个拉普拉斯滤波器
拉普拉斯滤波器
拉普拉斯算子是n维欧式空间的一个二阶微分算子。它定义为两个梯度向量算子的内积。拉普拉斯滤波器可以有效的鉴别出图像的边缘
利用差分的方法。可以推出拉普拉斯算子在二维离散平面上的公式为
也就是书上的
另外,这个函数是近似的。如果把 差分误差 考虑进去(实际上我不知道它是如何算出来的),最终可以得到一个更为通用的拉普拉斯模板,也就是matlab中的 fscpecial('laplacian',alpha)其公式如下所示: