Algorithm 图像失真算法

Algorithm 图像失真算法,algorithm,image,distortion,Algorithm,Image,Distortion,我试图想出一种扭曲图像的方法,类似于这里的例子: 这样做的目的是去除原始图像中的硬线。我希望原始图像“大致相同”,而不是你在一些屏幕保护程序或类似的东西中看到的硬漩涡效果 任何建议或想法都会很棒 您可以制作一个“图章”,将像素径向推出。也就是说,预先计算一个贴图(对于比图像小的面片),该贴图将像素从面片的中心移到稍远的一点,并使该位移从中心的零开始,随着半径的增大而增大,但在接近面片的边界时变小,以便边缘的位移为零。然后在图像周围的随机点应用此变形,直到覆盖整个图像 请注意,这实际上会使边缘锐

我试图想出一种扭曲图像的方法,类似于这里的例子:

这样做的目的是去除原始图像中的硬线。我希望原始图像“大致相同”,而不是你在一些屏幕保护程序或类似的东西中看到的硬漩涡效果

任何建议或想法都会很棒

您可以制作一个“图章”,将像素径向推出。也就是说,预先计算一个贴图(对于比图像小的面片),该贴图将像素从面片的中心移到稍远的一点,并使该位移从中心的零开始,随着半径的增大而增大,但在接近面片的边界时变小,以便边缘的位移为零。然后在图像周围的随机点应用此变形,直到覆盖整个图像


请注意,这实际上会使边缘锐化一点,但不会使其笔直,如示例图像所示。请注意,在本例中,边缘实际上更加尖锐和清晰(例如,请参见狗右耳的边缘),但并不笔直,因此我假设这就是您所说的“硬”的意思。。。对不起,我无法抗拒。你打算用什么语言?您是否愿意/能够使用库或调用外部程序?我将在游戏引擎中使用c#。我没有能力包括一个库或调用外部程序。你是对的,我不介意锋利的边缘,只是没有直边。我将尝试实现类似的东西,看看它是如何工作的。但我仍在寻找一种算法。理想情况下,我可以将x,y位置传递到算法中,并从x和y返回位移,这样我就知道像素的偏移量。我可以对原始图像进行迭代,然后将像素放置在新图像类型上的新位置。为了正确使用术语,我认为我建议的是一个算法,我猜你想要的是一个函数。虽然我认为我可以想出这样一个动物,但它有点做作,因为你想要的失真有很多非局部相关性,所以要给它(x,y)并得到一个新的位置,你需要在函数中建立相关性。也就是说,提前构建失真映射并通过函数解决它同样容易。我并不是说没有理由有这样的功能,但我不明白这一点的动机。@tom10,我想真的没有别的原因了,这就是我所知道的。。。当我深入研究像这样的图形时,我发现我知道的不多。如果我理解你的建议,就是创建一个给定x,y位置的函数,它将把环中的所有东西都推离该点。离中心较近的像素比环边缘的像素被挤出更多?拿着它,在图像上随机使用,直到达到想要的效果为止?@tom10,如果更多地解释一下我想要达到的效果会有帮助的话。。。我正在尝试为地形生成高度贴图。我正在创建一个Voronoi图和一些柏林噪声。我把2/3的voronoi和1/3的噪音加在一起。这是伟大的工作,但我想删除从沃拉诺图直边。从我读到的内容来看,如果我获取结果图像/数据,并对其使用类似于我上面链接的图像显示的扰动过滤器,那么我应该是好的。我只是停留在如何做的部分:)首先,我建议使用高斯扭曲,g(s)=e^-((x-x0)^2/s^2+(y-y0)^2/s^2),或者我之前建议的函数可以写成g(s)-g(2s)。不管怎样,玩一玩这个。为了清楚起见,我的意思是将每个像素(x,y)沿径向远离(x0,y0)的方向移动,移动量由g给出。(但如果我有机会,并且记住要这样做,我会尝试在某个时候编写代码。)