关于图像分割和hough变换(11)
关于图像分割和hough变换(19_01_27学习进度)
关于之前的膨胀和腐蚀的错误
之前一篇学习中,我根据图像最后的效果判定错了膨胀和腐蚀的函数
事实上正确的函数应该是
膨胀为:Z=imdilate(X,B)
腐蚀为:Z=imerode(X,B)
产生错误的原因是我用的图片为黑底白字,而这两个函数默认白色为背景黑色为目标点,所以产生了相反的效果
在matlab处理二值图像中,默认白色为数值1,黑色为0
关于形态应用学
重构
重构是涉及两幅图和一个结构元素的心态学变换,其中一个图像成为标记,作为变换的开始点,另一幅图象是掩模,用来约束变换过程。结构元素用于定义连结性。
重构不是从一副缺失的图像中重新构建完整图像,而是提取原始图像中的含有某些特征的连通区域来构建心得图像。
重构的运用
重构可以实现开运算,之前的形态学开运算中,腐蚀可以除去小的对象,随后膨胀可以还原未被除去的对象,但是在一些结构复杂出进行多次腐蚀-膨胀处理可能会产生误差,运用重构方法可以实现精确的恢腐蚀之后的图像形状,并且只保留目标区域的图像
重构也可以实现填充孔洞的运用,将封闭区域内的一些数值为0的点填充为1。
重构的实现
在matlab中可以使用函数
Z=imreconstruct(M,X)
实现重构,其中M为二值图像,表示初始标记点矩阵,元素1表示标记点,X为同样大小的二值图像,表示原始图像,要求为M中1的元素在X的对应位置也要是1,函数的返回值Z为同样大小的二值图像
填补孔洞运行如下
代码为:
X=imread(‘zimu.bmp’);
Z1=imerode(X,ones(51,1));
Z=imreconstruct(Z1,X);
imshow(X),figure,imshow(Z)
结果为:
可见其中孔洞部分被填补了
边界提取
边界提取也是腐蚀的一种,不会产生边缘的断裂
使用为:
X=imread(‘zimu2.bmp’);
imshow(X),figure;
X1=imerode(X,ones(3,3));
imshow(X1),figure;
Z=X-X1;
imshow(Z);
从而实现了边界的提取