发明内容
本发明的目的是提供一种图像二次多级缩略切割的方法,实现兼顾性能、成本与效率的大图像远程访问,达到可连续多级缩略漫游显示的效果。
随着网络带宽的提升,客户端下载图像的速度越来越快,而随着服务器及终端设备性能的发展,对于一定大小范围以内的图像,可以在服务器或客户端进行按需实时缩略和切割处理。因此可以在预先按非连续级别缩略与切割处理的基础上,进行二次实时缩略与切割,在可接受的响应速度范围内,减少预处理的需求,降低对服务器系统性能、图像瓦片存储及管理的负担。
本发明的实现方式如下:
一种图像二次多级缩略切割处理方法,其步骤如下:
步骤①:给定k个元素的非连续递增正整数数列{li},l0=0,预先将原始图像按0≤i≤k的比例进行缩略,其中m为大于1的整数,其倒数表示单级缩略比例,l0=0表示原始图像;
步骤②:以缩略级别为lk的缩略图中心点为起点,向上下左右各方向预先切割成边长为W的正方形图像瓦片并保存在服务器上,其中W为固定数值,为远程访问设备上进行平铺显示的每个正方形图像瓦片的边长;以缩略级别为li,0≤i<k的各级缩略图中心点为起点,向上下左右各方向预先切割成边长为的正方形图像瓦片(如图2)。
通过上述缩略与切割之后,对不同的预先缩略级别,用于切割的宽度Wi如下:
以各级别缩略图的中心为原点画坐标轴,横轴为X轴,纵轴为Y轴,以该级别切割宽度Wi为单位,以每个图像瓦片左下角点的坐标标记为该图像瓦片的坐标(Xi,Yi),图像瓦片的坐标可以看作是表征从缩略图中心点出发到该图像瓦片左下角的图像瓦片块数(坐标数值)及方向(坐标正负)的数值对。
所有预先缩略切割的图像瓦片保存在服务器上,可根据原始图像标识、缩略级别及其坐标所唯一标识,定义[原始图像标识,li,(Xi,Yi)]为图像瓦片标识三元组。上述步骤生成的图像瓦片具备两个典型特征:
1.缩略级别非连续性:不需要生成连续缩略级别的图像瓦片,可以有效减少图像处理时的内存占用、CPU计算资源占用,并有效节省存储空间;
2.完备性:指定缩略级别的全体图像瓦片可顺序平铺成原始图像在该级别的全景缩略图。
步骤③:由于原始图像无法保证每个级别的缩略图的长宽均为Wi的倍数,因此会存在边缘图像瓦片的形状不是边长为Wi的正方形,此时,需要将其补白为边长为Wi的正方形,并需在顺序平铺时与内侧图像瓦片保持正确衔接,具体补白方法如下(如图3):
a.若需要补白的边缘图像瓦片在原始图像的上侧边缘,则将其下边对齐叠放在空白的边长为Wi的正方形上;
b.若需要补白的边缘图像瓦片在原始图像的下侧边缘,则将其上边对齐叠放在空白的边长为Wi的正方形上;
c.若需要补白的边缘图像瓦片在原始图像的左侧边缘,则将其右边对齐叠放在空白的边长为Wi的正方形上;
d.若需要补白的边缘图像瓦片在原始图像的右侧边缘,则将其左边对齐叠放在空白的边长为Wi的正方形上;
e.若需要补白的边缘图像瓦片在原始图像的左上角边缘,则将其右下角对齐叠放在空白的边长为Wi的正方形上;
f.若需要补白的边缘图像瓦片在原始图像的右上角边缘,则将其左下角对齐叠放在空白的边长为Wi的正方形上;
g.若需要补白的边缘图像瓦片在原始图像的左下角边缘,则将其右上角对齐叠放在空白的边长为Wi的正方形上;
h.若需要补白的边缘图像瓦片在原始图像的右下角边缘,则将其左上角对齐叠放在空白的边长为Wi的正方形上。
边缘图像瓦片经补白处理后,可确保后续的二次缩略切割正常进行。
步骤④:缩略漫游显示所需要图像瓦片的标识。用户在远程访问设备中进行缩略级别设定操作(如PC机上的滚轮操作、缩略比例滑动条调节操作、平板设备上的手指捏合/张开操作……等)时,获取其当前缩略缩略比例n为正整数,0≤n≤lk,以图像中心点为坐标原点,图像缩略漫游显示图像瓦片宽度W为坐标单位,用图像瓦片的左下角坐标表示该图像瓦片的坐标(X,Y),用于平铺显示所需的图像瓦片可通过[原始图像标识,n,(X,Y)]三元组进行标识,用户在进行图像漫游时,根据当前显示区域,可以计算出需要生成的若干块n级缩略的图像瓦片的标识;
步骤⑤:对预先缩略切割的图像瓦片及补白后的图像瓦片,按照客户端漫游显示需要,进行二次实时缩略切割处理,生成宽度为W的二次缩略切割图像瓦片。对于客户端所需的图像瓦片标识[原始图像标识,n,(X,Y)],首先从l0、l1、l2、……lk中找到不大于n的最大整数lj,并由(X,Y)按如下公式进行换算得到新坐标(Xj,Yj),表示向下取整。通过标识三元组[原始图像标识,lj,(Xj,Yj)]获取预先缩略切割的边长为的图像瓦片,进一步按缩略比例进行缩略,此时该图像瓦片缩略图相对于原始图像的缩略级别为:获得n级缩略图像后,再将此缩略图像瓦片以左下角为坐标原点,W为坐标单位,进一步定位到向右向上切割出一块边长为W的正方形图像瓦片,该图像瓦片即为所需。
由换算及缩略切割过程可见,存在多块n级图像瓦片共用一块lj级预先缩略切割的图像瓦片的情况,在缩略级别lj~lj+1中也存在多级图像瓦片共用一块lj级预先缩略切割的图像瓦片的情况,从而在用户进行图像缩略漫游操作过程中,可以减少从客户端下载预先缩略切割的图像瓦片的次数。
特别地,当n=lj时,则无需进行二次缩略,只需要将边长为的图像瓦片二次切割成边长为W的正方形图像瓦片;特别地,当lj+1-n=1时,则二次缩略之后的图像瓦片边长为W,无需进行二次切割;特别地,对应预先缩略级别{li}元素部分连续的情形,当n=lj=lj+1-1时,则无需进行二次缩略切割。
采取实时缩略切割,可以充分发挥服务器或远程访问设备的实时处理能力,减少服务器在预先缩略切割时的负担,减少服务器与远程访问设备间的交互。
根据对应预先图像瓦片标识三元组的计算、图像切割缩略参与者的不同,可以采取三种不同的实时缩略切割操作方案:
1.服务器和客户端共同参与方案:客户端根据当前缩略比例及预先缩略级别进行参数换算,传递相关参数[[原始图像标识,lj,(Xj,Yj)],n-lj,(x,y)]给服务器,服务器按传递的[原始图像标识,lj,(Xj,Yj)]参数获取预先缩略切割的图像瓦片,对此图像瓦片实时按比例缩略后再按定位坐标(x,y)从左下角进行定位后切割处理并返回所需的边长为W的实时图像瓦片给客户端设备进行定位平铺显示。
2.客户端参与方案:客户端根据当前缩略比例、显示区域等信息及预先缩略级别进行参数换算,从服务器通过[原始图像标识,lj,(Xj,Yj)]标识获取预先缩略切割的图像瓦片,并在客户端对此图像瓦片实时按比例缩略,然后再按定位坐标(x,y)进行切割处理,生成所需的图像瓦片并进行定位平铺显示。
3.服务器参与方案:客户端设备传递所需图像瓦片的标识给服务器,服务器参与标识参数换算、预先缩略切割图像瓦片获取及实时缩略切割操作,并返回所需的图像瓦片给客户端设备进行定位平铺显示。
采用方案2时,服务器仅需根据需要响应下载请求,客户端进行实时处理时,根据客户端具体的应用环境,可以采用物理缩略切割、内存缩略切割、CSS Sprites缩略切割、HTML5Canvas缩略切割……等技术完成实时缩略切割操作,特别是在同一显示区域跨越lj~(lj+1-1)多级缩略漫游时,若采用有效的缓存机制(远程访问设备在获取预先缩略切割的图像瓦片之前首先检查本地缓存,仅获取尚未缓存的图像瓦片),对该区域的图像瓦片只需要获取一次,后续的缩略及切割均在客户端进行,可以有效地减少网络带宽的占用。
采用方案3时,客户端对于服务器侧的非连续级别缩略切割以及二次实时缩略切割无任何感知,此时对客户端而言,与传统的地图应用的图像瓦片获取及漫游显示无区别。
根据权利要求1所述的一种图像二次多级缩略切割处理方法,其特征在于,所述步骤③中,在进行图像瓦片边缘补白处理时记录被补白部分的宽、高,在进行实时缩略切割时,可根据记录的补白部分宽、高,计算得到从图像中心开始往边缘方向出现的第一个空白图像瓦片,将该空白图像瓦片认定为边缘图像瓦片,不显示该边缘图像瓦片及外侧图像瓦片,并在用户从内侧漫游到达或超出此边缘图像瓦片时提示用户。
由于在预先缩略切割时进行了边缘补白处理,针对该边缘图像瓦片进行二次实时缩略切割时,极有可能出现生成的图像瓦片完全空白的情况,此时,需要在进行缩略漫游显示时对这些完全空白的图像瓦片进行处理。包括:
首先在进行图像瓦片边缘补白处理时根据原边缘图像瓦片的宽、高计算出被补白部分的宽、高并记录,在进行n级实时缩略切割时,可根据记录的补白部分高、宽计算得到从图像中心开始往边缘方向出现的第一个空白图像瓦片,将该空白图像瓦片认定为n级缩略边缘图像瓦片,不显示该边缘图像瓦片及外侧图像瓦片,并通过叠加水印的方式,在用户从内侧漫游到达或超出此边缘图像瓦片时提示用户(如图4)。
具体实施方式
下面结合附图及具体实施例对本发明作进一步描述:
一种图像二次多级缩略切割处理方法,其实施过程如下:
1.预先缩略切割处理。
如图2所示,针对长宽均为16384像素的图像,取m=2,W=256,按0、3、5三个级别对图像进行预先缩略切割,0级生成16行、16列图像瓦片,每块图像瓦片边长为1024像素,3级生成4行、4列图像瓦片,每块图像瓦片边长为512像素,5级生成2行、2列图像瓦片,每块图像瓦片边长为256像素。与当前较为常用的地图应用的连续级别缩略与切割(图1)对比,按实施例中的非连续级别缩略切割,可以节省将近25%的存储空间。
2.边缘图像瓦片补白。
如图3所示,将边缘图像瓦片分为上、下、左、右“边块”及左上、右上、左下、右下“角块”,分别进行补白处理,使得其在顺序平铺时与内侧图像瓦片保持正确衔接。
3.图像瓦片按需实时缩略切割。
通过显示缩略级别及所需图像瓦片坐标换算得到对应的预先缩略级别lj、预先缩略切割图像瓦片坐标(Xj,Yj),获取预先缩略切割的图像瓦片之后,对其按显示所需,根据显示缩略级别及预先缩略级别之间的关系计算实时缩略的级别,进行指定缩略比例的缩略,然后根据换算得到的定位坐标进行定位切割,最终生成边长为W的图像瓦片并进行顺序平铺显示。
在实施例中,采用客户端参与的方案,客户端应用环境网页浏览器,因此采用了HTML中较为常见的CSS Sprites“缩略切割”技术,通过编写简单的CSS样式,无需对图像瓦片进行物理缩略切割,即可达到实时缩略切割的效果。上述远程图像连续级别缩略漫游显示时,在预先缩略切割的图像瓦片获取及处理过程中,引入缓存机制。在实施例中,获取预先级别图像瓦片之前,首先检查该图像瓦片在本地缓存中是否已存在,仅获取尚未缓存的图像瓦片,并在获取之后进行缓存,以节省后续操作的带宽、传输时间开销,由于一个预先缩略切割图像瓦片可对应不同缩略级别、不同坐标位置的多个实时缩略切割操作,因此这样的缓存节省带宽、提升效率的效果显著。
4.远程图像连续级别缩略漫游显示时的边缘处理。
如图4所示,对边缘图像瓦片进行优化处理,在边缘图像瓦片及其外侧叠加水印,提示用户已处于图像边缘。
上述实施例仅为本发明的实践案例,并非依此限制本发明的保护范围,故凡依本发明的原理、方法所做的等效变化,均应涵盖于本发明的保护范围之内。