跳到主要内容

拼接

图像拼接和镶嵌操作。

函数映射

libvips CDart 绑定描述
vips_merge()mosaicingBindings.merge()合并两个图像
vips_mosaic()mosaicingBindings.mosaic()镶嵌两个图像
vips_mosaic1()mosaicingBindings.mosaic1()一阶镶嵌
vips_match()mosaicingBindings.match()匹配两个图像
vips_globalbalance()mosaicingBindings.globalbalance()全局颜色平衡

merge

合并两个图像,在接合处混合。

mosaicingBindings.merge(
ref, // 参考图像
sec, // 次级图像
output,
VipsDirection.horizontal, // 或 .vertical
dx, // X 偏移
dy, // Y 偏移
);

mosaic

使用自动匹配点创建两个图像的镶嵌。

mosaicingBindings.mosaic(
ref, // 参考图像
sec, // 次级图像
output,
VipsDirection.horizontal,
xref, // ref 中的参考点 X
yref, // ref 中的参考点 Y
xsec, // sec 中的参考点 X
ysec, // sec 中的参考点 Y
);

mosaic1

带旋转和缩放的一阶镶嵌。

mosaicingBindings.mosaic1(
ref,
sec,
output,
VipsDirection.horizontal,
xr1, yr1, // ref 中的第一个匹配点
xs1, ys1, // sec 中的第一个匹配点
xr2, yr2, // ref 中的第二个匹配点
xs2, ys2, // sec 中的第二个匹配点
);

match

变换次级图像以匹配参考图像。

mosaicingBindings.match(
ref,
sec,
output,
xr1, yr1, xs1, ys1, // 第一对匹配点
xr2, yr2, xs2, ys2, // 第二对匹配点
);

globalbalance

对镶嵌应用全局颜色平衡。

mosaicingBindings.globalbalance(input, output);

调整整个镶嵌的颜色以获得一致的外观。

用例

全景拼接

// 水平拼接两个图像
mosaicingBindings.mosaic(
leftImage,
rightImage,
panorama,
VipsDirection.horizontal,
leftImage.width - 100, 300, // 左图中的重叠点
100, 300, // 右图中的对应点
);

// 平衡颜色
mosaicingBindings.globalbalance(panorama, balanced);

垂直拼接

// 垂直拼接两个图像
mosaicingBindings.merge(
topImage,
bottomImage,
output,
VipsDirection.vertical,
0, // X 偏移
topImage.height - 50, // Y 偏移(重叠区域)
);

图像配准

// 将次级图像匹配到参考图像
mosaicingBindings.match(
reference,
toAlign,
aligned,
100, 100, 105, 98, // 第一对匹配点
500, 400, 508, 395, // 第二对匹配点
);