Matlab-形态学运算
形态学是基于形状处理图像的一组广泛的图像处理运算。在形态学运算中,图像中的每个像素都基于其邻域中其他像素的值进行调整。通过选择邻域的大小和形状,可以构造对输入图像中的特定形状敏感的形态学运算。
创建形态学结构元素 strel()
SE = strel(nhood) 创建一个具有指定邻域 nhood 的平面结构元素。
SE = strel('diamond', r) 创建一个菱形结构元素,其中 r 指定从结构元素原点到菱形各点的距离。
SE = strel('disk', r, n) 创建一个盘形结构元素,其中 r 指定半径,n 指定用于逼近盘形的线条结构元素的数量。
SE = strel('octagon', r) 创建一个八边形结构元素,其中 r 指定从结构元素原点到八边形边的距离,沿水平和垂直轴测量。r 必须为 3 的非负倍数。
SE = strel('line', len, deg) 创建一个关于邻域中心对称的线性结构元素,长度约为 len,角度约为 deg。
SE = strel('rectangle', [m n]) 创建一个大小为 [m n] 的矩形结构元素。
SE = strel('square', w) 创建一个宽度为 w 个像素的正方形结构元素。
SE = strel('cube', w) 创建一个宽度为 w 个像素的三维立方体结构元素。
SE = strel('cuboid', [m n p]) 创建一个大小为 [m n p] 的三维立方体结构元素。
SE = strel('sphere', r) 创建一个半径为 r 个像素的三维球面结构元素。
腐蚀运算 imerode()
J = imerode(I, SE) 使用结构元素 SE 腐蚀灰度、二值或压缩二值图像 I。
J = imerode(I, nhood) 腐蚀图像 I,其中 nhood 是由指定结构元素邻域的 0 和 1 组成的矩阵。
此语法等效于 imerode(I, strel(nhood))。
J = imerode(___, packopt, m) 指定输入图像 I 是否为压缩二值图像。m 指定原始未压缩图像的行维度。
J = imerode(___, shape) 指定输出图像的大小。
腐蚀运算是一种消除边界点,使边界点向内部收缩的过程。因此,腐蚀运算常用来消除图像中一些小且无意义的物体;使用腐蚀运算消除图像的背景部分,也可以产生滤波器的效果。
膨胀运算 imdilate()
J = imdilate(I, SE) 使用结构元素 SE 膨胀灰度、二值或压缩二值图像 I。
J = imdilate(I, nhood) 对图像 I 执行扩张运算,其中 nhood 是由 0 和 1 组成的矩阵,用于指定结构元素邻域。
此语法等效于 imdilate(I, strel(nhood))。
J = imdilate(___, packopt) 指定 I 是否为压缩二值图像。
J = imdilate(___, shape) 指定输出图像的大小。
膨胀运算是将与物体接触的所有背景合并到该物体中,使边界向外扩张的过程。因此,膨胀运算可以用来填补物体中的空洞及消除目标物体中的小颗粒噪声。在处理上面一张字迹不清的图片时,用膨胀运算填补字迹的空洞,从而使字迹更加清晰。
开运算 imopen()
J = imopen(I, SE) 使用结构元素 SE 对灰度或二值图像 I 执行形态学开运算。形态学开运算是先腐蚀后膨胀,这两种运算使用相同的结构元素。
J = imopen(I, nhood) 对图像 I 执行开运算,其中 nhood 是由 0 和 1 组成的矩阵,用于指定结构元素邻域。
此语法等效于 imopen(I,strel(nhood))。
开运算对图像先腐蚀后膨胀。开运算去除了白点,能够除去孤立的小点,毛刺和粘连,而总的位置和形状不变。开运算是一个基于几何运算的滤波器。结构元素大小的不同将导致滤波效果的不同。不同的结构元素的选择导致了不同的分割,即提取出不同的特征。
闭运算 imclose()
J = imclose(I,SE) 使用结构元素 SE 对灰度或二值图像 I 执行形态学闭运算。形态学闭运算是先膨胀后腐蚀,这两种运算使用相同的结构元素。
J = imclose(I,nhood) 对图像 I 执行闭运算,其中 nhood 是由指定结构元素邻域的 0 和 1 组成的矩阵。
此语法等效于 imclose(I,strel(nhood))。
闭运算对图像先膨胀后腐蚀。闭运算去除了黑点,能够填平目标物中的小孔,弥合小裂缝,而总的位置和形状不变。闭运算是通过填充图像的暗块来滤波图像的。结构元素大小的不同将导致滤波效果的不同。不同结构元素的选择导致了不同的弥合。