图像处理

Java Advanced Imaging (JAI)是由Sun Microsystems建立的图像处理库。 JAI Image I/O Tools 为标准Java图像I/O框架提供读取器、写入器和流插件。

可以在图像处理页面中配置WMS和WCS操作使用的几个JAI参数。

../../_images/image_processing.png

图像处理

内存和瓦片

当支持大图像时,在不将所有内容加载到内存的情况下处理图像子集是有效的。一种广泛使用的方法是瓦片,它基本上构建原始图像的细分,以便图像数据可以部分而不是全部读取。由于处理一个图块通常涉及到周围的图块,因此图块需要有一个图块缓存机制。以下JAI参数允许您管理JAI缓存机制以优化性能。

存储容量 -对于tiles的内存分配,JAI提供了一个名为TileCache的接口。内存容量将全局JAI TileCache设置为可用堆的百分比。一个介于0和1之间的数字。如果内存容量小于当前容量,则刷新缓存中的磁贴以实现所需的设置。如果为磁贴缓存设置了大量内存,交互操作会更快,但磁贴缓存会很快填满。如果为磁贴缓存设置的内存量较低,则性能会降低。

内存阈值 -设置全局JAI TileCache内存阈值。指在瓦片删除期间保留的缓存内存的小数。JAI内存阈值必须介于0.0和1.0之间。上可见的内存阈值 状态 页。

瓦片线程 -JAI使用TileScheduler计算tile。瓦片计算可以使用多线程来提高性能。tiles Threads参数设置TileScheduler,指示加载Tile时要使用的线程数。

瓦片线程优先级 -设置全局JAI磁贴调度程序线程优先级。值的范围从1(最小)到10(最大),默认优先级设置为5(正常)。

瓦片回收 -启用/禁用JAI缓存磁贴回收。如果选中,则磁贴回收允许JAI重新使用已加载的磁贴,这可以显著提高性能。

本机加速 -为了提高图像处理应用程序的计算速度,JAI为许多平台提供了Java代码和本地代码。如果Java虚拟机(JVM)找到本机代码,则将使用该代码。如果本机代码不可用,将使用Java代码。因此,JAI包能够为不同的平台提供优化的实现,这些平台可以利用每个平台的功能。

JPEG本机加速 -启用/禁用JAI JPEG本机加速。选中后,启用jpeg本机代码,这可能会加快性能,但会损害安全性和崩溃保护。

PNG编码器类型 -在Java自己的编码器、JAI ImageIO本机编码器和 PNGJ 基于此:

  • Java标准编码器总是设置为最大压缩。它提供最小的输出图像,以高性能成本(比其他两种选择慢6倍)进行平衡。

  • IMAGEIO本机编码器仅在安装IMAGEIO本机扩展时可用,提供了更高的性能,但也生成了更大的PNG图像。

  • 基于PNGJ的编码器提供了比Java标准编码器稍大的性能和生成的PNG图像。这是建议的选择,但它也比其他两个更新,因此,在错误行为的情况下,其他两个编码器作为一个选项留给管理员。

马赛克自然加速 -为了减少处理它们的开销,大数据集通常被分割成较小的块,然后组合起来形成图像马赛克。这方面的一个例子是航空图像,它通常包含数千个非常高分辨率的小图像。提供了mosaic的本地和JAI实现。选中时,Mosaic本机加速使用本机实现创建马赛克。

扭曲本机加速 -此外,还为Warp操作提供了本机和JAI实现。如果复选框已启用,则本机操作将用于扭曲操作。

It is quite important to remember that faster encoders are not necessarily going to visibly improve performance, if data loading and processing/rendering are dominating the response time, choosing a better encoder will likely not provide the expected benefits.

JAI-外部

这个 JAI-EXT 类库是一个开源项目,旨在取代Sun提供的封闭源代码JAI项目。主要区别在于 JAIJAI-EXT 操作是对外部的支持 利益区域 (ROI)和图像 NoData 在里面 JAI-EXT .

以下面板位于JAI设置页面的底部

../../_images/JAIEXT.png

JAI/JAIExt设置面板

此面板可用于选择性地启用/禁用JAI-EXT操作,而不是JAI操作。

默认情况下, JAI-EXT 操作已启用。如果出现错误行为,请在GeoServer启动脚本中添加以下java选项,然后重新启动GeoServer以禁用它们。

-Dorg.geotools.coverage.jaiext.enabled=false

警告

用户应该注意 JAI 本机库不受支持 JAI-EXT ,因为 JAI-EXT 是一个纯Java API。

Previous: 全局设置