Algorithm 重叠图像选择算法
我有一组覆盖某个区域的重叠图像,我的目标是构建一个联合图像,而最终图像的每个像素对应于一个源图像的适当像素。因此,目标是为每个像素选择合适的源图像 从形式上讲,我们有以下几点:Algorithm 重叠图像选择算法,algorithm,image-processing,graphics,Algorithm,Image Processing,Graphics,我有一组覆盖某个区域的重叠图像,我的目标是构建一个联合图像,而最终图像的每个像素对应于一个源图像的适当像素。因此,目标是为每个像素选择合适的源图像 从形式上讲,我们有以下几点: 每个源图像的每个像素都有其分数 如果最终图像的两个相邻像素来自不同的源图像,则会受到惩罚,这取决于特定像素和源图像 目标是使总得分最大化 简单地说,目标是构建图像的马赛克,而图像质量在图像中并不一致,加上马赛克切割线应该位于最不可见的位置 这是一个现实世界的问题,因此像素分数是一个平滑的缓慢变化的函数,“像素”选择不
- 每个源图像的每个像素都有其分数
- 如果最终图像的两个相邻像素来自不同的源图像,则会受到惩罚,这取决于特定像素和源图像
这是(希望)已知解决方案的已知问题吗?近似解应该是可以的。SIFT和SURF方法是解决此问题的文献中最先进的方法
这确实是计算机图形学研究中的一个众所周知的问题 通常将其作为离散优化问题来处理,其中重叠区域中的每个像素是离散变量,每个像素的可能源具有一个状态。要最小化的能量(或误差)函数通常包含惩罚人眼可能检测到的区域中的过渡的术语(例如,它惩罚切断强梯度),以及鼓励从同一源选择相邻像素的术语 一旦定义了能量函数,通常使用一种称为Graphcuts的算法来求解。该算法与图中的最大流/最小割问题有关,但可用于解决相当大的一类离散优化问题。请注意,实现图切割并非易事,您可能应该查找代码
boost::graph
实现了Boykow-Kolmogorov算法afaik,这是一种最大流量/最小切割算法变体,通常用于网格(即图像)上的图形切割问题
要开始学习,请阅读以下文章:
它是关于将图像缝合在一起以创建纹理(以及缝合视频),但本质上它所做的事情与您想要实现的非常相似
此外,谷歌的“图像拼接”或“图像马赛克”,可能与“SIGGRAPH”结合使用,后者是图形领域的主要科学会议。我认为问题不在于对齐图像,而在于将它们拼接在一起。这不是SIFT和SURF的用途。