cor*_*ion 8 wolfram-mathematica image-processing
在探索了Heike对我之前关于变形变换的问题的非常好的答案之后,我最终想要看到一个完全由里面翻转的图像.
我们的想法是,不仅仅是通过变形变换来拉伸图像,就像你拉动纸张的边缘一样,你实际上可以将纸张"从里面拉出来".内部"像素"将被拉出到边缘(极度扭曲/拉伸),而外部像素将向内朝向中心压扁(大大缩小).
我无法说明它,但另一种尝试描述它的方法是在这张图片中:

因此,像素越红,它们转换到边缘的次数就越多(反之亦然).
我尝试过FindGeometricTransform,但它似乎没有任何领先优势.

这对谷歌来说并不容易,我还没有在Mathematica中找到任何线索,这种破坏性的转变是可能的.这是一种2.5D的重新投影.
你怎么看?可能吗?
编辑
所以,由于你的答案很好,我现在可以正确地说明我的问题:
这是莱昂纳多着名的Anom Asil,这是对可怜的Lisa进行内向外变换的结果():

这是布拉格的Orloj:

对此的实际用途即将到来,呃,很快......
谢谢!
Dr.*_*ius 10
也许是这样的:
f[x_, y_] := {x, y} (1/Norm@{x, y} - 1);
GraphicsGrid[{{
p = Rasterize[Graphics[ {Black, Disk[{0, 0}, 5],
Red, Disk[{0, 0}, 3],
Blue, Disk[{0, 0}, 2]}]],
ImageTransformation[p, f[#[[1]], #[[2]]] &,
DataRange -> {{-1, 1}, {-1, 1}}]}},
Frame -> All]
Run Code Online (Sandbox Code Playgroud)

编辑
使用Heike的f函数是双射的,它是自己的反函数:
f[x_, y_] := {x, y} (1/Norm[{x, y}, Infinity] - 1);
g[x_]:=ImageTransformation[x, f[#[[1]], #[[2]]] &,DataRange ->{{-1, 1}, {-1, 1}}]
GraphicsGrid[{{i, g@i, g@g@i}}, Frame -> All]
Run Code Online (Sandbox Code Playgroud)

编辑
设置:
f[x_, y_, t_] := {x, y} ((1/Norm[{x, y}, Infinity] - 1 ) t + (1 - t));
Run Code Online (Sandbox Code Playgroud)
