基于JPEG文件流的图片分割方法技术

技术编号:10022215 阅读:141 留言:0更新日期:2014-05-09 04:15
本发明专利技术公开了一种基于JPEG文件流的图片分割方法,步骤包括:步骤1、根据JPEG编码原理以及其数据流格式,获取图片的大小、重入间隔、采样因子信息;步骤2、根据JPEG图片大小和读出的重入间隔数计算图片的分割块数;步骤3、根据上述所分块数对JPEG图片进行分块,循环对JPEG图片进行分块读取。本发明专利技术的方法,有效的解决了尺寸各异尤其是超大图片耗费大量内存与时间,效率低下的问题,具有内存使用量小且稳定等优势。

【技术实现步骤摘要】
基于JPEG文件流的图片分割方法
本专利技术属于图像分割
,涉及一种基于JPEG文件流的图片分割方法。
技术介绍
随着科技的不断进步,数码相机的普及率也不断提高,数码照片的数量呈现爆炸性增长,大幅婚纱照、写真照片及广告图片十分普遍。对于冲印公司来说,要将尺寸大小不一、规格繁多的数码照片输出冲印到指定规格的相纸上,解决尺寸超大图片如何读入问题至关重要。超大图片读入问题属于图像分割问题,在此之前,图片分割算法的研究已经有几十年的历史,一直都受到人们的高度重视。关于图像分割的原理和方法国内外已有不少的研究成果,但一直以来没有一种分割方法适用于所有图像分割处理。然而,在实际操作中,对于影楼、写真馆、数码冲印部门来说,大部分数码图片都是JPEG格式的,超大图片耗费大量内存与读入时间,效率低下,因此,研究一种既能不失真的将JPEG图片进行分割读取,又能在读取尺寸各异尤其是超大尺寸的图片时不多占用计算机内存,具有巨大的应用价值。
技术实现思路
本专利技术的目的是提供一种基于JPEG文件流的图片分割方法,解决了现有技术中存在的读取尺寸各异尤其是超大尺寸的图片时占用较多计算机内存,读入时间较长,工作效率低下的问题。本专利技术所采用的技术方案是,一种基于JPEG文件流的图片分割方法,按照以下步骤具体实施:步骤1:根据标准JPEG文件的数据流格式,读取JPEG图片的大小和位置、分辨率、头文件结束位置、重入间隔数以及采样因子,参照表1中的JPEG文件的数据流格式实施;步骤2:根据JPEG图片大小和读出的重入间隔数计算图片的分割块数步骤2.1)根据步骤1获取的JPEG图片中不同颜色的采样因子,即Y、Cr、Cb三个分量各自的水平采样因子和垂直采样因子,确定最小编码单元MCU的大小;步骤2.2)根据步骤1中读出的JPEG图片宽度和步骤2.1)中得出的MCU的宽度大小计算宽度下的MCU的个数C,则有:C=W/w',其中的W为图片宽度,w'为MCU的宽度,若所求C不为整数,则将C取整数部分后加1;步骤2.3)根据步骤1读出的重入间隔数和C的个数计算每个重入间隔下的高度方向MCU的个数C',则有:C'=I/C,其中的I为重入间隔大小,C为宽度下的MCU的个数,进而计算出每个重入间隔的高度h,则有:h=C'*h',其中的h'为MCU高度;步骤2.4)计算重入间隔的数目M,则有:M=H/h',其中的H为图片高度,h'为MCU高度;步骤2.5)根据表1中的标准JPEG文件的数据流格式,将MCU块的单元中的重新开始间隔设为n,则表示每n个MCU块就有一个RSTn标记,第一个标记是RST0,第二个是RST1等,RST7后再从RST0重复,根据以上描述计算重入的0XFFD7的个数N',N'=M/8,若结果不为整数则取出不满足8的倍数的重入间隔数L,则有:L=M%8;步骤2.6)根据步骤2.5)计算出的重入0XFFD7的个数N'确定一个基数N,计算JPEG图片所分块数A,则有:A=N'/N,若所求块数不为整数,则计算余数M=N'%N,若余数M为8的整数倍,则A=A+1,否则A=A+2;步骤3、根据所分块数A对JPEG图片进行分块,循环对JPEG图片进行分块读取,按照三种具体情况分别进行读取。本专利技术的有益效果是,根据JPEG文件数据流格式,获取图片尺寸,根据所获取图片的尺寸智能化的确定图片所分块数;然后运用JPEG图片编码和解码流程和区域分割的方法,将图像中满足相似性准则的像素或子区域合成更大的区域,并且从整个图像出发,根据图像和各个区域的不均匀性,把图像分割成新的子区域,分局毗邻区域的均匀性,把毗邻的子区域合并成新的较大的区域。在实际操作中用户可以选定任意尺寸的图片读入进行排版,最后合成大图进行输出,有效的解决了超大图片耗费大量内存与时间,读入效率低下的问题,具有内存使用量小且稳定的优势。本专利技术方法对所有图片均有效,但对于超大图片,尤其是不能一次读入内存进行处理时的情况下,本专利技术的意义尤为突出。附图说明图1是本专利技术方法基于JPEG编码的原理示意图;图2是本专利技术方法中的图片最小编码单元序列;图3是本专利技术方法用于超大图片分割的实施例示意图。具体实施方式下面结合附图和具体实施方式对本专利技术进行详细说明。图1是本专利技术方法基于JPEG编码的原理示意图,JPEG图像编码是以最小编码单元(MinimumCodedUnit,MCU)进行编码,最小编码单元之间以差分编码算法进行编码,然后将编码写入JPEG文件数据流。本专利技术基于JPEG文件流的图片分割方法,按照以下步骤具体实施:步骤1:根据标准JPEG文件的数据流格式,读取JPEG图片的大小和位置、分辨率、头文件结束位置、重入间隔数以及采样因子,MCU块的单元中的重新开始间隔,例如为n,即每n个MCU块就有一个RSTn标记。第一个标记是RST0,第二个是RST1等,RST7后再从RST0重复。表1为JPEG文件的数据流格式。表1,标准JPEG文件的数据流格式段名标识码(Tag)说明SOIFFD8图像开始APP0FFE0JFIF应用数据块APPnFFE1-FFEn其他的应用数据块(n,1~15)DQTFFDB量化表SOF0FFC0帧开始DHTFFC4霍夫曼(Huffman)表SOSFFDA扫描线开始EOIFFD9图像结束步骤2:根据JPEG图片大小和读出的重入间隔数计算图片的分割块数步骤2.1)根据步骤1获取的JPEG图片中不同颜色的采样因子,即Y、Cr、Cb三个分量各自的水平采样因子和垂直采样因子,确定最小编码单元(MinimumCodedUnit,MCU)的大小。所谓MCU,是JPEG图片中一个正方矩阵像素的数据。大多数JPEG图片的采样因子为4:1:1或1:1:1。其中,4:1:1即(2*2):(1*1):(1*1));1:1:1即(1*1):(1*1):(1*1)。记三个分量中水平采样因子最大值为Hmax,垂直采样因子最大值为Vmax,那么单个MCU矩阵的宽就是Hmax*8像素,高就是Vmax*8像素。所以对于采样因子为4:1:1的图片,其MCU宽度和高度都为16像素;对于采样因子为1:1:1的图片,其MCU宽度和高度都为8像素,参照图2。图2是本专利技术方法实施例的图片最小编码单元序列,图2是一幅32px×36px的图像MCU序列,粗虚线表示各个MCU的分界,细虚线表示MCU内部数据单元的分界。假定此图的采样因子为4:1:1,则Hmax=2,Vmax=2,MCU的宽为16像素,高为16像素,该图像整体宽度恰好是两个MCU,整体高度则稍稍大于两个MCU的高度,所以要补足3行MCU。在JPEG数据流中,MCU的顺序是MCU1→MCU2→MCU3→MCU4→MCU5→MCU6。每个MCU又分为4个8×8的数据单元,分块读取数据流每次读取的就是整数倍的MCU。步骤2.2)根据步骤1中读出的JPEG图片宽度和步骤2.1)中得出的MCU的宽度大小计算宽度下的MCU的个数C,C=W/w',W为图片宽度,w'为MCU的宽度,若所求C不为整数,则将C取整数部分后加1;步骤2.3)根据步骤1读出的重入间隔数和C的个数计算每个重入间隔下的高度方向MCU的个数C',C'=I/C,I为重入间隔大小,C为宽度下的MCU的个数,进而计算出每个本文档来自技高网...
基于JPEG文件流的图片分割方法

【技术保护点】

【技术特征摘要】
1.一种基于JPEG文件流的图片分割方法,其特征在于,按照以下步骤具体实施:步骤1:根据标准JPEG文件的数据流格式,读取JPEG图片的大小和位置、分辨率、头文件结束位置、重入间隔数以及采样因子,参照表1中的JPEG文件的数据流格式实施;表1,标准JPEG文件的数据流格式段名标识码(Tag)说明SOIFFD8图像开始APP0FFE0JFIF应用数据块APPnFFE1-FFEn其他的应用数据块,n=1~15DQTFFDB量化表SOF0FFC0帧开始DHTFFC4霍夫曼表SOSFFDA扫描线开始EOIFFD9图像结束步骤2:根据JPEG图片大小和读出的重入间隔数计算图片的分割块数步骤2.1)根据步骤1获取的JPEG图片中不同颜色的采样因子,即Y、Cr、Cb三个分量各自的水平采样因子和垂直采样因子,确定最小编码单元MCU的大小;步骤2.2)根据步骤1中读出的JPEG图片宽度和步骤2.1)中得出的MCU的宽度大小计算宽度下的MCU的个数C,则有:C=W/w',其中的W为图片宽度,w'为MCU的宽度,若所求C不为整数,则将C取整数部分后加1;步骤2.3)根据步骤1读出的重入间隔数和C的个数计算每个重入间隔下的高度方向MCU的个数C',则有:C'=I/C,其中的I为重入间隔大小,C为宽度下的MCU的个数,进而计算出每个重入间隔的高度h,则有:h=C'*h',其中的h'为MCU高度;步骤2.4)计算重入间隔的数目D,则有:D=H/h',其中的H为图片高度,h'为MCU高度;步骤2.5)根据表1中的标准JPEG文件的数据流格式,将MCU块的单元中的重新开始间隔设为n,则表示每n个MCU块就有一个RSTn标记,第一个标记是RST0,第二个是RST1,以此类推,RST7后再从RST0重复,根据以上描述计算重入的0XFFD7的个数N',N'=D/8,若结果不为整数则取出不满足8的倍数的重入间隔数L,则有:L=D%8;步骤2.6)根据步骤2.5)计算出的重入0XFFD7的个数N'确定一个基数N,计算JPEG图片所分块数A,则有:A=N'/N,若所求块数不为...

【专利技术属性】
技术研发人员:孙钦东贺毅王艳张景鹏王健
申请(专利权)人:西安理工大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1