govips中多个图像的并行叠加



在Govips中,是否有将多个图像并行叠加在基础图像上的功能?有一个函数compositeMulti,它获取一个图像列表,但它会并行渲染吗?此外,它是否有能力识别哪个图像的哪个像素必须在图像上渲染,而不是迭代地浏览所有图像并逐个渲染。

libvips(govips背后的图像处理库(是需求驱动的,并且是水平线程化的。正在计算的图像处理管道表示为一个图形,PC上的每个线程在输出图像中选择一个瓦片(通常为128 x 128像素(,线程独立地在图形中从头到尾计算像素。

composite操作符(compositeMulti调用的对象(计算使用PDF样式混合模式覆盖一组层的结果。对于每个平铺,它选择在该点可见的层的子集。只有当选定的混合模式是"可跳过的"时,它才能做到这一点,即在基础图像上合成黑色(空像素(将没有效果。

你可以在这里看到可滑动性测试:

https://github.com/libvips/libvips/blob/master/libvips/conversion/composite.cpp#L1273-L1296

层剔除循环在这里:

https://github.com/libvips/libvips/blob/master/libvips/conversion/composite.cpp#L443-L460

最后,如果可能的话,使用矢量算术对选定的层进行合成。它将RGBA像素表示为四个浮点的向量,并将所有浮点计算在一起。

tldr:libvips组合是线程化的、矢量化的,并且(如果可能的话(执行逐块可见性剔除。

最新更新