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

时间:2016-03-24 01:40:40

标签: image matlab function image-processing transformation

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

enter image description here

enter image description here

我调查的功能:

我已经研究过imwarp,但它应该只用于几何变换(缩放,旋转,剪切)。我不认为这在将正方形转换为圆形时很有用,而不是预先提供任何变换矩阵。

我已经研究过使用MATLAB imregconfig中的imregisterexample,但它似乎只适用于结构相同但强度不同的图像。另外,它没有给出任何转换功能。如果我错了,请纠正我。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

有效转换的解决方案空间是无限的。我们如何选择"权利"一个?

这些输入的一种可能转换是翻译-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)非常一般无用。我认为在我们开始在代码中编写解决方案之前,您需要更准确地定义问题。