一种对曲线进行熵编码的方法转让专利

申请号 : CN201410029504.6

文献号 : CN103761754B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 吴参毅

申请人 : 浙江宇视科技有限公司

摘要 :

本发明提供一种曲线熵编码的方法,该方法包括:对该曲线起始象素点位置进行编码;对该曲线起始象素点的方向进行编码,该方向编码用3个比特进行绝对编码;对除起始象素点之外的其它象素点的方向依次进行编码,具体为:对该曲线第n个象素点的方向进行编码,该方向编码用相对于第n‑1个象素点的方向进行相对编码,n为大于等于2的自然数。本发明对曲线进行编码的方案在清楚表示一条曲线的同时实现了编码数据量小的目的。

权利要求 :

1.一种曲线熵编码的方法,其特征在于,该方法包括:对该曲线起始象素点位置进行编码;对该曲线起始象素点的方向进行编码,该方向编码用3个比特进行绝对编码;对除起始象素点之外的其它象素点的方向依次进行编码,具体为:在对该曲线第n个象素点的方向进行编码,该方向编码用相对于第n-1个象素点的方向进行相对编码,n为大于等于2的自然数;对该曲线的层次进行编码。

2.如权利要求1所述的方法,其特征在于,当n大于等于3,且第n-1个象素点相对于第n-

2个象素点的方向为“向左前”或者“向左”或者“向左后”,则对该曲线第n个象素点的方向进行编码具体为:

A编码方式:如果第n个象素点的方向与第n-1个象素点的方向同向,则编码为0;如果第n个象素点的方向相对于第n-1个象素点的方向为向左前,则编码为10;如果第n个象素点的方向相对于第n-1个象素点的方向为向右前,则编码为110;如果第n个象素点的方向相对于第n-1个象素点的方向为向左,则编码为1110;如果第n个象素点的方向相对于第n-1个象素点的方向为向右,则编码为11110;如果第n个象素点的方向相对于第n-1个象素点的方向为向左后,则编码为111110;如果第n个象素点的方向相对于第n-1个象素点的方向为向右后,则编码为1111110;

当n大于等于3,且第n-1个象素点相对于第n-2个象素点的方向为“向右前”或者“向右”或者“向右后”,则对该曲线第n个象素点的方向进行编码具体为:B编码方式:如果第n个象素点的方向与第n-1个象素点的方向同向,则编码为0;如果第n个象素点的方向相对于第n-1个象素点的方向为向右前,则编码为10;如果第n个象素点的方向相对于第n-1个象素点的方向为向左前,则编码为110;如果第n个象素点的方向相对于第n-1个象素点的方向为向右,则编码为1110;如果第n个象素点的方向相对于第n-1个象素点的方向为向左,则编码为11110;如果第n个象素点的方向相对于第n-1个象素点的方向为向右后,则编码为111110;如果第n个象素点的方向相对于第n-1个象素点的方向为向左后,则编码为1111110;

当n等于2时或者,当n大于等于3且第n-1个象素点相对于第n-2个象素点的方向为同向时,该对曲线第n个象素点的方向进行编码具体为:A编码方式或者B编码方式。

3.如权利要求1所述的方法,其特征在于,当n大于等于3,且第n-1个象素点相对于第n-

2个象素点的方向为“向左前”或者“向左”或者“向左后”,则对该曲线第n个象素点的方向进行编码具体为:

C编码方式:如果第n个象素点的方向与第n-1个象素点的方向同向,则编码为1;如果第n个象素点的方向相对于第n-1个象素点的方向为向左前,则编码为01;如果第n个象素点的方向相对于第n-1个象素点的方向为向右前,则编码为001;如果第n个象素点的方向相对于第n-1个象素点的方向为向左,则编码为0001;如果第n个象素点的方向相对于第n-1个象素点的方向为向右,则编码为00001;如果第n个象素点的方向相对于第n-1个象素点的方向为向左后,则编码为000001;如果第n个象素点的方向相对于第n-1个象素点的方向为向右后,则编码为0000001;

当n大于等于3,且第n-1个象素点相对于第n-2个象素点的方向为“向右前”或者“向右”或者“向右后”,则对该曲线第n个象素点的方向进行编码具体为:D编码方式:如果第n个象素点的方向与第n-1个象素点的方向同向,则编码为1;如果第n个象素点的方向相对于第n-1个象素点的方向为向右前,则编码为01;如果第n个象素点的方向相对于第n-1个象素点的方向为向左前,则编码为001;如果第n个象素点的方向相对于第n-1个象素点的方向为向右,则编码为0001;如果第n个象素点的方向相对于第n-1个象素点的方向为向左,则编码为00001;如果第n个象素点的方向相对于第n-1个象素点的方向为向右后,则编码为000001;如果第n个象素点的方向相对于第n-1个象素点的方向为向左后,则编码为0000001;

当n等于2时或者,当n大于等于3且第n-1个象素点相对于第n-2个象素点的方向为同向时,该对曲线第n个象素点的方向进行编码具体为:C编码方式或者D编码方式。

4.如权利要求1所述的方法,其特征在于,对该曲线起始象素点位置进行编码具体为:

该起始象素点位置用坐标表示,其中1个比特表示起始象素点坐标属性,2个比特表示坐标字节数,与该坐标字节数对应的比特位数表示起始象素点的坐标值。

5.如权利要求1所述的方法,其特征在于,该方法进一步对该曲线的长度进行编码。

6.如权利要求5所述的方法,其特征在于,2个比特表示长度字节数,与该长度字节数对应的比特位数表示曲线的长度值,该曲线长度以象素点为单位。

7.如权利要求1所述的方法,其特征在于,用2个比特表示曲线的层次。

8.如权利要求1所述的方法,其特征在于,该方法进一步对该曲线的闭合性进行编码。

9.如权利要求8所述的方法,其特征在于,用1个比特表示该曲线的闭合性。

说明书 :

一种对曲线进行熵编码的方法

技术领域

[0001] 本发明涉及图象编码技术领域,尤其涉及一种对曲线进行熵编码的方法。

背景技术

[0002] 在视频监控以及图像智能分析领域,需要从图像中提取物体,或者从运动视频中提取运动前景,或者在图像中提取不同颜色区域等。在进行上述提取操作时会形成很多边缘或者轮廓曲线。这些曲线作为特征是需要进行保存和传输的。所以当前就有必要设计一种方法来表示该曲线,并尽可能的降低其中的冗余信息。
[0003] 现有技术中,通常使用曲线的每一点坐标来表示该曲线。该方案虽然剔除了非曲线背景信息,但是使用坐标表示,尤其对HD(High Definition,高清)或者UHD(Ultra High Definition,超高清)这样的大分辨率图像来说,数据量仍然很大。

发明内容

[0004] 有鉴于此,本发明提供一种对曲线进行熵编码的方法。
[0005] 本发明技术的实现方案如下:
[0006] 一种曲线熵编码的方法,该方法包括:对该曲线起始象素点位置进行编码;对该曲线起始象素点的方向进行编码,该方向编码用3个比特进行绝对编码;对除起始象素点之外的其它象素点的方向依次进行编码,具体为:在对该曲线第n个象素点的方向进行编码,该方向编码用相对于第n-1个象素点的方向进行相对编码,n为大于等于2的自然数。
[0007] 优选地,当n大于等于3,且第n-1个象素点相对于第n-2个象素点的方向为“向左前”或者“向左”或者“向左后”,则对该曲线第n个象素点的方向进行编码具体为:
[0008] A编码方式:如果第n个象素点的方向与第n-1个象素点的方向同向,则编码为0;如果第n个象素点的方向相对于第n-1个象素点的方向为向左前,则编码为10;如果第n个象素点的方向相对于第n-1个象素点的方向为向右前,则编码为110;如果第n个象素点的方向相对于第n-1个象素点的方向为向左,则编码为1110;如果第n个象素点的方向相对于第n-1个象素点的方向为向右,则编码为11110;如果第n个象素点的方向相对于第n-1个象素点的方向为向左后,则编码为111110;如果第n个象素点的方向相对于第n-1个象素点的方向为向右后,则编码为1111110;
[0009] 当n大于等于3,且第n-1个象素点相对于第n-2个象素点的方向为“向右前”或者“向右”或者“向右后”,则对该曲线第n个象素点的方向进行编码具体为:
[0010] B编码方式:如果第n个象素点的方向与第n-1个象素点的方向同向,则编码为0;如果第n个象素点的方向相对于第n-1个象素点的方向为向右前,则编码为10;如果第n个象素点的方向相对于第n-1个象素点的方向为向左前,则编码为110;如果第n个象素点的方向相对于第n-1个象素点的方向为向右,则编码为1110;如果第n个象素点的方向相对于第n-1个象素点的方向为向左,则编码为11110;如果第n个象素点的方向相对于第n-1个象素点的方向为向右后,则编码为111110;如果第n个象素点的方向相对于第n-1个象素点的方向为向左后,则编码为1111110;
[0011] 当n等于2时或者,当n大于等于3且第n-1个象素点相对于第n-2个象素点的方向为同向时,该对曲线第n个象素点的方向进行编码具体为:A编码方式或者B编码方式。
[0012] 优选地,当n大于等于3,且第n-1个象素点相对于第n-2个象素点的方向为“向左前”或者“向左”或者“向左后”,则对该曲线第n个象素点的方向进行编码具体为:
[0013] C编码方式:如果第n个象素点的方向与第n-1个象素点的方向同向,则编码为1;如果第n个象素点的方向相对于第n-1个象素点的方向为向左前,则编码为01;如果第n个象素点的方向相对于第n-1个象素点的方向为向右前,则编码为001;如果第n个象素点的方向相对于第n-1个象素点的方向为向左,则编码为0001;如果第n个象素点的方向相对于第n-1个象素点的方向为向右,则编码为00001;如果第n个象素点的方向相对于第n-1个象素点的方向为向左后,则编码为000001;如果第n个象素点的方向相对于第n-1个象素点的方向为向右后,则编码为0000001;
[0014] 当n大于等于3,且第n-1个象素点相对于第n-2个象素点的方向为“向右前”或者“向右”或者“向右后”,则对该曲线第n个象素点的方向进行编码具体为:
[0015] D编码方式:如果第n个象素点的方向与第n-1个象素点的方向同向,则编码为1;如果第n个象素点的方向相对于第n-1个象素点的方向为向右前,则编码为01;如果第n个象素点的方向相对于第n-1个象素点的方向为向左前,则编码为001;如果第n个象素点的方向相对于第n-1个象素点的方向为向右,则编码为0001;如果第n个象素点的方向相对于第n-1个象素点的方向为向左,则编码为00001;如果第n个象素点的方向相对于第n-1个象素点的方向为向右后,则编码为000001;如果第n个象素点的方向相对于第n-1个象素点的方向为向左后,则编码为0000001;
[0016] 当n等于2时或者,当n大于等于3且第n-1个象素点相对于第n-2个象素点的方向为同向时,该对该曲线第n个象素点的方向进行编码具体为:C编码方式或者D编码方式。
[0017] 优选地,对该曲线起始象素点位置进行编码具体为:该起始象素点位置用坐标表示,其中1个比特表示起始象素点坐标属性,2个比特表示坐标字节数,与该坐标字节数对应的比特位数表示起始象素点的坐标值。
[0018] 优选地,该方法进一步对该曲线的长度进行编码。
[0019] 优选地,2个比特表示长度字节数,与该长度字节数对应的比特位数表示曲线的长度值,该曲线长度以象素点为单位。
[0020] 优选地,该方法进一步对该曲线的层次进行编码。
[0021] 优选地,用2个比特表示曲线的层次。
[0022] 优选地,该方法进一步对该曲线的闭合性进行编码。
[0023] 优选地,用1个比特表示该曲线的闭合性。
[0024] 相较于现有技术,本发明对曲线进行编码的方案在清楚表示一条曲线的同时实现了编码数据量小的目的。

附图说明

[0025] 图1是象素点的方向图。
[0026] 图2是曲线起始位置属性图。
[0027] 图3是象素点的相对方向图。
[0028] 图4是曲线方向示例。
[0029] 图5是起始位置属性图。

具体实施方式

[0030] 为了解决背景技术中提到的对曲线编码信息量较大的问题,本发明提供一种曲线熵编码的方法。众所周知,熵编码法是一种进行无损数据压缩的技术。在这个技术中一段文字中的每个字母、数字、或符号等被一段不同长度的比特(Bit)所代替。所有的字母、数字、或符号等在压缩后需要能互相区别,并且表示的比特数要最小。本发明技术将详细阐述如何运用熵编码的思想对曲线进行熵编码,以达到数据量小且能完整的表示该曲线的目的。以下通过具体实施例详细描述。
[0031] 若干个象素点依次连接构成了一条曲线。为了表示这条曲线,以下方式被认为是一种比较理想的方式:描述曲线起始象素点位置、起始象素点方向以及除起始象素点外的其他象素点的方向。需要说明的是,本文中所说的象素点方向指的是该象素点到它的下一个象素点的指向。请参图1,一个象素点的方向可能存在8种情况,分别为向前、向后、向左、向右、向左前、向右前、向左后、向右后。在描述起始象素点的方向的时候采用绝对方向;在描述除起始象素点之外的其他象素点的方向的时候采用相对方向。具体的编码方式下文将详细说明。
[0032] 一条曲线的起始象素点可以选择该曲线上最左上角的象素点。在对该起始象素点的位置进行编码的时候,可以对该起始象素点的象素坐标进行编码,也可以对该象素点归一化后的坐标进行编码。所谓象素坐标指的是象素点在图像中的象素位置(x,y)。归一化坐标以宽或高为单位“1”表示,起始象素点横坐标以图像像素宽度为单位1进行浮点数表示,纵坐标以图像像素高度为单位1进行浮点数表示。请参图2,在对起始象素点位置进行编码的时候,用一定数量的比特位表示出起始象素点坐标属性,坐标位数以及坐标值。比如,用1个比特表示该坐标属性:0表示使用象素坐标表示后面的起始象素点坐标(x,y),1表示使用归一化坐标表示后面的起始象素点坐标(x,y)。比如,用2个比特表示起始象素点坐标x和y的字节数:“01”表示用1个字节表示坐标值x,1个字节表示坐标值y;“10”表示用2个字节表示坐标值x,2个字节表示坐标值y;“11”表示用4个字节表示坐标值x,4个字节表示坐标值y;“00”作为“保留”比特。用与该坐标字节数对应的比特位数表示起始象素点的坐标值x和y。
[0033] 起始象素点的方向用3个比特进行编码。比如:“向前”编码为000,“向后”编码为001、“向右”编码为010、“向左”编码为011、“向左前”编码为100、“向右后”编码为101、“向右上”编码为110、“向左下”编码为111。这里的编码方式仅是一个例子,实际上完全可以有其他的编码方式,比如说“向前”编码为100,“向后”编码为000等。
[0034] 在对除起始象素点之外的其他象素点的方向进行编码的时候对该象素点的相对方向进行编码。该相对方向以前一个象素点的方向作为参考。对起始象素点来说,它的方向有8种可能。但对该起始象素点的下一个象素点来说,其方向只有7种。请参图3,黑色箭头表示第n-1个象素点的方向,灰色箭头表示第n个象素点可能的方向。图3的a中当第n-1个象素点的方向为“向前”时,第n个象素点的方向相对于该第n-1个象素点来讲,可能是同向,即向前、可能是“向右前”、可能是“向左前”、可能是“向右”、可能是“向左”、可能是“向右后”、可能是“向左后”这7种方向。图3的b~d中,第n-1个象素点的方向分别为向后、向右和向左;同样的,第n个象素点的方向相对于第n-1个象素点来讲也是上述这7种情况。根据统计发现,所述的7种方向出现的概率是不相同的:下一个象素点的走向和上一个点的走向相同的概率要大于其它方向的概率;同时现实世界中,物体的边缘缓慢变化的概率大于剧烈变化的概率,即“向左前”和“向右前”的概率大于“向左”和“向右”的概率,而“向左”和“向右”的概率大于“向左后”和“向右后”的概率。进一步地,在第n-1个象素点的方向相对于第n-2个象素点为“向左前”或者“向左”或者“向左后”的情况下,可以确认第n个象素点发生左偏的概率要大于右偏的概率,此时对第n(n≥3)个象素点的方向进行编码的时候,参照表1。在第n-1个象素点的方向相对于第n-2个象素点为“向右前”或者“向右”或者“向右后”的情况下,可以确认第n个象素点发生右偏的概率要大于左偏的概率,此时对第n(n≥3)个象素点的方向进行编码的时候,参照表2。
[0035]
[0036] 表1
[0037]
[0038]
[0039] 表2
[0040] 从表1和表2可以看出,第n个象素点的方向相对于第n-1个象素点来说出现概率最大的,用最少的比特位表示,出现概率最小的,用最多的比特位表示,由此达到编码数据量最小的目的。
[0041] 曲线上的第二个象素点,即起始象素点的下一个象素点的方向在进行编码的时候,可以使用表1或者表2的方式进行编码,即可以进行默认设置。另外,对于第n-1个象素点的方向相对于第n-2个象素点为同向的情况,在对第n(n≥3)个象素点进行编码时,可以选择表1或者表2任一种方式进行编码,因为此时第n个象素点左偏或者右偏的概率是相等的。
[0042] 另外,对于表1和表2的编码方式,很明显可以用表3和表4的方式进行替代,即原先比特位为0的改成1,而1的则改成0。
[0043]
[0044] 表3
[0045]
[0046] 表4
[0047] 请参图4的例子,起始象素点的方向“向右”,参考前文的起始象素点编码举例,用比特“010”进行编码。第二个象素点的方向相对于第一个象素点的方向为“向左前”,如果对第2个象素点的方向编码默认设置为表1,则查表1得出用比特“10”表示。由于第二个象素点的方向相对于第一个象素点的方向为“向左前”,故在对第三个象素点的方向进行编码时需要查表1;由于第三个象素点的方向相对于第二个象素点的方向为“同向”,所以用比特“0”编码。由于第三个象素点的方向相对于第二个象素点的方向为“同向”,所以在对第四个象素点的方向进行编码时,可以查表1,也可以查表2,假设默认设置为查表1,则由于第四个象素点的方向相对于第三个象素点的方向为“向右前”,故查表1得到用比特“110”编码。故,示例曲线的方向最后编码为“010100110”。
[0048] 在对一条曲线的起始象素点位置、起始象素点方向以及除起始象素点外的其他象素点的方向都进行编码后该曲线即可被确定。由于本发明在对除起始象素点外的其他象素点方向进行编码的时候,采用了相对方向进行编码,并且结合了象素点各可能方向概率大小设计编码,即概率大,比特位少,概率小,比特位多,从而实现了编码数据量小的目的。
[0049] 在实际应用中,电警、卡口抓拍车辆图像后,提取出车辆的轮廓,该车辆轮廓可用本发明的曲线编码技术表示。对于一个车的轮廓,其大部分象素点的方向都是同向的,所以对这些象素点的方向进行编码的时候,数据量比较小,能达到熵编码的目的。所以,本发明技术在视频监控领域将有广泛的应用。当然除了该领域外,其他在需要表示曲线的应用中,也可使用本发明技术。
[0050] 对于一条曲线,除了前文所述的起始象素点位置,起始象素点方向以及其他象素点方向属性外,还可以包括其他属性,比如说长度属性、层次属性、闭合属性。如果对曲线的这些属性进一步编码,可以使得曲线的表示更完整并且还有校验之前几个属性编码正确与否的作用。下面就进一步对曲线的长度、层次以及闭合性编码进行描述。
[0051] 在对该曲线的长度进行编码的时候,可以用2个比特表示长度字节数,并且用与该长度字节数对应的比特位数表示曲线的长度值,该曲线长度可以以象素点为单位进行表示,请参图5。
[0052] 在对该曲线的层次进行编码的时候,可以用2个比特表示曲线的层次。对图像中的一条曲线来说,该曲线可能是物体的一个边缘,该边缘可能是物体的内缘,外缘,也可能是物体内部所在边界线,或者物体不同色域或者不同纹理区域的分割线。这样这些曲线就具有一定的层次性。在对该曲线编码的时候,可以用2个比特位把这些信息表示出来。比如说,内层线用01表示,中间层线用10表示,外层线用11表示。
[0053] 此外曲线还具有是否闭合的属性。曲线闭合与否的表示相对比较简单,可以用1个比特表示。比如0表示闭合,1表示非闭合。
[0054] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。