`

支持无级缩放的360展示技术实现之二

 
阅读更多

展品影像的采集及加工

本节对展品影像的采集及加工做个简单介绍。

影像采集

影像拍摄和采集的原理图如下:



 

主要硬件组成包括:步进电机驱动的转台、单反相机、用于控制单反相机快门与转台联动的PC,同时接收从单反相机获得的初始影像文件。

将拍摄对象的观察角度360度均分,转动转台每个角度拍摄一帧。从而获得观察对象的不同角度的若干帧(帧数越多,交互回放的转动越平滑,但所需要的文件存储容量越大)高清照片影像文件。采集阶段的工作遂告完成。

 

影像加工

即使对单帧影像而言,为了表现藏品细节,通常会使用较高的分辨率。即使采用jpg怎样的互联网格式进行压缩,其单个文件的尺寸达到10M左右也很常见。这样的图片在互联网上直接浏览,用户需要等待漫长的下载过程。即时完成下载缓存到用户浏览器端,一则会占用较大的系统内存,二则对于超高分辨率的影像,如果缺少缩放、平移和鹰眼这样的交互方式,用户的浏览体验将会比较糟糕。

针对此种场景,最常见的解决方案就是对影像进行金字塔式的切片预处理。经过处理的图片,配合浏览器端的组件,可以实现按需加载、无级缩放和平移。同时也支持浏览器端对已访问切片的缓存。



 影像金字塔的方法在WebGIS获得广泛而且成熟的应用,它的原理如下:

指在同一的空间参照下,根据用户需要以不同分辨率进行存储与显示,形成分辨率由粗到细、数据量由小到大的金字塔结构。影像金字塔结构用于图像编码和渐进式图像传输,是一种典型的分层数据结构形式,适合于栅格数据和影像数据的多分辨率组织,也是一种栅格数据或影像数据的有损压缩方式。 如图所示:

从图中可以看出, 从金字塔的底层开始每四个相邻的像素经过重采样生成一个新的像素, 依此重复进行, 直到金字塔的顶层。重采样的方法一般有以下三种: 双线性插值、最临近像元法、三次卷积法。其中最临近像元法速度最快, 如果对图像的边缘要求不是很高的话,最适合使用该方法。三次卷积由于考虑的参考点数太多、运算较复杂等原因, 速度最慢, 但是重采样后图像的灰度效果较好。

每一层影像金字塔都有其分辨率的,比如说放大(无论是拉框放大、还是固定比例放大)、缩小、漫游(此操作不涉及到影像分辨率的改变)计算出进行该操作后所需的影像分辨率及在当前视图范围内会显示的地理坐标范围,然后根据这个分辨率去和已经建好的影像金字塔分辨率匹配,哪层影像金字塔的分辨率最接近就用哪层的图像来显示,并且根据操作后当前视图应该显示的范围,来求取在该层影像金字塔上,应该对应取哪几块,然后取出来画上去就可以了。

金字塔是一种能对栅格影像按逐级降低分辨率的拷贝方式存储的方法。通过选择一个与显示区域相似的分辨率,只需进行少量的查询和少量的计算,从而减少显示时间。

 

影像格式

下表列举了常见的符合上述原理的切片格式:

 

Deep Zoom Composer

desktop app for Windows

DZI

Image Composite Editor

panoramic image stitcher from Microsoft Research for the Windows desktop

DZI

DeepZoomTools.dll

.NET library, comes with Deep Zoom Composer

DZI

deepzoom.py

Python

DZI

deepzoom

Perl utility

DZI

PHP Deep Zoom Tools

PHP

DZI

Deepzoom

PHP

DZI

DZT

an image slicing library and tool written in Ruby

DZI

MapTiler

desktop app for Windows, Mac, Linux

TMS

VIPS

command line tool and library for a number of languages

DZI via the dzsave feature

Sharp

Node.js, uses VIPS

DZI

MagickSlicer

shell script (Linux/Mac)

DZI

Gmap Uploader Tiler

C++

DZI

Node.js Deep Zoom Tools

Node.js, under construction

DZI

Zoomable

service, offers embeds; no explicit API

DZI

ZoomHub

service, under construction

DZI

Kakadu

C++ library to encode or decode JPEG 2000 images 

example of a batch convert script:process_jp2.py(Diva.js project)

IIIF (requires a IIIF-compliant image server with JPEG 2000 support, likeLoris; see also iiif.io for more details)

  • 大小: 72.9 KB
  • 大小: 67.9 KB
分享到:
评论

相关推荐

    360安全浏览器-网页无级缩放和网页自动填表.docx

    360安全浏览器则突破了这一限制,实现了网页的无级缩放,允许用户更加灵活地调整网页的视图大小。 实现网页无级缩放的方法多样。首先,用户在浏览网页时,可以按住Ctrl键,同时滚动鼠标滚轮,这样就能便捷地放大或...

    VB文本框文本字体的无级缩放源代码.rar

    在开发过程中,有时我们需要实现文本框中的文本字体的缩放功能,以便根据用户需求调整字体大小。"VB文本框文本字体的无级缩放源代码.rar"提供的压缩包就是这样一个示例,它演示了如何动态改变文本框内文本的字体大小...

    商品展示 360度全景图-HTML5 Canvas 实现

    本项目基于HTML5的Canvas技术,实现了商品的360度全方位展示,适用于Chrome、Firefox以及IE9及以上的浏览器。 HTML5是现代网页开发的标准,它引入了许多新的API和元素,Canvas就是其中之一。Canvas是一个二维绘图上...

    图像缩放算法研究及其FPGA实现.pdf

    为了解决这个问题,研究人员提出了一系列边缘增强的插值算法,但它们通常局限于进行2的倍数缩放,无法实现任意比例的无级缩放。 方向多项式插值算法(OPI)是一种新兴的插值技术,它能实现基于边缘的无级缩放。这种...

    VB实现文本框文本字体的无级缩放

    内容索引:VB源码,字符处理,文本缩放,文本框 VB实现文本框文本字体的无级缩放,单击一次“字放大”则字体大小增加2磅,单击一次“字缩斜则字体大小缩小2磅,也可复原文本,可了解一些VB理论基础,教师可借此来引导...

    76.(leaflet篇)leaflet地图无级别缩放(移动端).zip

    本文将深入探讨Leaflet地图在移动端实现无级别缩放的技术细节及其优势。 首先,Leaflet地图的核心特性之一就是其优秀的性能和对各种屏幕尺寸的支持,这使得它成为移动应用的理想选择。在移动设备上,用户可能需要...

    图像实时缩放的FPGA实现,二次线性插值的Verilog实现。

    在本文中,我们将深入探讨如何使用FPGA(Field-Programmable Gate Array)实现图像实时缩放,并专注于其中的关键技术——二次线性插值。这一技术在数字图像处理领域广泛应用,尤其是在需要高质量图像缩放的场合。...

    基于自适应插值算法的视频图像缩放技术及其FPGA实现.pdf

    总体而言,基于自适应插值算法的视频图像缩放技术及其在FPGA上的实现,展示了如何结合先进的图像处理算法和高性能硬件平台,来达到实时图像处理的高效性和精确性。这对于实时视频监控、高清视频播放、远程医疗影像...

    99%CSS3+1%JS实现缩放图片展示特效.rar

    在"99%CSS3+1%JS实现缩放图片展示特效"的项目中,开发者很可能是利用了上述技术的组合,创造出一种平滑且引人注目的图片展示方式。通过阅读同名博客,你可以更深入地了解每个步骤和具体实现细节,从而学习并应用到...

    易语言实现图片快速缩放和无损缩放源码

    "易语言实现图片快速缩放和无损缩放源码"是一个专为开发者提供的资源,旨在帮助他们利用易语言进行高效的图像缩放操作。易语言是一种中文编程语言,其目标是降低编程的难度,让更多的人能够参与到软件开发中来。 ...

    Qt 图片缩放,支持滚轮和按键缩放

    通过以上技术,我们可以构建出一个功能完备的图片查看器,不仅支持滚轮和按键的缩放,还能方便地切换不同图片。在实际开发中,可能还需要考虑性能优化,例如,对于大图的高效显示和内存管理,以及用户界面的友好设计...

    MATLAB图像缩放,matlab实现图像缩放,matlab

    二、非等比例缩放 非等比例缩放允许单独调整图像的宽度和高度。这时,`scale`需要是一个包含两个元素的向量,分别表示宽度和高度的缩放因子。例如: ```matlab resizedImage = imresize(originalImage, [widthScale...

    Qt实现窗体缩放

    在本文中,我们将深入探讨如何使用Qt框架来实现窗体的动态缩放功能。Qt是一个强大的C++库,用于创建跨平台的图形用户界面(GUI)应用。它提供了丰富的API和工具,使得开发者能够轻松地设计和实现各种复杂的UI功能,...

    Qt 实现无边框窗口,支持缩放窗口大小

    在Qt框架中,创建一个无边框窗口并支持自定义缩放窗口大小是常见的需求,尤其是在设计具有现代感和简洁界面的应用程序时。Qt库提供了丰富的API和工具,使得开发者可以轻松实现这样的功能。以下是对这个主题的详细...

    qt实现图片缩放

    在Qt框架中,图片缩放是一项常见的图像处理任务,它涉及到图形用户界面(GUI)的开发,特别是当我们要展示或操作图像时。Qt提供了一系列的类和方法来帮助开发者实现这个功能。以下将详细介绍如何使用Qt来实现图片的...

    vc实现二维图形平移、旋转和缩放功能

    本文将深入探讨如何使用Visual C++来实现二维图形,如三角形,的平移、旋转和缩放功能。 首先,我们来看二维图形的平移。平移是指在坐标系中移动图形而不改变其形状或方向。在C++中,我们可以通过修改图形顶点的...

    photoView和viewPager的完美结合实现相册功能,支持收缩缩放,滑动到下一页上一页恢复默认大小

    photoView和viewPager的完美结合实现相册功能,支持收缩缩放,滑动到下一页上一页恢复默认大小

    jQuery支持局部缩放图片放大镜插件.zip

    2. **图片外部缩放**:与内部缩放不同,外部缩放会在图片的旁边或者下方创建一个新的区域,展示放大后的图像。这种方式通常会创建一个独立的放大视窗,用户可以通过移动鼠标来查看不同位置的细节,而不影响原始图片...

    360度展示代码,360度看车代码,360度看房代码,360度全景代码

    标题中的“360度展示代码,360度看车代码,360度看房代码,360度全景代码”指的是用于创建虚拟360度全景体验的编程技术,这种技术常用于汽车展示、房地产展示等领域,让用户仿佛身临其境地查看环境。在网页中实现...

    带手势缩放功能的pdf.js

    2. **计算缩放比例**:当检测到捏合手势或滚轮事件时,我们需要计算出新的缩放比例。对于捏合,我们可以通过比较初始和最终的触摸点之间的距离来确定;对于滚轮,我们可以根据滚动的增量来调整。 3. **更新 PDF ...

Global site tag (gtag.js) - Google Analytics