Matlab函数bwmorph简介 图像处理


  函数功能: 对二值图像进行数学形态学(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”形态学运算, 返回源图像减去开运算的图像;

实验五 二值形态学操作

一、实验目的
 了解二值形态学的基本运算
 掌握基本形态学运算的Matlab实现
 了解形态操作的应用
二、原理
    收缩和膨胀是数学形态学最基本的变换,数学形态学的应用几乎覆盖了图像处理的所有领域,给出利用数学形态学对二值图像处理的一些运算。
    膨胀就是把连接成分的边界扩大一层的处理。而收缩则是把连接成分的边界点去掉从而缩小一层的处理。若输出图像为g(i,j),则它们的定义式为二值图像目标X是E的子集。用B代表结构元素,Bs代表结构元素B关于原点(0 , 0)的对称集合:
即Bs是B旋转180°获得的。给出了三种简单的结构元素。膨胀和腐蚀变换的定义式为:
膨胀
腐蚀
Matlab中用imdilate函数实现膨胀。用法为:
Imdilate(X,SE).其中X是待处理的图像,SE是结构元素对象。
例如:
bw = imread('text.tif');
se = strel('line',11,90);
bw2 = imdilate(bw,se);
imshow(bw), title('Original')
figure, imshow(bw2), title('Dilated')
Matlab用imerode函数实现图像腐蚀。用法为:
Imerode(X,SE).其中X是待处理的图像,SE是结构元素对象。
例如:
I = imread('cameraman.tif');
se = strel('ball',5,5);
I2 = imerode(I,se);
imshow(I), title('Original')
figure, imshow(I2), title('Eroded')
三、练习
1 读取一幅图像,进行骨架化操作并得到其边界
2 读取一幅图像,转化为二进制图像,并计算其面积
3读取一幅图像,比较不同距离变换的图像效果

你可能感兴趣的:(opencv,图像处理学习笔记)