失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 关于提取图片中文字区域的算法和实现方法

关于提取图片中文字区域的算法和实现方法

时间:2021-09-28 22:26:35

相关推荐

关于提取图片中文字区域的算法和实现方法

最近在研究的【如何确定文字范围以提供边缘检测和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)

重构填充的原理是通过取反,得到外部图像,在反向填充、与原图叠加最终实现填充孔洞

经过尝试效果不明显

如果觉得《关于提取图片中文字区域的算法和实现方法》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。