在Cartographer_ros中,cartographer较多的用到了cairo库进行二维图像的渲染操作,尤其是将多张子图绘制在大地图的时候。
Cairo's compositing operatorshttps://www.cairographics.org/operators/Cairo's compositing operators
Cairo's compositing operatorshttps://www.cairographics.org/operators/
CAIRO_OPERATOR_SOURCE
描述:直接覆盖,灰色部分属于背景。红色是原始图像,蓝色是新绘制的图像。上述的OPERATOR属于直接覆盖操作。
CAIRO_OPERATOR_OVER —— Cairo默认操作符
描述:图像按照透明度混合,这个是cairo默认的操作类型。效果如下所示:
数学原理如下所示:
aA + aB·(1−aA) | (xaA + xaB·(1−aA))/aR |
合并写为像素之间的关系:
从上述公式可以得出推论:
1. 当新绘制的图像透明度为1的时候,alpha_dist = 1, alpha_new = 1, 从而
color_dist = color_new
此时,CAIRO_OPERATOR_OVER 退化为CAIRO_OPERATOR_SOURCE
2. 当原图像透明度为1,新图像透明度为0.5时, alpha_dist = 1, 从而
color_dist = color_new + color_origin * 0.5