3

基本上我试图实现这一点:将任意图像强加到预定义的不平整表面。(见下面的例子)。

任何图像-->在此处输入图像描述

我在图像处理或 3D 算法方面没有太多经验,所以这是迄今为止我能想到的最好的方法:

  1. 预定义一组坐标(假设我们有一个 10x10 的网格,我们有 100 个以 (0,0)、(0,10)、(0,20) 等开头的坐标。将有 9x9 = 81网格。
  2. 记录 T 恤图像上每个单独坐标的转换,例如 (0,0) 变为 (51,31),(0, 10) 变为 (51, 35) 等。
  3. 将原始图像三角化为 81x2=162 个三角形(每个网格有 2 个三角形)。根据步骤 2 中得到的坐标变换对图像的每个三角形进行变换,并将其绘制在 t 恤图像上。

我遇到的问题/疑问:

  1. 我不知道如何平滑每个三角形,以使 T 恤上的图像看起来不破旧。
  2. 有更好的方法吗?在继续实施之前,我想确保我没有在这里重新发明轮子。

谢谢!

4

2 回答 2

4

这称为数字图像变形。1990 年代有一个流行的图形文本(可能来自某人的论文)。您还可以从 Dobb 博士的日记中找到一篇关于它的文章。

你的过程基本上是正确的。如果您逐个像素地工作,而不是尝试使用三角形,您将避免您面临的一些问题。扫描目标位图中的像素,并根据您所在的单元格应用局部变换以确定源位图中相应像素的坐标。复制那个像素。

为了获得更平滑的结果,您可以在浮点中进行坐标转换,并使用双线性插值之类的方法对源图像中的像素值进行插值

于 2012-12-19T17:10:33.430 回答
3

这并不是真正的问题解决方案,它只是一种解决方法:

如果您有代表 T 恤的 3D 模型。您可以使用 directX\OpenGL 并将您的图像作为 T 恤的纹理。然后你可以要求它从任何角度渲染你想要的图片。

于 2012-12-19T15:31:51.063 回答