Matlab函数bwmorph

来源:互联网 发布:ubuntu共享文件夹路径 编辑:程序博客网 时间:2024/04/29 09:33
函数功能: 对二值图像进行数学形态学(Mathematical Morphology)运算。
  语法格式:
  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”形态学运算, 返回源图像减去开运算的图像;
  相关函数: imopen、imclose、imdilate、imerode、bwperim
  程序示例
  % get skeleton of an object in a binary image
  close all; clear; clc;
  warning off all;
  imgdat = logical([1, 0, 0; 1, 0, 1; 0, 0, 1]);
  retdat = bwmorph(imgdat, 'bridge') % using 'brige' option
  imgdat = logical([0, 0, 0; 0, 1, 0; 0, 0, 0]);
  retdat = bwmorph(imgdat, 'clean') % using 'clean' option
  imgdat = logical([1, 1, 1; 1, 0, 1; 1, 1, 1]);
  retdat = bwmorph(imgdat, 'fill') % using 'fill' option
  输出结果:
  retdat =
  1 1 0
  1 1 1
  0 1 1
  retdat =
  0 0 0
  0 0 0
  0 0 0
  retdat =
  1 1 1
  1 1 1
  1 1 1

0 0