MATLAB:如何将一幅图像转换为另一幅图像

MATLAB: how to transform one image to another image

我试图在 MATLAB 中将一幅图像转换为另一幅图像,同时还从该操作中获得变换函数 T(x,y)(例如 T(x,y) = (x + a(x,y), y + b(x,y)))。让我们以下图为例。我想将第一个图中的正方形转换为另一个图中的圆,输出给我一个转换函数,所以每当我在正方形上使用该函数时,我都会得到圆。

我研究过的函数:

我研究过imwarp,但它应该只用于几何变换(缩放、旋转、剪切)。我认为这对于将正方形转换为圆形没有用,同时没有事先提供任何转换矩阵。

我研究过使用 imregconfig and imregister from a MATLAB example,但它似乎只适用于结构相同但强度不同的图像。另外,它不提供任何转换功能。如有不妥请指正

提前感谢您的帮助!

有效变换的解 space 是无限的。我们如何选择"right"?

这些输入的一个可能转换是将正方形 -0.5 转换为 x-0.5 转换为 y。然后将其缩放为两倍大小 (x' = 2xy' = 2y) 并应用 square-to-circle mapping function。 (解决方案 1)

另一个完全有效的转换函数可以 运行 通过表达式

输入中的所有点

( (x == 0 || x == 1) && (0 <= y <= 1) || ( (y == 0 || y == 1) && (0 <= x <= 1) )

如果所有点都通过,只需打印出"x^2 + y^2 = 1"。 (解决方案 2)

解决方案 (1) 和 (2) 都产生了似乎满足您所提出的情况的代码,但显然 (2) 太不通用以至于没有用。我认为您需要更准确地定义问题,然后我们才能开始用代码编写解决方案。