deform_mls — 2D deformation op

Data kinds: imageimage

Call: fullseye.apply(img, "deform_mls", a=0.5, b=0.5) (the 2-D model is one image plus two scalar knobs a,b∈[0,1])

deform_mls: 入力 → 出力

*The figure is the real output on a synthetic 128×128 input. Left: input, right: output (a non-image return value is shown as the value itself).*

Usage

Moving-least-squares image deformation, affine variant (Schaefer 2006).

A 5x5 grid of control points `p_i` is displaced to

`q_i = p_i + amp*[sin(2 pi gx), cos(2 pi gy)]` (gy, gx = normalised

control coordinates). For every destination pixel the weighted

least-squares affine map is re-solved with the weights

`w_i = 1/|p_i - v|^(2 alpha)`, so the warp is a *different* affine at every

pixel -- smooth, interpolating at the control points, and exact on affine

data. The backward map is obtained by solving the same MLS problem with the

roles of `p and q` swapped (the resampling formulation of the paper's

section 4), which is the exact inverse whenever the control data is affine

and a smooth approximation of it otherwise. `a` sets the amplitude

`amp = 0.12*a*min(H,W), b the falloff alpha = 0.5 + 1.5b` (large

alpha = tightly local deformation). `a = 0 gives q = p`, hence the

identity (up to sub-pixel resampling error).

Detailed usage guide

gallery2d_geometry family guide

References (sample data, literature)

• Sample-data catalog (download URLs / licences) — 2-D uses skimage.data (BSD/public domain) plus synthetic images; 3-D lists download URLs for real data sources (Stanford, PDS, …).

• Operator provenance and references — the sources of the research/methods this op family came from.

• The canonical algorithm (author, year) and its uses are named in the family usage guide above.

Try it in Studio

The program below has been verified to run (same input as the figure). In Studio's help this block becomes buttons that load and run it on the spot.

deform_mls 0.50 0.50

▸ Load this pipeline  ·  Load & run

Runnable examples (verified samples that actually call this op)

gallery2d_geometrypy -3.11 examples/gallery2d_geometry.py

Ops the type connects to (they accept image as input)

identity · gaussian · mean_box · bilateral · unsharp · median · min_filter · max_filter

Same category (deformation)

deform_tps · deform_ffd


*Provenance: ops.py — 2D operator registry. This per-op note is generated by tools/opdocs.py md (do not hand-edit).*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.