一种快速检测jpeg图片文件是否正确的嵌入式装置及方法_2

文档序号:8209000阅读:来源:国知局
rker段计数器的初始化单元1、获取JPEG文件大小并读取JPEG流文件的获取单元2、Marker段扫描的扫描单元3以及处理单元4。
[0027]一种快速检测JPEG图片文件是否正确的方法,包括以下步骤:
[0028]I)初始化 S10/DQT/S0F/DHT/S0S 五个 Marker 段计数器都为 O ;
[0029]2)流文件打开JPEG文件,并获得JPEG文件大小;
[0030]3)读取JPEG流文件内容,并逐字符进行扫描,即Marker段扫描;
[0031]4)针对S1、DQT、SOF、DHT、SOS、DR1、COM、APP段后面紧跟着2个字节的段长度,判断当前位置偏移此记录的长度后是否会超出步骤2)中获得的JPEG文件大小,如超出判断JPEG图片NG ;如果没有超出,则往后Seek文件Marker段length位置后;如Seek完之后并非JPEG文件结尾处,则判断读取的字符如果不是Marker段标记OxFF值,如不是OxFF码值,则判断JPEG文件NG ;
[0032]5)统计S10、DQT、S0F、DHT、S0S段是否至少出现过I次,如果有I种类型出现次数少于I次则判断为JPEG文件NG。
[0033]6)如果步骤I) 一步骤5)没有把JPEG图片文件判为NG,则JPEG图片文件为0K。
[0034]6.1)以流文件的方式打开待检查的JPEG文件,从文件开头往后扫描,JPEG文件Maker段都是以OxFF开头,直接检索OxFF的内容;
[0035]6.2)扫描过程中统计标记码(OxFF)后面的S1 (0xD8)、DQT (OxDB)、S0F(0xC0-0xC3、0xC5-0xCB、0xCD-0xCF)、DHT(0xC4)、SOS (OxDA)关键 Maker 段出现的次数,如JPEG文件缺少他们中任何一个Marker段,则直接将JPEG图片文件判断为NG ;
[0036]6.3)扫描过程中对有段长度信息的Marker段:S10(0xD8)、DQT (OxDB)、S0F(0xC0-0xC3、0xC5-0xCB、0xCD-0xCF)、DHT (0xC4)、SOS (OxDA)、DRI (OxDD)、COM (OxFE)、APP (OxEO-OxEF)做验算;
[0037]6.4)根据步骤6.3) Marker段文件在JPEG文件的起始位置以及配合他们的长度与JPEG文件总大小做对比,如果【Maker段文件起始+Maker段长度】大于【JPEG文件总大小】,则判断JPEG图片文件为NG ;否则,再直接根据取得Marker段长度直接跳过这些Marker段,如果后面还有数据,则判断下个Marker段开始是否为新Maker开始标记(OxFF),,如字符不是(OxFF)标记,则将JPEG图片文件判断为NG。
[0038]6.5)扫描到文件结束,如果前面的步骤没有将文件判断为NG,则可认为JPEG文件是OK的。
[0039]因为缺少关键Marker段可以避免非JPEG格式充当JPEG格式被进行解码,也可避免JPEG文件关键Marker段的不完整而解码出错。且因为会对有Marker段长度的逻辑合理性进行判断(结合Marker段在文件起始位置与文件大小对比),文件大小或Marker段长度如果被篡改过就能被检查出来,至少大部分破坏长度异常的错误能被检查出来。再结合判断有长度Marker段后面新的数据开始的字符是否为新Marker段开始标记(OxFF),就可以判别出来当前的Marker段内容是否有被缩减或增加(因为缩短和增加很容易影响软件解码库或硬体解码对其后面Marker段的解码库的解析),那么此段开头Marker处记录的段长度之后就大部分情况都不会保持为OxFF的码值而被本发明检查出来NG。当然,如果有长度信息记载的Marker段内容数据如果只是等部分数据改变(而数据长度没有变化,即没有删减或增加数据),因为图像数据内容矩阵转换,大部分也只是数据解码出来的图像与原图有差异,但却可以避免Marker段在解析的时候发生错位段解码,进而避免Marker段错位发生严重的解码异常Except1n或当机。
[0040]可见这种快速检查JPEG的纯软件方式,算法简单,却能最大范围的避免软硬体解码库对有绝大部分错误内容的JPEG文件解码是发生异常Exc印t1n,从而大幅度提高了嵌入式装置对内容有错误的JPEG图像的解码的容错能力。
【主权项】
1.一种快速检测JPEG图片文件是否正确的嵌入式装置,其特征在于:所述嵌入式装置包括依次连接的初始化S1/DQT/SOF/DHT/SOS五个Marker段计数器的初始化单元、获取JPEG文件大小并读取JPEG流文件的获取单元、Marker段扫描的扫描单元以及处理单元。
2.一种快速检测JPEG图片文件是否正确的方法,其特征在于:所述方法包括以下步骤: .1)初始化S1/DQT/SOF/DHT/SOS五个Marker段计数器都为O; .2)流文件打开JPEG文件,并获得JPEG文件大小; .3)读取JPEG流文件内容,并逐字符进行扫描,即Marker段扫描; . 4)针对S1、DQT、SOF、DHT、SOS、DR1、COM、APP段后面紧跟着2个字节的段长度,判断当前位置偏移此记录的长度后是否会超出步骤2)中获得的JPEG文件大小,如超出判断JPEG图片NG ;如果没有超出,则往后Seek文件Marker段length位置后;如Seek万之后并非JPEG文件结尾处,则判断读取的字符如果不是Marker段标记OxFF值,如不是OxFF码值,则判断JPEG文件NG ; .5)统计S10、DQT、S0F、DHT、S0S段是否至少出现过I次,如果有I种类型出现次数少于I次则判断为JPEG文件NG。
3.根据权利要求2所述的快速检测JPEG图片文件是否正确的方法,其特征在于:所述步骤5)之后还包括步骤6)如果步骤I) 一步骤5)没有把JPEG图片文件判为NG,则JPEG图片文件为OK。
4.根据权利要求3所述的快速检测JPEG图片文件是否正确的方法,其特征在于:所述步骤6)具体是: .6.1)以流文件的方式打开待检查的JPEG文件,从文件开头往后扫描,JPEG文件Maker段都是以OxFF开头,直接检索OxFF的内容; . 6.2)扫描过程中统计标记码(OxFF)后面的 S10(0xD8)、DQT(OxDB)、SOF(0xC0_0xC3、0xC5-0xCB、0xCD-0xCF)、DHT (0xC4)、SOS (OxDA)关键 Maker 段出现的次数,如 JPEG 文件缺少他们中任何一个Marker段,则直接将JPEG图片文件判断为NG ; .6.3)扫描过程中对有段长度信息的Marker段:S10(0xD8)、DQT (OxDB)、S0F(0xC0-0xC3、0xC5-0xCB、0xCD-0xCF)、DHT (0xC4)、SOS (OxDA)、DRI (OxDD)、COM (OxFE)、APP (OxEO-OxEF)做验算; .6.4)根据步骤6.3)Marker段文件在JPEG文件的起始位置以及配合他们的长度与JPEG文件总大小做对比,如果【Maker段文件起始+Maker段长度】大于【JPEG文件总大小】,则判断JPEG图片文件为NG ;否则,再直接根据取得Marker段长度直接跳过这些Marker段,如果后面还有数据,则判断下个Marker段开始是否为新Maker开始标记(OxFF),如字符不是(OxFF)标记,则将JPEG图片文件判断为NG ; .6.5)扫描到文件结束,如果前面的步骤没有将文件判断为NG,则可认为JPEG文件是OK的。
【专利摘要】本发明提出了一种快速检测JPEG图片文件是否正确的嵌入式装置,嵌入式装置包括依次连接的初始SIO/DQT/SOF/DHT/SOS五个Marker段计数器的初始化单元、获取JPEG文件大小并读取JPEG流文件的获取单元、Marker段扫描的扫描单元以及处理单元。本发明一种快速检测JPEG图片文件是否正确的嵌入式装置及方法,极快速度就能判断出来JPEG文件是否格式正确,针对内容有误的JPEG文件,不需要修改硬件解码或软件解码库。
【IPC分类】G06F11-07
【公开号】CN104536843
【申请号】CN201410798857
【发明人】陈淮琰, 钟辉, 刘刚
【申请人】无敌科技(西安)有限公司
【公开日】2015年4月22日
【申请日】2014年12月18日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1