资源简介
毕业设计,实现中文光学字符自动分割系统。
具体要求:
1、对输入图像进行必要的预处理,诸如灰度化,去噪,二值化等,方便分割;
2、利用垂直投影法进行单行中文光学字符的分割,多行中文光学字符分割;
3、利用连通域法进行单行中文光学字符的分割,多行中文光学字符分割;
4、对比两种方法的优缺点,并且针对缺陷改进算法。
注意,对于拍照存在倾斜的情况要能正确分割。

代码片段和文件信息
% Img:载入的图像数据
% GapHeight:字符之间的间隔高度
% GapWidth:字符之间的间隔宽度
% ImdiSize:膨胀像素值,与图像大小、分辨率有关
% DrawPic:是否单独输出图像
% b:输出的分块文字框位置,格式为[x y 宽度 高度]
function b = connect(ImgGapHeightGapWidthImdiSizeDrawPic)
% clear;
% clc;
% close all;
% Img = imread(‘tst2.jpg‘);
[~~c_size]=size(Img);
%-----------------参数设定部分----------------%
%这里认为每个字符“中心”位置之间至少间隔8个宽、10个高像素点
% GapHeight = 10;
% GapWidth = 8;
% ImdiSize = 2;
%设定膨胀像素值,与图像分辨率有关
%-----------------图像预处理部分---------------%
if c_size==1
f_logical= ~im2bw(Imggraythresh(Img));
else
Img=rgb2gray(Img);
f_logical= ~im2bw(Imggraythresh(Img));
end
%图像判定是否为RGB或灰度图,并将其二值化
f_process=f_logical;
str=strel(‘square‘ImdiSize);
f_process=imdilate(f_processstr);
%图像膨胀
% f_process=bwareaopen(f_process10);
%小于8个像素的区域进行删除处理
%预处理部分
if DrawPic == true
figure;
imshow(~f_process);
end
%----------------提取连通域部分----------------%
[Lnum] = bwlabel(f_process8);
%标注二进制图像中已连接的部分
Feastats = regionprops(L‘basic‘);
%计算图像区域的特征尺寸
Area=[Feastats.Area];
%区域面积
b=floor(cat(1 Feastats.BoundingBox));
%[x y width height]字符的大小
Center = cat(1 Feastats.Centroid);
%取出每个字符中心位置
sub=cell(1num);
%存储分割后的图像
if DrawPic == true
figure;
imshow(Img);
hold on;
end
%----------------分割字符的提取过程----------------%
for i=1:num
%b中字符的特性是按4个一组放的
%前两个为左上顶点坐标,后两个为长宽。
%这里将字符位置整理后保存
if b(i1) == -1
continue;
end
if i< num - 4
for j = 1:4
%在这里对距离过近的两个(或多个)独立连通域进行处理
%若距离小于程序开头设置的值,则认为是一个字符
%将连通域进行合并
if abs(Center(i1) - Center(i+j1)) < GapWidth
if abs(Center(i2) - Center(i+j2)) < GapHeight
%在这里将靠近的两个区域合并扩充
if b(i1) < b(i+j1)
b(i3) = max(b(i+j1) - b(i1) +...
b(i+j3)b(i3));
elseif b(i1) > b(i+j1)
b(i3) = max(b(i1) - b(i+j1) +...
b(i3)b(i+j3));
b(i1) = b(i+j1);
else
b(i3) = max(b(i3)b(i+j3));
end
if b(i2) > b(i+j2)
b(i4) = max(b(i2) - b(i+j2) +...
b(i4)b(i+j4));
b(i2) = b(i+j2);
elseif b(i2) < b(i+j2)
b(i4) = max(b(i+j2) - b(i2) +...
b(i+j4)b(i4));
else
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5271 2018-04-12 00:19 字符分割411新版\connect.m
文件 997 2018-04-12 19:29 字符分割411新版\cutHist.m
文件 1992 2018-04-12 19:40 字符分割411新版\main.m
文件 3301 2018-04-12 19:12 字符分割411新版\projection.m
文件 147773 2018-04-12 19:10 字符分割411新版\timg.jpg
文件 68420 2018-04-12 19:37 字符分割411新版\timg2.jpg
文件 33867 2018-03-29 19:00 字符分割411新版\tst2.jpg
文件 609 2019-03-12 14:21 字符分割411新版\使用说明.txt
文件 1734622 2018-04-12 19:39 字符分割411新版\效果图1.bmp
文件 2242554 2018-04-12 19:41 字符分割411新版\效果图2.bmp
文件 2065854 2018-04-12 19:40 字符分割411新版\效果图3.bmp
目录 0 2018-04-12 19:42 字符分割411新版
----------- --------- ---------- ----- ----
6305260 12
- 上一篇:交替方向乘子法ADMM算法的matlab代码
- 下一篇:MATLAB编程100例
相关资源
- matlab_OFDM调制解调(来自剑桥大学)
- Matlab路面裂缝识别69319
- 高灵敏度GPS接收机MATLAB仿真,附捕获
- 基于MATLAB的质点弹道计算与外弹道优
- 阵列天线的matlab仿真
- MATLAB 经典程序源代码大全
- MATLAB小波软阈值去噪代码33473
- 天线阵的波束形成在MATLAB仿真程序及
- 非线性SVM算法-matlab实现
- 《MATLAB 智能算法超级学习手册》-程序
- 组合导航matlab程序
- 读取txt文件内容matlab代码实现
- Matlab实现基于相关的模板匹配程序
- matlab优化工具箱讲解
- 基于MATLAB的快速傅里叶变换
- 光纤传输中的分布傅立叶算法matlab实
- 基于matlab的图像处理源程序
- matlab 椭圆拟合程序
- 算术编码解码matlab源代码
- optical_flow 光流法 matlab 实现程序
- 引导图像滤波器 Matlab实现
- 分形几何中一些经典图形的Matlab画法
- OFDM系统MATLAB仿真代码
- SVM工具箱(matlab中运行)
- 图像小波变换MatLab源代码
- LU分解的MATLAB实现
- 冈萨雷斯数字图像处理matlab版(第三
- 替代数据法的matlab程序
- 用matlab实现的多站定位系统性能仿真
- 通过不同方法进行粗糙集属性约简m
评论
共有 条评论