Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.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
Algorithm 重叠图像选择算法_Algorithm_Image Processing_Graphics - Fatal编程技术网

Algorithm 重叠图像选择算法

Algorithm 重叠图像选择算法,algorithm,image-processing,graphics,Algorithm,Image Processing,Graphics,我有一组覆盖某个区域的重叠图像,我的目标是构建一个联合图像,而最终图像的每个像素对应于一个源图像的适当像素。因此,目标是为每个像素选择合适的源图像 从形式上讲,我们有以下几点: 每个源图像的每个像素都有其分数 如果最终图像的两个相邻像素来自不同的源图像,则会受到惩罚,这取决于特定像素和源图像 目标是使总得分最大化 简单地说,目标是构建图像的马赛克,而图像质量在图像中并不一致,加上马赛克切割线应该位于最不可见的位置 这是一个现实世界的问题,因此像素分数是一个平滑的缓慢变化的函数,“像素”选择不

我有一组覆盖某个区域的重叠图像,我的目标是构建一个联合图像,而最终图像的每个像素对应于一个源图像的适当像素。因此,目标是为每个像素选择合适的源图像

从形式上讲,我们有以下几点:

  • 每个源图像的每个像素都有其分数
  • 如果最终图像的两个相邻像素来自不同的源图像,则会受到惩罚,这取决于特定像素和源图像
目标是使总得分最大化

简单地说,目标是构建图像的马赛克,而图像质量在图像中并不一致,加上马赛克切割线应该位于最不可见的位置

这是一个现实世界的问题,因此像素分数是一个平滑的缓慢变化的函数,“像素”选择不应该被逐字处理,它更多的是选择合适的区域

我目前的算法如下:

  • 从得分最高的源图像中选择源图像
  • 将来自同一源的相邻像素合并成云
  • 云边界的局部优化会导致惩罚
  • 测试可以完全消失的云(即,从其内部获得的分数不能证明其边界的惩罚是合理的)

  • 这是(希望)已知解决方案的已知问题吗?近似解应该是可以的。

    SIFT和SURF方法是解决此问题的文献中最先进的方法


    这确实是计算机图形学研究中的一个众所周知的问题

    通常将其作为离散优化问题来处理,其中重叠区域中的每个像素是离散变量,每个像素的可能源具有一个状态。要最小化的能量(或误差)函数通常包含惩罚人眼可能检测到的区域中的过渡的术语(例如,它惩罚切断强梯度),以及鼓励从同一源选择相邻像素的术语

    一旦定义了能量函数,通常使用一种称为Graphcuts的算法来求解。该算法与图中的最大流/最小割问题有关,但可用于解决相当大的一类离散优化问题。请注意,实现图切割并非易事,您可能应该查找代码
    boost::graph
    实现了Boykow-Kolmogorov算法afaik,这是一种最大流量/最小切割算法变体,通常用于网格(即图像)上的图形切割问题

    要开始学习,请阅读以下文章:

    它是关于将图像缝合在一起以创建纹理(以及缝合视频),但本质上它所做的事情与您想要实现的非常相似


    此外,谷歌的“图像拼接”或“图像马赛克”,可能与“SIGGRAPH”结合使用,后者是图形领域的主要科学会议。

    我认为问题不在于对齐图像,而在于将它们拼接在一起。这不是SIFT和SURF的用途。