govips中多张图片的并行叠加

Govips中,是否有将多个图像并行叠加在基本图像上的功能?有一个函数 - compositeMulti 获取图像列表但它是否并行渲染它?此外,它是否能够识别必须在图像上渲染哪个图像的哪个像素,而不是迭代地遍历所有图像并一张一张地渲染。



当年话下
浏览 74回答 1
1回答

智慧大石

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 composite 是线程化的、矢量化的,并且(如果可能的话)进行平铺可见性剔除。
打开App,查看更多内容
随时随地看视频慕课网APP