User Rating 0.0
Total Usage 0 times
Drop a PNG here or click to upload
Is this tool helpful?

Your feedback helps us improve.

About

A Möbius transformation maps every pixel of an image through the complex function f(z) = (az + b) ÷ (cz + d), where a, b, c, d are complex coefficients and z = x + iy encodes pixel position. These transformations are conformal: they preserve angles locally but can radically distort scale and topology. Incorrect parameter choices produce singularities where cz + d = 0, sending regions to infinity and creating visual black holes in your output. This tool computes the inverse map for each output pixel via bilinear interpolation, avoiding the sampling artifacts that plague forward-mapping implementations.

The computation normalizes pixel coordinates to a −1 to +1 complex plane centered on the image. Parameters default to the identity transform (a = d = 1, b = c = 0). Adjusting c introduces inversion effects. Non-trivial b shifts the center of distortion. This tool approximates the continuous Möbius map on a discrete pixel grid. Accuracy degrades near poles where magnification exceeds the source resolution.

mobius transform fractional linear transformation conformal map image transform complex analysis png editor inversion image warping

Formulas

The Möbius transformation on the complex plane is defined as:

f(z) = az + bcz + d

where a, b, c, d C and ad bc 0 (non-degenerate condition). To avoid forward-mapping holes, we use the inverse transform for each output pixel w:

f−1(w) = dw bcw + a

Pixel coordinates (px, py) are normalized to the complex plane via:

z = 2px Wmax(W, H) + i 2py Hmax(W, H)

where W = image width, H = image height. Bilinear interpolation samples the source at fractional coordinates. Pixels mapping outside the source bounds render as transparent (alpha = 0).

Complex multiplication: (ar + aii)(zr + zii) = (arzr aizi) + (arzi + aizr)i. Complex division uses the conjugate of the denominator multiplied through.

Reference Data

Preset Namea (Re, Im)b (Re, Im)c (Re, Im)d (Re, Im)Effect
Identity1, 00, 00, 01, 0No change
Circle Inversion0, 01, 01, 00, 0Inversion in unit circle
Rotation 45°0.707, 0.7070, 00, 01, 0Pure rotation
Rotation 90°0, 10, 00, 01, 0Quarter turn
Translation1, 00.3, 0.20, 01, 0Shift center
Dilation ×22, 00, 00, 01, 0Zoom in ×2
Swirl1, 0.50, 00, 0.31, 0Spiral distortion
Fish-eye1, 00, 00.5, 01, 0Barrel distortion
Droste Mild1, 0−0.2, 00.8, 01, 0Recursive zoom feel
Kaleidoscope0.5, 0.50.3, −0.3−0.3, 0.30.5, 0.5Symmetric folding
Wormhole0, 11, 01, 00, −1Topological twist
Hyperbolic2, 00, 00, 00.5, 0Stretch along real axis
Conformal Flip−1, 00, 00, 01, 0Mirror + negate

Frequently Asked Questions

When the denominator of the Möbius function equals zero, the mapping sends that point to infinity on the Riemann sphere. In practice, the inverse map produces source coordinates far outside the image bounds. Those output pixels render as transparent. Visually this creates a characteristic "black hole" or void region. Adjusting the parameter c controls the location and intensity of this singularity.
Forward mapping iterates over source pixels and places them at computed output positions. This creates gaps where no source pixel maps, producing Swiss-cheese artifacts. Inverse mapping iterates over every output pixel and asks "where in the source does this come from?" This guarantees every output pixel receives a value (or is explicitly marked transparent), producing a clean, hole-free result.
When ad − bc = 0, the transformation collapses the entire complex plane to a single point or a line. The inverse becomes undefined. The tool checks this determinant before applying the transform and warns you if your parameters produce a degenerate (rank-deficient) map. Small determinant values near zero still produce valid but extremely distorted results with most of the image compressed into a thin region.
Möbius transformations form a group under composition. The composition of f₁(z) = (a₁z + b₁)/(c₁z + d₁) and f₂(z) = (a₂z + b₂)/(c₂z + d₂) is another Möbius transformation whose matrix is the product of the 2×2 matrices [[a₁,b₁],[c₁,d₁]] · [[a₂,b₂],[c₂,d₂]]. To chain effects, multiply the matrices and enter the resulting a, b, c, d values.
The tool uses bilinear interpolation, sampling the four nearest source pixels and weighting by fractional distance. This eliminates the blocky appearance of nearest-neighbor sampling. For extreme magnification near the pole of the transform, source pixels are stretched beyond their resolution, producing blur. This is an inherent limitation of any discrete-to-discrete conformal map. Higher resolution source images yield better results in magnified regions.
Yes. Pixel coordinates are mapped to the range −1 to +1 (divided by the larger dimension to preserve aspect ratio). This means parameter values around 0.1 to 2.0 produce visible effects. If you enter very large values for a or b (e.g., 100), the image may shrink to a single pixel in the output. Keep parameters in the single-digit range for most artistic effects.