资源简介
毕业设计,实现中文光学字符自动分割系统。
具体要求:
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编程100例
- 交替方向乘子法ADMM算法的matlab代码
- 图像插值方法3种方法,MATLAB代码
- AF、DF协议的MATLAB仿真
- tobii眼动仪视觉追踪程序源码,MATLA
- ADMM工具包
- Matlab实现FCM算法
- matlab 计算李雅普诺夫指数的方法集合
- 多径多普勒效应讲义(含matlab程序)
- 基于Matlab的数字图像处理课程设计
- 雷达系统设计MATLAB仿真.pdf196612
- Matlab 揭秘 全本
- MATLAB建模与仿真应用教程(第2版 )
- 精简版绿色Matlab
- DTFT、DFT、FFT原理及编程
- 无线传感器网络定位程序(matlab可以
- 雷达系统设计及matlab仿真 全文书籍
- 基于matlab图像处理系统含GUI
- 虹膜识别matlab程序源代码
- MATLAB程序——癫痫病人的脑电信号提
- KNN算法对MNIST数据集分类
- 系统辨识与自适应控制MATLAB仿真1904
- PIV matlab程序
- MATLAB在时间序列分析中的应用_张善文
- matlab利用不变矩提取图片的形状特征
- 滑模变结构控制MATLAB仿真(第1版)(
- UWB_Matlab
- 滑模变结构控制MATLAB仿真刘金锟
- 基于Matlab的指纹图像特征提取
- MATLAB通信技术例程
评论
共有 条评论