#image #elastic #mls #computer-vision #graphics #deformation

moving-least-squares-image

使用移动最小二乘法进行图像变形

2 个版本

0.1.1 2022年4月25日
0.1.0 2021年10月8日

#2210 in 算法

MPL-2.0 许可证

30KB
581

使用移动最小二乘法进行图像变形

Rust 对论文"使用移动最小二乘法进行图像变形",Schaefer 2006 的实现。

mls demo output

可选的 rayon 功能启用并行迭代器以生成变形图像。

以下是如何使用库的示例

// Open an image from disk.
let img = image::open("data/woody.jpg")?.into_rgb8();

// Define the source control points.
let controls_src: &[(f32, f32)] = &[
    (20.0, 160.0),
    ...
    (250.0, 369.0),
];

// Define the destination control points.
let controls_dst: &[(f32, f32)] = &[
    (20.0, 250.0),
    ...
    (250.0, 369.0),
];

// Create new warped image.
let warped_img_affine =
    mls_image::reverse_dense(&img, controls_src, controls_dst, mls::deform_affine);

lib.rs:

使用 MLS 算法计算变形图像的函数。提供了两个变形函数:

  • 密集变形,其中对每个像素进行变形计算;
  • 稀疏变形,只在稀疏网格上计算,其他像素的位置通过插值得到。

依赖项

~10MB
~36K SLoC