俞天秀 吴健 赵良 许丽鹏
内容摘要:本文针对敦煌石窟数字化海量数据在实际工作数据传输过程中出现的问题,认为海量数据无差错传输技术,在敦煌石窟数字化过程中是非常重要的一项技术。敦煌石窟海量数据无差错传输系统的设计与开发,为了开发出实用性强的软件,首先针对敦煌石窟壁画数字化工作流程、分析摄影采集、图像处理和数据存储各阶段的特点,提出了敦煌石窟海量数据无差错传输系统的需求;其次,设计了敦煌石窟海量数据传输校验方案,针对敦煌石窟壁画数字化工作流程提出了层级式校验,依据该校验思想,设计了数据校验的整体框架并做了优化,最后设计出数据传输校验的详细模型,确保了数据传输的完整性;最后,基于上述方案,设计并实现了敦煌石窟海量数据无差错传输系统,利用VisualStudio2010开发平台、C++程序开发语言完成系统的开发。此系统已在敦煌壁画数字化工作中实际应用,效果良好。
关键词:海量数据;数据传输;数据校验
中图分类号:TP311.135.9;G256.1 文献标识码:A 文章编号:1000-4106(2015)03-0109-07
Design and Development of the Error-free Transmission System for the Mass Data of the Dunhuang Caves
YU Tianxiu1,2,3,4,5 WU Jian1,2,3,4,5 ZHAO Liang1,2,3,4,5 XU Lipeng1,2,3,4
(1. Digitalization Center, Dunhuang Academy, Dunhuang, Gansu 736200;
2. National Research Center for Conservation of Ancient Wall Paintings and Earthen Sites,
Dunhuang, Gansu 736200;
3. Key Scientific Research Base for Conservation of Ancient Wall Paintings of SACH,
Dunhuang, Gansu 736200;
4. Key Laboratory for Conservation of Ancient Wall Paintings and Earthen Sites, Dunhuang, Gansu 736200;
5. Zhejiang University, Hangzhou, Zhejiang 310013)
Abstract: Error-free transmission technology used for the digital data of the Dunhuang caves is very important for resolving data transmission problems during actual work. The main work of this project is the design and development of an error-free transmission system for the mass data collected at the Dunhuang caves. Firstly, in order to develop practical software, we analyzed the characteristics of each stage, including photography gathering, image processing, and data storage, and then posited the requirement for an error-free transmission system for the mass data of Dunhuang caves. Secondly, we have designed a mass data transmission check scheme for this system. Based on the Dunhuang caves mural digital workflow, we recommended a process of hierarchical verification validation, designed and optimized the overall framework of data checking, then designed an exact model for data transmission validation, ensuring the integrity of data transmission. Finally, according to the above-mentioned scheme, we designed a working, error-free transmission system for the Dunhuang cave data. This system, developed with Visual Studios 2010 development platform and C++ programming language, has already been applied in digital work on Dunhuang murals with good results.
Keywords: mass data; data transmission; data validation
1 引 言
敦煌石窟壁画数字化的探索与研究已经历了20年,并取得了丰硕的成果。早期与美国梅隆基金会、美国西北大学合作完成75dpi近20多个洞窟的壁画数字化,随着技术的不断进步、数字化成果应用需求的增加,目前数字化分辨率为300dpi,已完成近90多个洞窟的摄影采集,另外,还有部分塑像的三维重建、莫高窟崖体的三维重建等数字化工作。敦煌壁画数字化的高精度图像已应用在敦煌石窟的保护、研究和弘扬工作中,为壁画病害调查、修复和保存状况提供依据,为美术临摹工作的线描稿起稿提供技术支持[1]。
按照目前壁画数字化采集分辨率为300dpi,将莫高窟45000多平方米壁画全部数字化将产生约200多万张原始图像,按照每张原始图像文件量约为25MB计算,原始图像数据量将超过50TB。将200多万张原始图像,经过专业图像软件处理获得整幅全景图像,存储处理过程和最终完成的文件数据量将超过300TB,莫高窟壁画数字化产生的总数据量将超过350TB。
敦煌石窟数字化的过程涉及摄影采集、图像处理、数据存储和交换等环节,如何确保数据在这些环节之间传输过程的正确性和完整性是一个至关重要的问题。在磁盘整阵列中保存的数据,几年甚至更久的时间可能都不会使用,如何确保数据不因设备和环境的变化而遭损坏,是另一个重要的问题。
本文将针对敦煌石窟数字化的流程,设计一款软件,能够对文件异常的数据自动预警提示,发现在传输过程中出现损坏的文件重新自动传输,直至通过数据验证,避免数据传输发生错误,确保壁画数字化资料保存完整性,提高敦煌石窟壁画数字化工作效率。
研发成功的数据验证软件,不仅在敦煌石窟壁画数字化方面应用,还可推广到敦煌研究院其他数字化领域,甚至为其他文物保护单位数字化领域的数据完整验证提供技术保障,为未来研发大型文物数据管理平台提供数据传输安全技术支持。
2 敦煌石窟数字化数据传输
方式与存在的问题
2.1 数据传输方式
壁画数字化摄影采集的原始图像,首先从洞窟现场检查计算机中拷贝至移动硬盘,在办公室利用千兆局域网从移动硬盘拷贝数据至存储服务器,这样原始数据已经发生了两次数据传输。
利用千兆局域网络将移动硬盘中的原始图像数据上传至服务器,图像处理人员从服务器下载原始图像数据,图像拼接完成后需要经过反复检查、修改,图像定位、纠正,形成最终版本,这个过程会产生多次数据传输,如图1所示。
敦煌壁画数字化的过程比较复杂,采用多种传输介质,不同的传输介质受到自身以及环境因素的影像,例如:移动硬盘接口不稳定、网络丢包等现象,而发生这些现象没有给使用者任何提示的消息,所以,将导致在数据传输过程中发生错误,无规律可循。
2.2 两种传输方式产生的错误
a) 图像画面出现彩色线条
目前使用EOS-1DsMarkIII相机进行摄影采集原始图像数据,生成RAW格式文件,原始图像文件在两种数据传输方式下,都出现了图像信息损坏,例如:画面出现各种彩色线条,如图2所示。有的整幅画面都损坏,有的是局部损坏,损坏无规律可循。
拼接完成的整幅全景图像,经过数据传输也出现图像信息损坏,例如:画面出现彩色线条,这种线条需要将图像放大到100%才可以看出来,如图3所示。
b) 图像文件量大小严重异常
使用EOS-1DsMarkIII相机,摄影采集分辨率在300dpi时,单幅原始图像的文件量大小一般为25MB左右,发生数据传输后,文件量大小有0KB、2.3MB、11MB等,这些文件已经严重损坏,无法打开。
c) 图像文件量大小变化不大,文件内容损坏
原始数据发生数据传输后,文件量大小在25MB左右,但是图像内容损坏,无法打开。
敦煌石窟壁画数字化的实际工作中,已出现很多以上列举的数据损坏现象,为了确保敦煌石窟数字化的数据能够永久、完整地保存,在无法改变硬件环境的前提下,应该利用软件作为辅助工具,解决数据传输不完整的问题。
3 敦煌石窟海量数据传输校验方案设计
3.1 层级式校验模型
敦煌石窟壁画数字化分为摄影采集、图像处理和数据存储三大部分,每部分都涉及到数据传输的问题,而每部分数据传输都具有自己的特点。摄影采集在洞窟第一现场工作,逐行逐格采集,每采集完一行需要图像处理人员将CF卡中的图像拷贝至电脑,然后现场核查图像质量是否符合标准规范,要求摄影采集现场数据拷贝需要及时性且效率高。图像处理在办公室从服务器下载数据处理,数据传输的及时性没有摄影采集的高,数据存储中数据备份的及时性就更低了。
针对敦煌石窟壁画数字化流程,数字化不同阶段数据传输的不同特性,本文提出了针对敦煌石窟数字化数据传输的层级式数据校验思想,如图4所示。
层级式数据校验的最大特性是可以提高数据校验的效率,三级数据校验分别代表如下意义:
一级校验:针对摄影采集过程中出现单个图像文件量达不到20M以上的情况,设定文件损坏阈值,低于文件损坏阈值的不拷贝给与警示,告知摄影师重新补拍。此级数据校验针对单个文件,数据判断耗时少。
二级校验:是文件夹对比功能。敦煌石窟单个壁面需要采集十几甚至几十行,多个工作日完成,拷贝数据时用不同的颜色提示哪些是增量、哪些是相同的内容。此级数据校验针对多个文件,数据判断效率比一级数据校验耗时多。
三级校验:此级数据校验是最严谨的,利用消息摘要验证数据传输过程中数据的完整性。此级数据校验收到数据传输速率、数据验证的影响,比二级数据校验耗时更多一些,但是数据验证的准率最高。
层级式数据校验尤其对摄影采集要求数据传输及时性高的特性非常适用,在图像处理过程数据传输过程中一级数据校验的功能基本不发挥作用,因为数据损坏阈值的判断在摄影采集过程中就已完成,从服务器下载的数据肯定不会出现低于阈值的图像文件。
3.2 数据传输模型设计
根据层级式数据校验思想,数据传输模型设计如图5所示。这个数据传输模型充分结合敦煌石窟数字化工作流程,从源数据加载后,首先执行第一级数据校验,文件阈值损坏判断,将不合格的文件给与提示,由洞窟现场数据核查人员告知摄影师,让重新补拍,获取正确的图像文件。
第二级数据校验进行文件夹对比,用不同的颜色提示增加量、相同和损坏,选择增量的文件进行传输,在传输之前首先判断,被传输的对象是否存在相对应的信息摘要。如果存在提示是否覆盖,如果不存在自动生成相应的信息摘要。为了避免在同一文件夹中,不同类型的文件具有相同的文件名生成的信息摘要因命名发生冲突,信息摘要的命名以文件名加文件扩张名的方式。
第三级数据校验选择数据传输方式及本地传输和FTP传输两种,由于不同传输介质,传输速率不同,所以文件分块阈值也不相同,需要在传输之前自行设定。对文件进行分块后[2-4],每一块也生成相应的信息摘要[5],依次传输每块数据流,传输后对块的信息摘要进行验证,如果错误,就重新传输此块数据。将所有块都传输完成后,利用Merkle树[6-7]进行验证根的信息摘要,如果中间某一块出现错误,立即定位出错的块,重新传输,直至数据完全正确后存储。
4 系统设计与开发
4.1 系统总体设计
结合敦煌壁画数字化实际工作需求与敦煌石窟海量数据的特性,集成本章之前所涉及的技术,解决敦煌壁画数字化输出传输产生的错误,保障数据的完整性和有效性,本文设计的敦煌石窟海量数据无差错传输系统功能如图6所示。
(1) 数据加载:加载并显示需要传输的数据对象,计算每个文件对象的文件量大小,为阈值判断提供文件量大小的信息;
(2) 预处理:判断数据传输对象是否需要分块传输,如果需要分块传输,就要进行数据分块预处理、读取文件扩展名、生成信息摘要、阈值判断;
(3) 数据传输:数据校验失败的数据重新传输;
(4) 数据校验:单一未分块数据直接校验,分块传输以MerkleTree数据结构的数据校验,多指纹模式对信息摘要的校验;
(5) 数据校验合格后的数据在目的地磁盘中存储。
4.2 系统功能设计
依据图7所示,系统各个功能如下:
(1) 数据对象加载并显示功能:数据加载数据的选取有两种方式:第一种,通过文件路径选取相应的文件夹或者文件加载相应的信息;第二种,支持文件夹拖拽,计算文件的文件量大小。
(2) 无效文件阈值判断功能:为了解决壁画数字化摄影采集中,由于闪光灯和快门未同步,造成采集到的图像为纯黑色,没有任何信息。这类图像在图像处理时没有任何意义,所以,数据拷贝过程中可直接过滤此类图像,达到提高拷贝数据的有效性和工作效率。考虑到软件今后应用在敦煌石窟数字化的不同领域,阈值的大小可根据实际工作任意设定,0代表不做阈值判断,小于阈值的数据在传输时有提示功能,用户根据实际情况选择是否传输,类似事件可采用相同动作功能;此功能排除对信息摘要的判断。
(3) 文件分块功能:为了提高数据传输完整性的效率,对大文件进行分块传输校验,设置文件分块阈值和分块大小设置功能,用户可根据实际传输情况设定相应的值。
(4) 生成信息摘要功能:每一个被传输的数据对象,采用哈希算法SHA-1生成相应的信息摘要;信息摘要的命名如果与文件名相同,会出现同一级目录下相同文件名的不同文件类型,产生相同命名的信息摘要的冲突,例如两幅图像分别为“壁画.tiff”和“壁画.psd”。为了解决这一冲突,信息摘要的命名规则为文件名和文件扩张名的组合,例如“壁画.tiff.sha1”和“壁画.psd.sha1”。
(5) 信息摘要的冗余功能:为了将提高数据校验的准确性,对针对数据生成的信息摘要,再生成信息摘要的信息摘要。
(6) 多路径并行传输功能:首先判断被传输的对象是否存在SHA-1值,如果不存在,提示生成SHA-1值,再进行数据传输,避免用户数据传输后再生成SHA-1值,达不到数据校验的目的。传输数据时,SHA-1值自动和数据同时传输。
(7) 数据校验功能:未分块数据直接进行校验;对分块数据采用MerkleTree数据结构的数据校验;对信息摘要进行冗余校验。
(8) 数据重传功能:如果数据校验失败,针对相应的数据进行重传直至数据校验成功。
(9) 数据存储功能:对校验成功的数据保存。
(10) 文件及文件夹对比功能:对比源数据和目的数据文件数量,不同颜色显示对比结果。
(11) 文件夹重命名功能:敦煌石窟壁画数字化以石窟每一个壁面为存储对象。例如:“东壁”为父文件夹,其子文件夹以每行拍摄的顺序为命名:row001代表第一行拍摄,row002代表第二行拍摄,依此类推。为了用户操作方便,首先对CF卡加载的文件夹修改文件名为row001、row002等,非常方便地将数据拷贝至电脑硬盘目的文件夹。
(12) 界面清除功能:为下一次拷贝数据提供全新的界面。
4.3 系统实现
本软件的开发应用环境采用微软公司推出的 Visual Studio2010[8],程序设计语言采用visualC++。
(1)文件列表界面
数据传输首先需要选择要拷贝的数据对象。数据对象可选择文件夹也可以直接选择文件,通过“选择目录”按钮,浏览文件目录,弹出“浏览文件夹”对话框,选择需要操作的文件夹或文件,如图8所示。
(2) 拷贝功能
拷贝功能是本软件的核心部分,根据敦煌壁画数字化工作流程和数字化的数据数量多、单个文件量大的特点,拷贝对象既可以是文件夹,也可以是单个文件。为了确保数据校验的有效性,数据拷贝之前必须对单个文件实体生成相应的SHA-1值,否则无法拷贝数据。考虑到同一文件夹中文件名相同而文件格式不同的现象存在,例如利用佳能1DsMarkIII拍摄图像时,同一目录下除了RAW格式的文件存在外,还存在低精度的jpeg格式的文件,在生成单个文件实体的SHA-1值时,文件命名加入了文件类型,例如MG172Z1O1250.CR2格式的文件对应的SHA-1值是MG172Z1O1250.CR2.sha1和MG172Z1O1250.jpg格式的文件对应的SHA-1值是MG172Z1O1250.jpg.sha1。
另外,依据敦煌壁画数字化单个文件量基本会大于4GB,一般的文件读取方式无法实现,需要用到文件映射技术实现对大文件的读写操作。首先创建srcfile文件句柄和文件映射句柄,获取文件大小,将srcfile对应的srcfile.sha1文件传送到目标目录,创建dstfile文件句柄和文件映射句柄,关闭srcfile和dstfile的文件句柄。然后获取内存分配粒度(也就是内存一次能分配的最小字节数,一般为64K),每次处理一个块大小的数据。如果块大小设置为0,强制将块大小设置为最小粒度,循环处理每一个块,使用文件映射的方式读取文件内容。使用HashData函数计算源文件块数据对应的SHA-1值srcHashCode,使用memcpy函数将源文件的一块数据拷贝到目的文件中去,计算刚刚拷贝完成的目的块数据对应的sha1值dstHashCode。比较srcHashCode和dstHashCode是否一致。如果不一致,这块数据需要重新传输;如果一致,说明本块数据传输正确,使用hasher累积本块的hash值,亦即构造Merkle树。取消源、目的文件映射,更新进度条,整个文件传输完毕之后计算的sha1值(亦即Merkle树的树根)和源文件的sha1作比较,如果不相等,那么整个文件就要重新传输。
(3) 设置阈值
点击设置阈值,弹出阈值设置对话框,如图9所示。
破损文件阈值:当某个文件大小低于此值时,文件名会显示红色;在文件拷贝过程中会被提示“此文件已损坏,是否继续拷贝”。
文件分块阈值:在文件拷贝过程中,如果某个文件大小低于此值,采取整个文件不分块直接拷贝的策略。
分块大小:如果拷贝文件量值高于“文件分块阈值”设定值,那么在拷贝过程中,每次拷贝的数据量为“分块大小”设定值。
通过文本输入框设置“破损文件阈值”、“文件分块阈值”、“分块大小”相关参数,点击“确定”之后,新的参数将会写入“配置阈值.txt”文件,也可以手动修改此文本文件。最后调用OnRefresh()更新文件列表,主要是“破损文件阈值”会影响到文件列表的颜色。
4.4 系统实际应用
依据数据传输的模型、软件系统功能,首先模拟一组数据进行系统功能测试,选择文件大小只有2.3MB的图像数据,破损文件阈值设置20MB,拷贝时出现如图10所示。
经过多组数据模拟测试,敦煌石窟海量数据无差错传输软件顺利通过。2013年下半年开始,由敦煌研究院数字中心工作人员分6组,在洞窟数字化现场利用工作数据实地应用,目前软件运行效果较好。
5 展 望
随着国家文化事业大发展、大繁荣的推进和文物数字化行业标准的制定以及互联网、移动互联网和物联网等技术的不断发展,在文物数字化行业中也将会产生海量的数据。文物数字化成果应用领域的增加,必然增加数据的交换与共享,数据在传输过程中数据的完整性需要得到可靠的保障。
本文开发的数据校验软件,只是结合敦煌壁画数字化工作流程的特性,有其独特性和广泛性,目前可以推广至敦煌石窟数字化的各个领域,确保数据在产生、传输和存储过程中的数据完整性。当然随着应用领域的扩大,软件根据各领域的需求进行改进和完善。
下一步研究工作:
(1) 文物数字化面临的一大难题是数字版权的控制,数据传输和下载的过程中除了验证数据的完整性外,还需要考虑加入身份验证,增加数据传输的安全性,控制文物数字化数据的任意流失。
(2) 将研究存储在计算机中的数据定期进行数据校验,主要考虑服务器的配置、稳定性及I\O能力。工作人员同时上传数据,服务器的压力过大,数据量越大、数据丢包的概率就会增加,所以,更加要求数据传输过程中数据的完整性校验。
(3) 未来随着文物数字化数据急剧增加,文物数字化数据就需要考虑云存储模式,在云存储中对数据完整性校验的要求更高,这将是今后研究的重点之一。
参考文献:
[1]樊锦诗.敦煌石窟保护与展示工作中的数字技术应用[J].敦煌研究,2009(6):1-3.
[2]谢华成,张昆朋,范黎林,et al.基于文件分割的二进制大对象存取算法[J].计算机应用,2011(10):2612-
2616.
[3]陈卫卫,吴海佳,胥光辉.分布式存储中文件分割的最优化模型[J].解放军理工大学学报(自然科学版),
2010(4):413-416.
[4]朱春花,张子彪,路新春.BLOB数据类型存取方法的研究及应用[J].计算机应用与软件,2002(10):52-5.
[5]李志敏.哈希函数设计与分析[D].北京:北京邮电大学,2009.
[6]MERKLE RALPH.Secrecy,Authentication and Public Key Systems[D].Stanford University,1979.
[7]刘芳.Merkle可信树遍历算法及在数字签名上的应用研究[D].北京:北京工业大学,2009.
[8]高阳.Visual Studio 2010架构建模新特性[J].程序员,2010(4):65-67.