首页> 中国专利> 一种模板尺寸可变的图像非线性滤波实时处理系统及方法

一种模板尺寸可变的图像非线性滤波实时处理系统及方法

摘要

本发明提供了一种模板尺寸可变的图像非线性滤波实时处理系统及方法,该系统包括主状态机模块、行缓冲模块、行缓冲存储器组及块处理模块;主状态机模块根据选取的非线性滤波处理的模板尺寸N×N,控制行缓冲模块分配N+1行行缓冲存储器组;行缓冲模块在主状态机模块的控制下,将输入的原始图像数据以字节的形式写入所分配的N+1行行缓冲存储器组中,并从N+1行行缓冲存储器组中读取N行数据以字节的形式发送给块处理模块;块处理模块在主状态机模块的控制下,对接收的N行数据采用当前选取的非线性滤波处理算法进行处理,并将非线性滤波处理后的数据以字节的形式输出。该系统能够解决现有技术中初始计算延迟较大、模板大小不能改变、实时性差等弊端。

著录项

  • 公开/公告号CN104050635A

    专利类型发明专利

  • 公开/公告日2014-09-17

    原文格式PDF

  • 申请/专利权人 北京理工大学;

    申请/专利号CN201410240583.5

  • 申请日2014-05-30

  • 分类号G06T5/00;G06T1/60;

  • 代理机构北京理工大学专利中心;

  • 代理人仇蕾安

  • 地址 100081 北京市海淀区中关村南大街5号

  • 入库时间 2023-12-17 01:14:57

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-06-19

    未缴年费专利权终止 IPC(主分类):G06T5/00 授权公告日:20170215 终止日期:20170530 申请日:20140530

    专利权的终止

  • 2017-02-15

    授权

    授权

  • 2017-02-01

    著录事项变更 IPC(主分类):G06T5/00 变更前: 变更后: 申请日:20140530

    著录事项变更

  • 2014-10-22

    实质审查的生效 IPC(主分类):G06T5/00 申请日:20140530

    实质审查的生效

  • 2014-09-17

    公开

    公开

说明书

技术领域

本发明涉及一种图像处理系统,具体涉及一种模板尺寸可变的图像非线性滤波实时处理系统及方法,属于图像处理技术领域。 

背景技术

非线性滤波是数字图像处理中常用的一种运算方式,它使用滑动模板窗口对图像(灰度图或二值图)中的某个像素及其邻域做处理,然后将得到的值代替模板中间位置的像素值,然后移动模板直到处理完图像的所有像素。在图像处理过程中,非线性滤波经常被运用,例如空间滤波中的二值中值滤波、最大值滤波以及形态学滤波中的二值腐蚀膨胀、灰度腐蚀膨胀等,在非线性滤波处理过程中,模板的大小往往会发生改变。 

传统的非线性滤波处理系统主要包括模板形成模块、行列计数模块以及算法处理模块,其中模板形成模块用来获得滑动窗口数据,行列计数模块用来控制边界处理,算法处理模块用来处理不同的模板操作算法。模板形成模块使用先进先出队列(FIFO)作为行缓冲器保证滑动窗口每行的数据是同时获取的,然后对获得的各行数据进行分级寄存,这样通过列延时就能在同一时钟周期获得处理所需要的窗口数据。传统的非线性滤波处理系统存在的不足之处在于:(1)模板形成需要行延时和列延时进行时序对齐,这需要消耗许多额外的寄存器资源,也浪费了很多时钟周期,初始计算延迟较大,不适合尺寸较大的模板运算;(2)模板大小不能改变,换句话说,如果模板发生改变,则需要调整处理时序,灵活性较弱;(3)对二值图像进行滤波是基于比特级进行操作的,处理一次只 替换一个比特位,效率较低,如果原始图像较大,这将会严重影响处理的实时性。 

发明内容

本发明解决的技术问题是:本发明提供了一种模板尺寸可变的图像非线性滤波实时处理系统及方法,能够解决现有技术中初始计算延迟较大、模板大小不能改变、实时性差等弊端。 

本发明的技术解决方案是: 

一种模板尺寸可变的图像非线性滤波实时处理系统,包括:主状态机模块、行缓冲模块、行缓冲存储器组及块处理模块; 

主状态机模块根据当前选取的非线性滤波处理的模板尺寸N×N,控制行缓冲模块分配N+1行所述行缓冲存储器组; 

行缓冲模块在主状态机模块的控制下,将输入的原始图像数据以字节的形式写入所分配的N+1行行缓冲存储器组中,并从N+1行行缓冲存储器组中读取N行数据以字节的形式发送给块处理模块; 

块处理模块在主状态机模块的控制下,对接收的N行数据采用当前选取的非线性滤波处理算法进行处理,并将非线性滤波处理后的数据以字节的形式输出。 

进一步地,本发明所述行缓冲模块在第一次将原始图像数据写入行缓冲存储器组时,所写入的原始图像数据量为N行;从第二次开始,行缓冲模块将原始图像数据写入行缓冲存储器组时,所写入的原始图像数据量为1行,且写入的1行数据采用流水循环的方式进行存储;行缓冲模块读取N行数据采用流水循环的方式进行。 

进一步地,本发明所述行缓冲存储器组是由静态随机访问存储器(SRAM)构成。 

进一步地,本发明所述当前选取的非线性滤波处理为二值膨胀、二值腐蚀、中值滤波、灰度腐蚀或灰度膨胀处理。 

进一步地,本发明块处理模块包括数据输入模块、二值操作模块、二值中值滤波模块、灰度操作模块及数据输出模块;其中 

当对原始图像进行二值膨胀或二值腐蚀处理时, 

数据输入模块将接收数据传输给二值操作模块,二值操作模块对接收的数据进行二值膨胀或二值腐蚀处理,并将处理的结果经数据输出模块传输出去; 

当对原始图像进行二值中值滤波处理时, 

数据输入模块将接收数据传输给二值中值滤波模块,二值中值滤波模块对接收的数据进行中值滤波处理,并将处理的结果经数据输出模块传输出去; 

当对原始图像进行灰度膨胀或灰度腐蚀处理时, 

数据输入模块将接收数据传输给灰度操作模块,灰度操作模块对接收的数据进行灰度腐蚀和灰度膨胀处理,并将处理的结果经数据输出模块传输出去。 

一种基于模板尺寸可变的图像非线性滤波实时处理系统的图像处理方法,具体步骤为: 

步骤一、行缓冲模块将原始图像数据写入外部静态随机存储器的0至N-1行中; 

步骤二、行缓冲模块读取外部静态随机存储器中N行的数据,并传输给块处理模块; 

步骤三、块处理模块对接收的N行数据采用当前选取的非线性滤波处理算 法进行处理,并将处理后的数据以字节的形式进行输出;同时,行缓冲模块将1行原始图像数据写入外部静态随机存储器的第N行; 

步骤四、按照步骤二和步骤三的方式执行,且每次按步骤二方式执行读取N行数据采用流水循环的方式,每次按步骤三方式执行写入1行数据采用流水循环的方式对其进行存储; 

直至原始图像数据全部处理完毕,本方法结束。 

进一步地,本发明二值滤波采用如下方式进行: 

步骤S1:针对N行数据中间的(N2-1)/2比特位,统计其每一列中1的个数; 

步骤S2:依次将每N个统计结果累加1次,得到(N2-2N+1)/2个累加值,将这些累加值分别与(N2-1)/2进行比较,如果大于(N2-1)/2,则滤波后对应比特位置1,否则置0,一次得到(N2-2N+1)/2bit滤波结果; 

步骤S3:重复步骤S1-步骤S2,得到N×N二值中值滤波处理后的图像。 

本发明与现有技术相比有益效果为: 

(1)处理初始延迟小:行缓冲模块以字节存储的形式一次缓冲原始图像的多行完整数据,而不是只缓存一个模板尺寸大小的数据,因此不需要对数据进行额外的列延时,初始延迟较小,适用于各种尺寸大小的模板运算。 

(2)处理灵活性好:模板尺寸大小可以发生改变,如果模板大小发生改变,不需要调整非线性滤波实时处理系统的处理时序,只需根据模板的大小对外部静态随机存储器的行数进行分配,因此本发明适用于各种基于模板操作的图像处理算法的实现。 

(3)处理实时性强:对二值图像和灰度图像都是基于字节级操作,改变了以 往对二值图像进行比特级操作的弊端,每次处理都可以得到字节输出,这对于二值图像的处理非常有利,大大缩短了处理时间,提高了处理的实时性。 

附图说明

图1为本发明模板尺寸可变的图像非线性滤波实时处理系统示意图; 

图2为本发明行缓冲存储器组结构示意图; 

图3为N×N模板情况下,行缓冲模块对行缓冲存储器组的流水操作示意图; 

图4为3×3模板情况下,行缓冲模块对行缓冲存储器组的流水操作示意图; 

图5为块处理模块中数据输入模块的数据排列示意图; 

图6为本发明实施例3×3二值膨胀前后的图像; 

图7为本发明实施例3×3二值腐蚀前后的图像; 

图8为本发明实施例3×3二值中值滤波前后的图像; 

图9为本发明实施例5×5灰度腐蚀前后的图像; 

图10为本发明实施例5×5灰度膨胀前后的图像; 

图11为5×5二值中值滤波的实现示意图; 

图12为灰度操作模块的图像处理方形区域示意图。 

具体实施方式

下面结合附图和具体实施方式对本发明进行详细说明。 

本发明模板尺寸可变的图像非线性滤波实时处理系统,包括:主状态机模块、行缓冲模块、行缓冲存储器组及块处理模块,如图1所示。主状态机模块根据当前选取的非线性滤波处理的模板尺寸N×N,控制行缓冲模块分配N+1行所述行缓冲存储器组;行缓冲模块在主状态机模块的控制下,将输入的原始图 像数据以字节的形式写入所分配的N+1行行缓冲存储器组中,并从N+1行行缓冲存储器组中读取N行数据以字节的形式发送给块处理模块;块处理模块在主状态机模块的控制下,对接收的N行数据采用当前选取的非线性滤波处理算法进行处理,并将非线性滤波处理后的数据以字节的形式输出。 

相比于当前图像非线性滤波实时处理系统,本发明利用行缓冲模块缓冲多行完整数据,因此无需对数据进行额外的列延时,使得本发明初始延时小,且适用于各种尺寸大小的模板运算。 

在上述图像非线性滤波实时处理系统中,主状态机模块用于组织和协调整个图像非线性滤波实时处理系统的处理时序,主状态机模块的实质是处理状态转移图,即主状态机模块会按照当前处理任务的不同条件自动的安排好图像非线性滤波实时处理系统的处理顺序。 

在上述图像非线性滤波实时处理系统中,行缓冲存储器组是在非线性滤波算法处理过程中需要用到的存储器阵列,行缓冲存储器组是由静态随机访问存储器(SRAM)构成的,并以字节的形式一次缓冲原始图像的多行数据。行缓冲模块所缓冲的图像原始数据既可以是二值数据,也可以是灰度数据,但无论是二值数据还是灰度数据,在行缓冲模块中都是以字节的形式来进行处理的。 

为了节省存储器空间,行缓冲模块采用分时复用和流水处理的方式对行缓冲存储器组进行循环操作。本实施例中较佳地令行缓冲模块在第一次将原始图像数据写入行缓冲存储器组时,所写入的原始图像数据量为N行;从第二次开始,行缓冲模块将原始图像数据写入行缓冲存储器组时,所写入的原始图像数据量为1行,且写入的1行数据采用流水循环的方式进行存储;行缓冲模块读取N行数据采用流水循环的方式进行。上述写入数据的流水循环的方式为:在 第一次写入N行数据存储在N+1行行缓冲存储器组的第1至N行,在第二次存储1行数据时,存储在N+1行行缓冲存储器组的第N+1行,在第三次存储1行数据时,开始存储在N+1行行缓冲存储器组的第1行,在第四次存储1行数据时,开始存储在N+1行行缓冲存储器组的第2行,并依次类推,形成流水循环的方式;上述读取数据的流水循环方式为:在第一次读取N行数据时,读取存储在N+1行行缓冲存储器组的第1至N行数据,在第二次读取N行数据时,读取存储在N+1行行缓冲存储器组的第2至N+1行数据,在第三次读取N行数据时,读取存储在N+1行行缓冲存储器组的第1、3至N+1行数据,并依次类推,形成流水循环的方式。 

例如,针对模板的大小为N×N,且所分配的N+1行行缓冲存储器组的编号为0,1,2……N-1,N;首先N×N处理需要缓存N行完整的行缓冲存储器空间,也就是说要缓存满N行完整的图像原始数据,然后行缓冲模块开始将这第0-(N-1)行行缓冲存储器空间的图像原始数据输出给块处理模块进行处理。与此同时,第N行行缓冲存储器空间也在缓存下一行原始图像数据,当第0-(N-1)行行缓冲存储器空间的原始图像数据全部处理完毕时,行缓冲模块开始将第1-N行行缓冲存储器空间的原始图像数据输出给块处理模块。与此同时,第0行行缓冲存储器空间也在缓存下一行的原始图像数据,与此类推,按照这种流水处理方式,行缓冲模块不断缓存图像原始数据并将数据并行输出给块处理模块。同时,如果模板尺寸大小发生改变,则只需要根据具体情况对所分配的存储行数做相应调整,即可使得该图像非线性滤波实时处理系统适用于不同大小的模板。 

在上述图像非线性滤波实时处理系统中,块处理模块是模板尺寸可变的图像非线性滤波实时处理系统的核心模块,用于处理不同图像非线性滤波算法的 图像原始数据,并输出经过处理后的数据。块处理模块包括数据输入模块、二值操作模块、二值中值滤波模块、灰度操作模块及数据输出模块。 

数据输入模块用于接收行缓冲模块的数据并发送给二值操作模块、二值中值滤波模块或灰度操作模块;当非线性滤波处理算法对二值图像进行操作时,行缓冲模块从每行行缓冲存储器中读出3个字节的数据,以24比特(bit)向量的形式发送给二值操作模块处理(执行二值腐蚀处理或二值膨胀处理)或二值中值滤波模块处理(执行中值滤波处理)。假设模板尺寸为N×N,则有N个同样的24比特向量数据排列,通过这样的字节操作,在形成流水处理的情况下,每个时钟周期可以完成一次处理并替换二值图像中的8个比特位。当非线性滤波算法处理图像左(右)边界时,24bit向量的高8bit(低8bit)分别赋全0或全1,当非线性滤波算法处理上(下)边界时,也需要进行同样的处理。当非线性滤波算法对灰度图像进行操作时,假设模板尺寸为N×N,则行缓冲模块从N行行缓冲存储器中各读出1个字节的数据直接输出给灰度操作模块进行处理(执行灰度腐蚀或灰度膨胀处理);数据输出模块用于将块处理模块处理后得到的数据以字节的形式进行输出。 

本发明给出基于模板尺寸可变的图像非线性滤波实时处理系统的图像处理方法,具体步骤为: 

步骤一、行缓冲模块将原始图像数据写入外部静态随机存储器的0至N-1行中;步骤二、行缓冲模块读取外部静态随机存储器中的N行的数据,并传输给块处理模块;步骤三、块处理模块对接收的N行数据采用当前选取的非线性滤波处理算法进行处理,并将处理后的数据以字节的形式进行输出;同时,行缓冲模块将1行原始图像数据写入外部静态随机存储器的第N行;步骤四、按 照步骤二和步骤三的方式重复执行,其中每次按步骤二方式执行读取N行数据采用流水循环的方式,每次按步骤三方式执行写入1行数据采用流水循环的方式对其进行存储;直至原始图像数据全部处理完毕,本方法结束。 

下面对本发明图像处理方法进行详细说明: 

第一步、输入图像原始数据: 

图像原始数据实质上是一个数学矩阵。本实施例中,二值图像的大小为128×128,灰度图像的大小为1024×1024。图像原始数据按照行模式输入给本发明模板尺寸可变的图像非线性滤波实时处理系统,并使模板尺寸可变的图像非线性滤波实时处理系统在主状态机模块的控制下开始工作。 

第二步、分配可循环利用的行缓冲存储器编号: 

在处理各种不同图像非线性滤波算法之前,主状态机模块根据图像非线性滤波算法所需要的模板尺寸大小分配好每种图像非线性滤波算法所循环利用的行缓冲存储器编号。在本实施例中,二值图像的大小为128×128,灰度图像的大小为1024×1024,一行图像原始数据最多有1024个像素,灰度图像的像素值范围为0-255,因此用8个比特位就可以表示出来。因此,本实施例中的行缓冲存储器是分配有1K×8bit的SRAM空间,行缓冲器组的行数是由图像非线性滤波的模板大小所决定的。如图2所示,假设需要进行运算的模板尺寸为N×N,那么为了使图像非线性滤波处理算法能够进行流水处理,所需要分配的行缓冲存储器的行数应该为N+1,行缓冲器组的行数编号依次编为0,1,2,…,N-1,N。在实施例中,模板尺寸的大小为3×3和5×5,如果进行运算的模板尺寸为3×3,那么为了使图像非线性滤波处理算法能够进行流水处理,所需要分配的行缓冲存储器的行数应该为4,行缓冲器组的行数编号依次编为0,1,2,3; 如果进行运算的模板尺寸为5×5,与此同理,在此不再赘述。 

第三步、行缓冲模块对行缓冲存储器组进行流水处理: 

行缓冲模块首先实现对行缓冲存储器组的控制,从而缓存图像原始数据,然后按照图像非线性滤波处理算法的不同要求,给块处理模块输出图像原始数据,并配合块处理模块做好不同图像非线性滤波处理算法的边界处理。行缓冲模块所缓冲的图像原始数据既可以是二值数据,也可以是灰度数据,但无论是二值数据还是灰度数据,在行缓冲模块中都是以字节的形式来进行处理的。 

假设需要进行运算的模板尺寸为N×N,那么为了使算法能够进行流水处理,所需要分配的行缓冲存储器行数为N+1,其流水处理过程如图3所示,其中横坐标0,1,2,3,4,5分别代表时间周期,在块处理模块第一个处理周期内处理数据时,此时mulbufN行开始缓存数据,在块处理模块第二个处理周期内处理数据时,此时mulbuf0行开始缓存数据,并依次类推。在本实施例中,模板尺寸的大小为3×3和5×5,假设进行运算的模板尺寸为3×3,那么为了使算法能够进行流水处理,所需要分配的行缓冲存储器行数为4,其流水处理过程如图4所示。 

步骤S31:3×3处理需要缓存3行完整的行缓冲存储器空间,也就是说要缓存满3行完整的图像原始数据,然后行缓冲模块开始将这第0-2行行缓冲存储器空间的图像原始数据输出给块处理模块进行处理。与此同时,第3行行缓冲存储器空间也在缓存下一行图像原始数据。 

步骤S32:当第0-2行行缓冲存储器空间的图像原始数据全部处理完毕时,行缓冲模块开始将第1-3条行缓冲存储器空间的图像原始数据输出给块处理模块。与此同时,第0行行缓冲存储器空间也在缓存下一行的图像原始数据,与 此类推,按照这种流水处理方式,行缓冲模块不断缓存图像原始数据并将数据并行输出给块处理模块。 

如果进行运算的模板尺寸为5×5,与此同理,在此不再赘述。 

第四步、行缓冲模块将数据发送给块处理模块中的数据输入模块并作边界处理: 

块处理模块包括数据输入模块、二值操作模块、二值中值滤波模块、灰度操作模块及数据输出模块。行缓冲模块将数据发送给块处理模块中的数据输入模块,当非线性滤波处理算法对二值图像进行操作时,执行步骤S41-S42。当非线性滤波算法对灰度图像进行操作时,执行步骤S43。 

步骤S41:当非线性滤波处理算法对二值图像进行操作时,行缓冲模块从每行行缓冲存储器中读出3个字节的数据,以24比特(bit)向量的形式发送给数据输入模块,进而发送给二值操作模块或二值中值滤波模块,如图5所示。假设模板尺寸为N×N,则有N个同样的24比特向量数据排列。在本实施例中,模板尺寸的大小为3×3和5×5,因此有3个或5个同样的24比特向量数据排列。通过这样的字节操作,在形成流水处理的情况下,每个时钟周期可以完成一次处理并替换二值图像中的8个比特位。 

步骤S42:当非线性滤波算法处理图像左(右)边界时,24bit向量的高8bit(低8bit)分别赋全0或全1,当非线性滤波算法处理上(下)边界时,也需要进行同样的处理。 

步骤S43:当非线性滤波算法对灰度图像进行操作时,假设模板尺寸为N×N,则行缓冲模块从N行行缓冲存储器中各读出1个字节的数据直接输出给数据输入模块,进而发送给灰度操作模块进行处理。在本实施例中,灰度图像非线 性滤波算法所用的模板大小为5×5。因此,行缓冲模块从5行行缓冲存储器中各读出1个字节的数据输出给数据输入模块。 

第五步、块处理模块处理图像原始数据并输出结果: 

数据输入模块用于接收行缓冲模块的数据并发送给二值操作模块、二值中值滤波模块或灰度操作模块。在本实施例中,块处理模块对128×128大小的二值图像以及1024×1024大小的灰度图像进行处理。其中二值操作模块对二值图像进行3×3二值膨胀、3×3二值腐蚀以及5×5二值中值滤波,灰度操作模块对灰度图像进行5×5的灰度膨胀和灰度腐蚀。进行3×3二值膨胀前的二值图像如图6所示、进行3×3二值腐蚀前的二值图像如图7所示、进行5×5二值中值滤波前的二值图像如图8所示、进行5×5灰度膨胀前的灰度图像如图9所示,进行5×5灰度腐蚀前的灰度图像如图10所示。 

如果对二值图像进行3×3二值膨胀和3×3二值腐蚀,块处理模块处理数据的步骤分别为S51-S53和S54-S56。 

如果对二值图像进行5×5二值中值滤波,块处理模块处理数据的步骤分别为S57-S59和S57-S59。 

如果对灰度图像进行5×5灰度腐蚀和5×5灰度膨胀,块处理模块处理数据的步骤分别为S510-S512和S513-S515。 

3×3二值膨胀处理步骤如下(为了硬件设计的需求,所以处理的过程中会多出一路): 

步骤S51:为了完成流水处理,3×3二值膨胀需要用到4个行缓冲存储器。块处理模块中的二值操作模块将4路24bit数据都分别左移1bit、右移1bit得到8个新行数据,8个新向量数据加上4路24bit数据组成12个行数据。在二 值膨胀运算过程中,4路行数据中其实只有3路是有效的,无效的1路在行缓冲模块输出时已经置为全0,所以不影响膨胀结果; 

步骤S52:将这12个向量数据进行逻辑或操作,得到的中间8bit即为二值膨胀后的结果。 

步骤S53:重复步骤S51-S52,得到3×3二值膨胀处理后的图像如图6所示。 

3×3二值腐蚀处理步骤如下: 

步骤S54:为了完成流水处理,3×3二值膨胀需要用到4个行缓存器。块处理模块中的二值操作模块将4路24bit数据都分别左移1bit、右移1bit得到8个新行数据,8个新行数据加上4路24bit数据组成12个行数据。在二值腐蚀运算过程中,4路行数据中其实只有3路是有效的,无效的1路在行缓冲模块输出时已经置为全1,所以不影响腐蚀结果; 

步骤S55:将这12个向量数据进行逻辑与操作,得到的中间8bit即为二值腐蚀后的结果; 

步骤S56:重复步骤S54-S55,得到3×3二值腐蚀处理后的图像如图7所示。 

5×5二值中值滤波处理步骤如下: 

中值滤波传统的方法是采用排序算法对N×N模板大小的数据进行排序,然后取中间的数据去代替模板的中间值,每次运算都要重复做一个排序,而且只得到一个位输出。本发明采用的方法与传统方法不同之处在于一次处理的不是N×N模板大小的数据,而是同时处理图像的N行数据,即首先对每一列中1的个数进行统计,然后依次对N列统计的数据进行累加,得到的数据和(N×N)/2 取整的数据进行比较,如果累加的数据大于该数据,则置1,否则置0。这样可以实现N行数据的并行处理,并且每一次都可以得到1个字节的输出,大大加快了处理速度。 

步骤S57:如图11所示,为了完成流水处理,5×5二值中值滤波需要用到6个行缓存器Data0[23:0]-Data5[23:0]。行缓冲模块将6路数据输入给块处理模块中的数据输入模块,块处理模块的二值中值滤波模块只需要数据输入模块发送过来的6路24bit数据的中间12比特位,即Data0[17:6]、Data1[17:6]、Data2[17:6]、Data3[17:6]、Data4[17:6]、Data5[17:6]。在二值中值滤波运算过程中,6路行数据中其实只有5路是有效的,无效的1路在行缓冲模块输出时已经置为全0,所以不影响计算结果。 

步骤S58:块处理模块的二值中值滤波操作模块对6个向量的每1列统计1的个数,得到12个统计结果column_sum0-column_sum11,然后依次将每5个统计结果累加1次,得到8个累加值,将这8个累加值再分别与12进行比较,如果大于12,则滤波后对应比特位置1,否则置0,一次得到一个字节即8bit滤波结果输出。 

步骤S59:重复步骤S57-S58,得到3×3二值中值滤波处理后的图像如图8所示。 

5×5灰度腐蚀处理步骤如下: 

步骤S510:如图12所示,先对灰度图像处理方形区域定义几个参数。用8比特数据column_min[7:0]表示方形区域内最右列的最小值;用8比特数据column_max[7:0]表示方形区域内最右列的最大值;用left_range表示方形区域内除最右列外的其他范围;用mid_range表示方形区域内除最右和最左列外 的其他范围。 

步骤S511:块处理模块的灰度操作模块每次接收1列的6个数据,如图12中的蓝色部分所示,统计出当前列的最小值保存在column_min[7:0]中,并将此结果与前4列left_range的最小值left_range_min[7:0]进行比较得到这5列的最小值,这就是5×5灰度腐蚀的结果gray_min[7:0],同时将当前列的最小值column_min[7:0]与前3列mid_range的最小值mid_range_min[7:0]比较得到最近4列的最小值并更新left_range_min[7:0],用作下一个5×5区域最小值的判断。 

步骤S512:反复迭代S511,直到所有图像原始数据都被处理完毕,需要注意的是,图像原始数据的每行最后一个字节计算完成时,left_range_min[7:0]及mid_range_min[7:0]需要作一次清零操作。另外,针对5×5灰度腐蚀边界处理,对于图像原始数据的上下边界各2行均不作腐蚀,直接计算其它行的腐蚀结果,对于左右边界各2列,输出时填充零。得到5×5灰度腐蚀处理后的图像如图9所示。 

5×5灰度膨胀处理步骤如下: 

步骤S513:如图12所示,先对灰度图像处理方形区域定义几个参数。用8比特数据column_min[7:0]表示方形区域内最右列的最小值;用8比特数据column_max[7:0]表示方形区域内最右列的最大值;用left_range表示方形区域内除最右列外的其他范围;用mid_range表示方形区域内除最右和最左列外的其他范围。 

步骤S514:块处理模块的灰度操作模块每次接收1列的6个数据,如图12中蓝色部分所示,统计出最大值column_max[7:0],并将此结果与前4列 left_range的最大值left_range_max[7:0]进行比较得到这5列的最大值,这就是5×5灰度膨胀的结果gray_max[7:0],同时将当前列的最大值column_max[7:0]与前3列mid_range的最大值mid_range_max[7:0]比较得到最近4列的最大值并更新left_range_max[7:0],用作下一个5×5区域最大值的判断; 

步骤S515:反复迭代S514,直到所有图像原始数据都被处理完毕,需要注意的是,图像原始数据的每行最后一个字节计算完成时,left_range_max[7:0]及mid_range_max[7:0]作一次清零。另外,针对5×5灰度膨胀边界处理,对于上下边界各4行均不作膨胀,直接计算其它行的腐蚀结果,对于左右边界各4列,输出时填充零。得到5×5灰度膨胀处理后的图像如图10所示。 

至此处理结束。 

综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。 

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号