数字图像的线段描述方法

文档序号:6437175阅读:262来源:国知局
专利名称:数字图像的线段描述方法
技术领域
本发明涉及一种数字图像的线段描述方法。
背景技术
图像分割是数字图像处理技术的一个重要方面,其目的主要是将对象从背景中分离出来,以供后续处理。目前这方面的处理基本上是以像素为基础而进行的。
通常图像分割的第一步是将图像作二值化处理,之后再从二值化图像中提取对象。
根据处理对象和背景的关系,二值化处理的方法各异。应用最多的是阈值法,根据阈值的作用范围可分为全局阈值法和局部阈值法,根据阈值的确定方法可分为固定阈值法和动态阈值法。
对二值化图像进行一系列处理如滤波、区域生长等,可以将对象从背景中分离出来。而目前这方面的处理技术均以像素为基础,即处理过程中,需一个像素一个像素地处理,限制了处理速度的提高。
以滤波处理为例,目前应用的滤波器可分为空间域滤波器和频率域滤波器。空间域滤波器主要有低通滤波器、高通滤波器、中值滤波器、高斯滤波器等等。这些滤波器一般都需将图像与一个模板作卷积运算,模板是m×n矩阵。图像上要处理的区域内所有像素均需与模板进行卷积运算。频率域滤波器需作两次变换处理,分别是从空间域到频率域的转换和在频率域处理完成后从频率域到空间域的转换,图像上的像素也必须逐个处理。这样处理的时间复杂度取决于图像的大小和模板矩阵的大小。
区域生长是从一个称为种子的像素开始的,种子的附近像素与种子进行比较,如果他们是相似的,则该像素被添加到当前区域。然后将区域的其它像素作为种子,重复操作,直到没有新的像素增加为止。在操作过程中,图像上的像素也必须逐个处理,处理的时间复杂度取决于图像的大小及图像的复杂程度。

发明内容
本发明的目的在于提供一种数字图像的线段描述方法,将数字图像中同一行内具有相同特征的连续的像素点用线段表示,以减少数据处理量,提高处理速度,使处理速度与图像大小基本无关,滤波、区域生长、对象边界数据提取操作可一次完成。
本发明的技术方案是一幅数字图像由三层结构描述图像表ImageTable、行表RowTable及线段结点LineNode,其中1)线段结点LineNode是一个由三个域Start域、End域及Next组成的自定义结构,Start域和End域分别代表一条线段的起点和终点横坐标,Next域为指向下一条线段的指针;2)行表RowTable是图像上同一行所有线段结点组成的单链表,代表数字图像上的一行图像;3)图像表ImageTable是结点类型与LineNode相同且长度等于数字图像高度的一维数组,其结点的Next域指向代表数字图像某一行的行表RowTable,并反映该行的纵坐标;4)数字图像按下面的方法处理后可转换成线段描述方式对二值化处理后的数字图像从上到下按行扫描,对每一行按从左到右的次序扫描,将每一行中连续的可能代表对象的像素点用线段结点LineNode记录,每一行图像上的所有线段结点之间通过线段结点的Next域链接成行表RowTable,行表RowTable由与该行序号相对应的图像表ImageTable的结点的Next域指示;数字图像的滤波、区域生长、对象边界数据提取操作依靠纵坐标相邻的线段之间的邻接关系进行,对象的边界数据存贮于图像表的Start域和End域内。
所述的纵坐标相邻的线段之间的邻接关系,是指对于纵坐标相邻的两条线段L1,L2,如果存在横坐标值xx∈L1且x∈L2 (1)则称这两条线段L1,L2相邻接。否则,称这两条线段不相邻接。
纵坐标相邻的两条线段L1,L2不相邻存在2种情况,即L1.Start域>L2.End域 (2)或L1.End域<L2.Start域 (3)纵坐标相邻的两条线段不相邻只存在4种情况,即L2.Start域<L1.Start域>L2.End域 (4)或L2.Start域<L1.End域>L2.End域 (5)或L1.Start域<L2.Start域>L1.End域 (6)
或L1.Start域<L2.End域>L1.End域 (7)在编程实现时,利用公式(2)和公式(3)编制一个函数UnConnective,将纵坐标相邻的两条线段作为参数输入到一个函数,根据公式(2)和公式(3)判断其相邻关系,如果满足其中一个条件,则函数返回false,表示这两条线段不相邻;否则返回true,表示这两条线段相邻。利用公式(4)~(7)编制成另一个函数Connective,将纵坐标相邻的两条线段作为参数输入到一个函数,根据公式(4)~(7)判断其相邻关系,如果满足其中一个条件,则函数返回true,表示这两条线段相邻,否则返回false,表示这两条线段不相邻。
所述的数字图像的滤波、区域生长、对象边界数据提取操作,是指1)对图像按自上而下的次序进行扫描,从中第i行取出一条线段L0,将其起点和终点值分别存入第i行表头结点,释放线段L0;2)在i+1行取第一条线段L1,采用UnConnective函数或Connective函数判断线段L0与线段L1的相邻关系,如果相邻,则将线段L1的起点和终点值存入第i+1行图像表结点,并释放线段L0,否则,查找下一条线段;然后在i+1行取第二条线段L2,采用UnConnective函数或Connective函数判断线段L0与线段L2的相邻关系,如果相邻,则将线段L2的终点值存入第i+1行表头结点,释放线段L2。如此重复,直到i+1行所有线段处理完毕;3)i+1行成为新的第i行,图像表上结点i+1的Start域值和End域值分别成为线段L0的起点和终点,重复操作2);4)当i+1行扫描完毕,没有新的相邻线段加入时,则表明图像中一个区域已生长完成,此时判断存放在表头结点的对象大小,如果小于设定的阈值,则说明该区域为噪声,应舍去。然后重复1)~3);否则,说明对象的边界区域已基本确定,可退出循环;5)回溯对图像按自下而上的次序进行扫描,由图像表结点i的Start域值和End域值组成线段L0,在i-1行取第一条线段L1,采用UnConnective函数或Connective函数判断线段L0与线段L1的相邻关系,如果相邻,则将线段L1的起点和终点值存入第i-1行图像表结点,并释放线段L0,否则,查找下一条线段。然后在i-1行取第二条线段L2,采用UnConnective函数或Connective函数判断线段L0与线段L2的相邻关系,如果相邻,则将线段L2的终点值存入第i-1行表头结点,释放线段L2。如此重复,直到i-1行所有线段处理完毕;然后i-1行成为新的i行,重复处理,直到整幅图像处理完成。
本发明具有的有益的效果是将数字图像上同一特征类型的连续的像素点被表示成线段,可减少数据处理量,提高处理速度,且处理速度与图像大小基本无关;滤波、区域生长、对象边界数据提取操作可一次完成。


图1数字图像及其描述方法示意图;图2是线段结点的结构示意图;图3是纵坐标相邻的两条线段之间不相邻接的情况示意图;图4是纵坐标相邻的两条线段之间相邻接的情况示意图;图5是数字图像1的原始图像;图6是数字图像1的二值化图像;图7是数字图像1经过本方法处理后分割得到的对象;图8是数字图像1经过本方法处理后得到的边界;图9是数字图像2的原始图像;图10是数字图像2的二值化图像;图11是数字图像2回溯处理前分割得到的对象;图12是数字图像2回溯处理后分割得到的对象。
具体实施例方式
如图1所示,一幅数字图像由三层结构组成图像表ImageTable、行表RowTable及线段结点LineNode。
如图2所示,线段结点LineNode是一个由三个域Start域、End域及Next组成的自定义结构,可用C语言作如下描述struct LineNode{int Start;//线段起点int End;//线段终点struct LineNode*next;//后继指针};Start域和End域分别代表一条线段的起点和终点,Next域为指向下一条线段的指针。
行表RowTable是一个带头结点的单链表,结点类型LineNode类型,由数字图像上一行所有线段组成,代表数字图像的一行数据。
图像表ImageTable是结点类型为LineNode类型的一维数组,其长度等于数字图像高度;结点的下标与数字图像的列号相对应,每个结点的Next域指向数字图像的一个行表RowTable,结点的下标即为该行线段的纵坐标。
数字图像按下述方式处理后可转换成线段描述方式1)首先对数字图像按处理目的进行二值化处理,处理后的图像分别由0和1代表背景和目标。
2)创建图像表ImageTable,其结点类型为LineNode型,其长度等于数字图像高度。创建bool型标志变量LineStart域Tag,其初始值设为false。创建LineNode型指针变量pLineCurrent。
3)对数字图像从0行开始按自上而下进行的次序进行逐行扫描,对每一行按从左至右的次序进行扫描。这里,用变量i表示行号扫描前。扫描前,先动态生成一个LineNode型结点,作为行表RowTable的头结点,该头结点由ImageTable.Next域指示,并执行pLineCurrent=ImageTable.Next操作,使pLineCurrent指向头结点。然后开始进行行扫描如果当前像素值为1且LineStart域Tag为false,则动态生成一个LineNode型结点,由pLineCurrent->Next域指示,并执行下面的操作pLineCurrent=pLinCurrent->Next在该操作执行后,新生成的结点由pLineCurrent指示。然后将当前横坐标值写入新结点的Start域,LineStart域Tag设为true。然后继续扫描,直到找到第一个像素值为0的像素点,此时将当前横坐标值写入新结点的End域,并将LineStart域Tag设为false。在一行扫描完成后,执行pLineCurrent->Next=NULL,指示该行结束。
在所有行扫描结束后,即可将数字图像转换成线段描述方式。
在上述步骤完成之后,还需对图像进行进一步的处理,如滤波、区域生长、对象边界数据提取等操作,这些操作要利用纵坐标相邻的两条线段之间的邻接关系进行。
纵坐标相邻的两条线段之间的邻接关系用相邻接和不相邻接表示。其定义如下对于纵坐标相邻的两条线段L1,L2,如果存在横坐标值xx∈L1且x∈L2 (1)则称这两条线段L1,L2相邻接,否则,称这两条线段不相邻接。
如图3所示,纵坐标相邻的两条线段之间不相邻接。从图中可以看出,两条线段不相邻存在2种情况即
L1.Start域>L2.End域 (2)或L1.End域<L2.Start域 (3)如图4所示,纵坐标相邻的两条线段之间相邻接。从图中可以看出,两条线段不相邻只存在4种情况即L2.Start域<L1.Start域>L2.End域 (4)或L2.Start域<L1.End域>L2.End域 (5)或L1.Start域<L2.Start域>L1.End域 (6)或L1.Start域<L2.End域>L1.End域 (7)在编程实现时,利用公式(2)和公式(3)编制一个函数UnConnective,将纵坐标相邻的两条线段作为参数输入到一个函数,根据公式(2)和公式(3)判断其相邻关系,如果满足其中一个条件,则函数返回false,表示这两条线段不相邻,否则返回true,表示这两条线段相邻。也可利用公式(4)~(7)编制另一个函数Connective,将纵坐标相邻的两条线段作为参数输入到一个函数,根据公式(4)~(7)判断其相邻关系,如果满足其中一个条件,则函数返回true,表示这两条线段相邻,否则返回false,表示这两条线段不相邻。
滤波、区域生长、对象边界数据提取等操作按下述步骤进行1)对图像按自上而下的次序进行扫描,从中第i行取出一条线段L0,将其起点和终点值分别存入第i行表头结点,释放线段L0。
2)在i+1行取第一条线段L1,采用UnConnective函数或Connective函数判断线段L0与线段L1的相邻关系,如果相邻,则将线段L1的起点和终点值存入第i+1行图像表结点,并释放线段L0,否则,查找下一条线段。然后在i+1行取第二条线段L2,采用UnConnective函数或Connective函数判断线段L0与线段L2的相邻关系,如果相邻,则将线段L2的终点值存入第i+1行表头结点,释放线段L2。如此重复,直到i+1行所有线段处理完毕。
3)i+1行成为新的第i行,图像表上结点i+1的Start域值和End域值分别成为线段L0的起点和终点,重复操作2)。
4)当i+1行扫描完毕,没有新的相邻线段加入时,则表明图像中一个区域已生长完成,此时判断存放在表头结点的对象大小,如果小于设定的阈值,则说明该区域为噪声,应舍去。然后重复1)~3)。否则,说明对象的边界区域已基本确定,可退出循环。
5)回溯对图像按自下而上的次序进行扫描,由图像表结点i的Start域值和End域值组成线段L0,在i-1行取第一条线段L1,采用UnConnective函数或Connective函数判断线段L0与线段L1的相邻关系,如果相邻,则将线段L1的起点和终点值存入第i-1行图像表结点,并释放线段L0,否则,查找下一条线段。然后在i-1行取第二条线段L2,采用UnConnective函数或Connective函数判断线段L0与线段L2的相邻关系,如果相邻,则将线段L2的终点值存入第i-1行表头结点,释放线段L2。如此重复,直到i-1行所有线段处理完毕;然后i-1行成为新的i行,重复处理,直到整幅图像处理完成。
在整幅图像扫描完成后,对象的边界数据就存放在图像表结点中。
图5~图8是对数字图像1(柑桔图像)用上述方法进行处理的结果,图5为原始图像,图6为二值化图像,图7本方法处理后分割得到的对象,图8是数字图像1经过本方法处理后得到的边界。从中可以看出,该图像经本方法处理后,由于二值分割不完美而引起的水果内部区域缺失被自动补齐了。
图9~图12是对数字图像2(柑桔图像)用上述方法进行处理的结果,图9为原始图像,图10为二值化图像,图11是数字图像2回溯处理前分割得到的对象,图12是数字图像2回溯处理后分割得到的对象。从中可以看出,回溯处理前,图11的B区缺失了,经过回溯处理后,B区得到了恢复。
权利要求
1.一种数字图像的线段描述方法,其特征在于一幅数字图像由三层结构描述图像表ImageTable、行表RowTable及线段结点LineNode,其中1)线段结点LineNode是一个由三个域Start域、End域及Next组成的自定义结构,Start域和End域分别代表一条线段的起点和终点横坐标,Next域为指向下一条线段的指针;2)行表RowTable是图像上同一行所有线段结点组成的单链表,代表数字图像上的一行图像;3)图像表ImageTable是结点类型与LineNode相同且长度等于数字图像高度的一维数组,其结点的Next域指向代表数字图像某一行的行表RowTable,并反映该行的纵坐标;4)数字图像按下面的方法处理后可转换成线段描述方式对二值化处理后的数字图像从上到下按行扫描,对每一行按从左到右的次序扫描,将每一行中连续的可能代表对象的像素点用线段结点LineNode记录,每一行图像上的所有线段结点之间通过线段结点的Next域链接成行表RowTable,行表RowTable由与该行序号相对应的图像表ImageTable的结点的Next域指示;数字图像的滤波、区域生长、对象边界数据提取操作依靠纵坐标相邻的线段之间的邻接关系进行,对象的边界数据存贮于图像表的Start域和End域内。
2.根据权利要求1所述的一种数字图像的线段描述方法,其特征在于所述的纵坐标相邻的线段之间的邻接关系,是指对于纵坐标相邻的两条线段L1,L2,如果存在横坐标值xx∈L1且x∈L2 (1)则称这两条线段L1,L2相邻接。否则,称这两条线段不相邻接。纵坐标相邻的两条线段L1,L2不相邻存在2种情况,即;L1.Start域>L2.End域 (2)或L1.End域<L2.Start域 (3)纵坐标相邻的两条线段不相邻只存在4种情况,即L2.Start域<L1.Start域>L2.End域 (4)或L2.Start域<L1.End域>L2.End域 (5)或L1.Start域<L2.Start域>L1.End域(6)或L1.Start域<L2.End域>L1.End域 (7)在编程实现时,利用公式(2)和公式(3)编制一个函数UnConnective,将纵坐标相邻的两条线段作为参数输入到一个函数,根据公式(2)和公式(3)判断其相邻关系,如果满足其中一个条件,则函数返回false,表示这两条线段不相邻;否则返回true,表示这两条线段相邻。利用公式(4)~(7)编制成另一个函数Connective,将纵坐标相邻的两条线段作为参数输入到一个函数,根据公式(4)~(7)判断其相邻关系,如果满足其中一个条件,则函数返回true,表示这两条线段相邻,否则返回false,表示这两条线段不相邻。
3.根据权利要求1所述的一种数字图像的线段描述方法,其特征在于所述的数字图像的滤波、区域生长、对象边界数据提取操作,是指1)对图像按自上而下的次序进行扫描,从中第i行取出一条线段L0,将其起点和终点值分别存入第i行表头结点,释放线段L0;2)在i+1行取第一条线段L1,采用UnConnective函数或Connective函数判断线段L0与线段L1的相邻关系,如果相邻,则将线段L1的起点和终点值存入第i+1行图像表结点,并释放线段L0,否则,查找下一条线段;然后在i+1行取第二条线段L2,采用UnConnective函数或Connective函数判断线段L0与线段L2的相邻关系,如果相邻,则将线段L2的终点值存入第i+1行表头结点,释放线段L2;如此重复,直到i+1行所有线段处理完毕;3)i+1行成为新的第i行,图像表上结点i+1的Start域值和End域值分别成为线段L0的起点和终点,重复操作2);4)当i+1行扫描完毕,没有新的相邻线段加入时,则表明图像中一个区域已生长完成,此时判断存放在表头结点的对象大小,如果小于设定的阈值,则说明该区域为噪声,应舍去。然后重复1)~3);否则,说明对象的边界区域已基本确定,可退出循环;5)回溯对图像按自下而上的次序进行扫描,由图像表结点i的Start域值和End域值组成线段L0,在i-1行取第一条线段L1,采用UnConnective函数或Connective函数判断线段L0与线段L1的相邻关系,如果相邻,则将线段L1的起点和终点值存入第i-1行图像表结点,并释放线段L0,否则,查找下一条线段。然后在i-1行取第二条线段L2,采用UnConnective函数或Connective函数判断线段L0与线段L2的相邻关系,如果相邻,则将线段L2的终点值存入第i-1行表头结点,释放线段L2。如此重复,直到i-1行所有线段处理完毕;然后i-1行成为新的i行,重复处理,直到整幅图像处理完成。
全文摘要
本发明公开了一种数字图像的线段描述方法,由图像表、行表及线段结点描述;线段结点包括Start域、End域及Next等3个域;行表是同一行上线段结点组成的单链表;图像表是由线段结点组成且长度为图像高度的一维数组,其结点的Next域指向对应的行表,并反映该行的纵坐标;数字图像的滤波、区域生长、对象边界数据提取等操作依靠纵坐标相邻的线段之间的邻接关系进行,提取的对象边界数据存贮于图像表的Start域和End域内;本发明将数字图像上特征相同的连续像素点用线段表示,可减少数据处理量,提高处理速度,且处理速度与图像大小基本无关;滤波、区域生长、对象边界数据提取等操作可一次完成。
文档编号G06T7/60GK1619594SQ20041008918
公开日2005年5月25日 申请日期2004年11月30日 优先权日2004年11月30日
发明者饶秀勤, 应义斌 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1