Image processing 如何按像素组重新排列图像
我想创建一个图像转换程序。它应该根据特定的标准,如颜色和形状,将像素区域从一个图像转移到另一个图像 要做到这一点,我需要能够分析图像,将其分为若干组,然后移动这些组Image processing 如何按像素组重新排列图像,image-processing,image-manipulation,morphing,Image Processing,Image Manipulation,Morphing,我想创建一个图像转换程序。它应该根据特定的标准,如颜色和形状,将像素区域从一个图像转移到另一个图像 要做到这一点,我需要能够分析图像,将其分为若干组,然后移动这些组 第一个问题已经从确定像素组开始。它们不应随机或完美地选择多边形/形状。有人知道一种可以区分不同纹理/环境/边界的算法吗 接下来,我需要对这些区域进行轻微调整,以使它们适合新图像。然后这些区域将被移动。这不会像第一个问题那么难 表现没那么重要;首先,我必须让程序运行起来。可能需要一个小时才能预先加载转换或其他;) 谁能给我一些建议
- 第一个问题已经从确定像素组开始。它们不应随机或完美地选择多边形/形状。有人知道一种可以区分不同纹理/环境/边界的算法吗
- 接下来,我需要对这些区域进行轻微调整,以使它们适合新图像。然后这些区域将被移动。这不会像第一个问题那么难李>
我知道,这很复杂,但我尽力去解释。有什么想法吗?您的第一个任务是根据颜色/纹理等进行分组。有很多方法和算法可以做到这一点,而且没有一种方法比其他方法更好,因为在图像处理中,最佳算法取决于您的图像和特定的功能/艺术目标 一般的想法是定义像素之间的多个距离,就像一个距离仅基于像素的位置,另一个距离基于像素的颜色差异一样,更高级的度量可以考虑邻域来执行与形状、轮廓方向或纹理相关的操作。然后,您可以组合这些距离(例如加权和),以获得两个像素的相似程度的“聪明”度量。之后,您或多或少地计算所有距离,并根据一些阈值(如最终组的大小)对类似像素进行分组 如果您不想研究和实现所有这些,最好使用现有的图像处理库。我建议查看和“分段”关键字。您将获得k-means、分水岭和meanshift算法的实现,这些算法可能对实现您的效果感兴趣
opencv是C++,但它也有java和python的绑定,我想,也许还有其他。 对于第二个任务,您需要混合移动和混合像素,但这更简单,您可以“手动”完成,或者查看算法
通过使用OpenCV对两幅图像进行变形的源代码进行快速搜索。您也有一些用几种语言编写的现成库,请查看您甚至可以直接调用命令行实用程序:但似乎不可移植或imagemagick(请参见脚本),后者更为现代,但没有实现真正的变形算法AFAIK。您的第一个任务,即根据颜色/纹理/等进行分组被调用。有很多方法和算法可以做到这一点,而且没有一种方法比其他方法更好,因为在图像处理中,最佳算法取决于您的图像和特定的功能/艺术目标 一般的想法是定义像素之间的多个距离,就像一个距离仅基于像素的位置,另一个距离基于像素的颜色差异一样,更高级的度量可以考虑邻域来执行与形状、轮廓方向或纹理相关的操作。然后,您可以组合这些距离(例如加权和),以获得两个像素的相似程度的“聪明”度量。之后,您或多或少地计算所有距离,并根据一些阈值(如最终组的大小)对类似像素进行分组 如果您不想研究和实现所有这些,最好使用现有的图像处理库。我建议查看和“分段”关键字。您将获得k-means、分水岭和meanshift算法的实现,这些算法可能对实现您的效果感兴趣
opencv是C++,但它也有java和python的绑定,我想,也许还有其他。 对于第二个任务,您需要混合移动和混合像素,但这更简单,您可以“手动”完成,或者查看算法
通过使用OpenCV对两幅图像进行变形的源代码进行快速搜索。您也有一些用几种语言编写的现成库,请查看 您甚至可以直接调用一个命令行实用程序:但似乎不可移植,或者imagemagick(参见脚本),后者更现代,但没有实现真正的变形算法AFAIK