Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing 如何按像素组重新排列图像_Image Processing_Image Manipulation_Morphing - Fatal编程技术网

Image processing 如何按像素组重新排列图像

Image processing 如何按像素组重新排列图像,image-processing,image-manipulation,morphing,Image Processing,Image Manipulation,Morphing,我想创建一个图像转换程序。它应该根据特定的标准,如颜色和形状,将像素区域从一个图像转移到另一个图像 要做到这一点,我需要能够分析图像,将其分为若干组,然后移动这些组 第一个问题已经从确定像素组开始。它们不应随机或完美地选择多边形/形状。有人知道一种可以区分不同纹理/环境/边界的算法吗 接下来,我需要对这些区域进行轻微调整,以使它们适合新图像。然后这些区域将被移动。这不会像第一个问题那么难 表现没那么重要;首先,我必须让程序运行起来。可能需要一个小时才能预先加载转换或其他;) 谁能给我一些建议

我想创建一个图像转换程序。它应该根据特定的标准,如颜色和形状,将像素区域从一个图像转移到另一个图像

要做到这一点,我需要能够分析图像,将其分为若干组,然后移动这些组

  • 第一个问题已经从确定像素组开始。它们不应随机或完美地选择多边形/形状。有人知道一种可以区分不同纹理/环境/边界的算法吗
  • 接下来,我需要对这些区域进行轻微调整,以使它们适合新图像。然后这些区域将被移动。这不会像第一个问题那么难
表现没那么重要;首先,我必须让程序运行起来。可能需要一个小时才能预先加载转换或其他;)

谁能给我一些建议,从哪里开始,或者我可以使用什么技术/API?我对大多数编程语言都很在行,最好是C#、VB、JavaScript、PHP、Java等。平台也不重要


我知道,这很复杂,但我尽力去解释。有什么想法吗?

您的第一个任务是根据颜色/纹理等进行分组。有很多方法和算法可以做到这一点,而且没有一种方法比其他方法更好,因为在图像处理中,最佳算法取决于您的图像和特定的功能/艺术目标

一般的想法是定义像素之间的多个距离,就像一个距离仅基于像素的位置,另一个距离基于像素的颜色差异一样,更高级的度量可以考虑邻域来执行与形状、轮廓方向或纹理相关的操作。然后,您可以组合这些距离(例如加权和),以获得两个像素的相似程度的“聪明”度量。之后,您或多或少地计算所有距离,并根据一些阈值(如最终组的大小)对类似像素进行分组

如果您不想研究和实现所有这些,最好使用现有的图像处理库。我建议查看和“分段”关键字。您将获得k-means、分水岭和meanshift算法的实现,这些算法可能对实现您的效果感兴趣

opencv是C++,但它也有java和python的绑定,我想,也许还有其他。 对于第二个任务,您需要混合移动和混合像素,但这更简单,您可以“手动”完成,或者查看算法

通过使用OpenCV对两幅图像进行变形的源代码进行快速搜索。您也有一些用几种语言编写的现成库,请查看


您甚至可以直接调用命令行实用程序:但似乎不可移植或imagemagick(请参见脚本),后者更为现代,但没有实现真正的变形算法AFAIK。

您的第一个任务,即根据颜色/纹理/等进行分组被调用。有很多方法和算法可以做到这一点,而且没有一种方法比其他方法更好,因为在图像处理中,最佳算法取决于您的图像和特定的功能/艺术目标

一般的想法是定义像素之间的多个距离,就像一个距离仅基于像素的位置,另一个距离基于像素的颜色差异一样,更高级的度量可以考虑邻域来执行与形状、轮廓方向或纹理相关的操作。然后,您可以组合这些距离(例如加权和),以获得两个像素的相似程度的“聪明”度量。之后,您或多或少地计算所有距离,并根据一些阈值(如最终组的大小)对类似像素进行分组

如果您不想研究和实现所有这些,最好使用现有的图像处理库。我建议查看和“分段”关键字。您将获得k-means、分水岭和meanshift算法的实现,这些算法可能对实现您的效果感兴趣

opencv是C++,但它也有java和python的绑定,我想,也许还有其他。 对于第二个任务,您需要混合移动和混合像素,但这更简单,您可以“手动”完成,或者查看算法

通过使用OpenCV对两幅图像进行变形的源代码进行快速搜索。您也有一些用几种语言编写的现成库,请查看

您甚至可以直接调用一个命令行实用程序:但似乎不可移植,或者imagemagick(参见脚本),后者更现代,但没有实现真正的变形算法AFAIK