关于图像分割和hough变换(17)

关于图像分割和hough变换(19_02_24学习进度)

最近在研究的【如何确定文字范围以提供边缘检测和Hough变换】的方法,目前想到了三个方法,介绍如下:

膨胀(腐蚀)算法

膨胀(腐蚀)算法的原理就是将符合条件的像素点(块)替换成设定的形状

二值图像的膨胀算法可以使用matlab提供的imdilate函数实现
其中X是M*N的二值图像矩阵,B为结构元素,其元素必须包含只有0和1,其数据类型任意不需要是逻辑类型,返回值Z是与X大小相同的二值图像矩阵,使用如下:

>> X=imread('number.bmp');
>> B=[0 1 0;1 1 1;0 1 0];
>> Z1=imdilate(X,B);
>> Z2=imdilate(Z1,B);
>> Z3=imdilate(Z2,B);
>> imshow(X),figure,imshow(Z1),figure,imshow(Z2),figure,imshow(Z3);

这段代码表示的是三次膨胀,其中B=[0 1 0;1 1 1;0 1 0];表示的是每个像素点按照十字形状膨胀效果如下:
在这里插入图片描述
明显可见原本的图象被加粗了。

在本次中我尝试了拉近字间距,规格为:
在这里插入图片描述
效果如下:在这里插入图片描述
经过三次次膨胀
膨胀形状为:
第一次:
在这里插入图片描述
第二次:
在这里插入图片描述

clear
clc
X1=imread(‘abc.bmp’);
%X1=rgb2gray(A);
B1=[0 0 0;1 1 1;0 0 0];
B2=[1 1 1;1 1 1;1 1 1];
Z1=imdilate(X1,B1);
Z2=imdilate(Z1,B1);
Z3=imdilate(Z2,B1);
imshow(X1),figure,imshow(Z3);

效果如下:

在这里插入图片描述
可以看见除了F字母其他部分基本已经连接成线条了,这里我考虑用一次重构算法填充其中的孔洞部分

在matlab中可以使用函数实现重构

Z=imreconstruct(M,X)

重构填充的原理是通过取反,得到外部图像,在反向填充、与原图叠加最终实现填充孔洞
经过尝试效果不明显

猜你喜欢

转载自blog.csdn.net/weixin_40740611/article/details/87932670