Matlab数学形态学运算

数学形态学运算

语法格式:

  BW2 = bwmorph(BW,operation)

  对二值图像进行指定的形态学处理。

  BW2 = bwmorph(BW,operation,n)

  对二值图像进行n次指定的形态学处理。 n可以是Inf(无穷大),这意味着将一直对该图像做同样的形态学处理直到图像不再发生变化。

  operation是一个字符串, 用于指定进行的形态学处理类型, operation可以为以下值:

  'bothat':进行“bottom hat”形态学运算,即返回源图像减去闭运算的图像;

  'branchpoints':找到骨架中的分支点;

  'bridge':进行像素连接操作;

  'clean':去除图像中孤立的亮点,比如, 一个像素点, 像素值为1,其周围像素的像素值全为0,则这个孤立的亮点将被去除;

  'close':进行形态学闭运算(即先腐蚀后膨胀);

  'diag': 采用对角线填充, 去除八邻域的背景;

  'dilate': 使用结构元素ones(3)对图像进行膨胀运算;

  'endpoints':找到骨架中的结束点;

  'erode':使用结构元素ones(3)对图像进行腐蚀运算;

  'fill':填充孤立的黑点, 比如3*3的矩阵, 除了中间元素为0外,其余元素全部为1,则这个0将被填充为1;

  'hbreak':断开图像中的H型连接;

  'majority':如果一个像素的8邻域中有等于或超过5个像素点的像素值为1, 则将该点像素值置1;

  'open':进行形态学开运算(即先膨胀后腐蚀);

  'remove':如果一个像素点的4邻域都为1, 则该像素点将被置0;该选项将导致边界像素上的1被保留下来;

  'skel':在这里n = Inf,骨架提取但保持图像中物体不发生断裂;不改变图像欧拉数;

  'spur':去除小的分支, 或引用电学术语“毛刺”;

  'thicken':在这里n = Inf, 通过在边界上添加像素达到加粗物体轮廓的目的;

  'thin':在这里n = Inf,进行细化操作;

  'tophat':进行“top hat”形态学运算, 返回源图像减去开运算的图像;

腐蚀膨胀

二值图像的形态学处理的基本运算有腐蚀、膨胀、开运算、闭运算,击中与击不中、骨架抽取等。

图像膨胀:

可以使用imdilate函数进行图像膨胀,imdilate函数需要两个基本输入参数,即待处理的输入图像和结构元素对象。结构元素对象可以是strel函数返回的对象,也可以是一个自己定义的表示结构元素邻域的二进制矩阵。此外,imdilate还可以接受两个可选参数:PADOPT(padopt) ——影响输出图片的大小、PACKOPT(packopt).——说明输入图像是否为打包的二值图像(二进制图像)。

BW=zeros(9,10);
BW(4:6,4:7) =1;
SE=strel('square',3); %使用一个3×3的正方形结构元素对象对创建的图像进行膨胀
BW2=imdilate(BW,SE); %将图像BW和结构元素SE传递给imdilate函数

 

图像腐蚀:

 BW2=imerode(BW1,SE);

基于腐蚀和膨胀的形态操作函数如下:

bwhitmiss 图像逻辑"与"操作,该函数使用一个结构元素对图像进行腐蚀操作后,再使用第二个结构元素对图像进行腐蚀操作

imbothat 从原始图像中减去经过形态关闭后的图像,该函数可用来寻找图像中的灰度槽

imclose 闭合操作.首先对图像进行膨胀,然后再对膨胀后的图像进行腐蚀,两个操作使用同样的结构元素

imopen 开启操作,首先对图像进行腐蚀,然后再对腐蚀后的图像进行膨胀,两个操作使用同样的结构元素

imtophat 从原始图像中减去形态开启后的图像,可以用来增强图像的对比度

函数【bwareaopen】──删除小面积对象
格式:BW2 = bwareaopen(BW,P,conn)
作用:删除二值图像BW中面积小于P的对象,默认情况下使用8邻域。
算法:
(1)Determine the connected components.
  L = bwlabeln(BW, conn);
(2)Compute the area of each component.
  S = regionprops(L, 'Area');
(3)Remove small objects.
  bw2 = ismember(L, find([S.Area] >= P));

函数【imfiter】——对任意类型数组或多维图像进行滤波
用法:B = imfilter(A,H)
   B = imfilter(A,H,option1,option2,…)
   或写作g = imfilter(f, w, filtering_mode, boundary_options, size_options)
其中,f为输入图像,w为滤波掩模,g为滤波后图像。filtering_mode用于指定在滤波过程中是使用“相关”还是“卷积”。boundary_options用于处理边界充零问题,边界的大小由滤波器的大小确定。具体参数选项见下表:

 选项描述
filtering_mode‘corr’通过使用相关来完成,该值为默认。
 ‘conv’通过使用卷积来完成
boundary_options‘X’输入图像的边界通过用值X(无引号)来填充扩展
其默认值为0
 ‘replicate’图像大小通过复制外边界的值来扩展
 ‘symmetric’图像大小通过镜像反射其边界来扩展
 ‘circular’图像大小通过将图像看成是一个二维周期函数的一个周期来扩展
size_options‘full’输出图像的大小与被扩展图像的大小相同
 ‘same’输出图像的大小与输入图像的大小相同。这可通过将滤波掩模的中心点的偏移限制到原图像中包含的点来实现,该值为默认值。

 

函数【strel】——创建膨胀腐蚀及开闭运算等操作的结构元素对象

用法:SE = strel(shape,parameters)

创建由指定形状shape对应的结构元素。其中shape的种类有
‘arbitrary'
'pair'
'diamond'
'periodicline'
'disk'
'rectangle'
'line'
'square'
'octagon’

参数parameters一般控制SE的大小。
例子:
se1 = strel('square',6)
% 创建6*6的正方形
se2 = strel('line',10,45)
% 创建直线长度10,角度45
se3 = strel('disk',15)
% 创建圆盘半径15
se4 = strel('ball',15,5)
% 创建椭圆体,半径15,高度5

  • 8
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值