资源简介

毕业设计,实现中文光学字符自动分割系统。 具体要求: 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


评论

共有 条评论