如何根据已知区域锚点在两个图像之间投影像素
我正在寻找一种方法或算法来转换图像,使得两幅图像中已知的网站重叠,并且已知网站之间的区域中的像素根据这些已知网站进行映射。
简化示例如下所示; 我想对图像B
进行变换,使得所有的红色三角形重叠,并且根据图像A
的'坐标系'将三角形之间的任何像素合理地映射到它们对应的位置。
当然在这个例子中, B
只有一个点偏离了图像A
的缩放版本,而在实际应用中,没有点保证重叠(即使在它们的缩放版本中)。
很可能该算法需要(重新)在C中实现,所以我更关心算法的描述而不是实现它。
理想情况下,该方法不会以简单的方法(如锚点之间)以锐利线条的形式产生人为因素,如将图像分解为三角形顶点并单独转换它们。
如果这个问题或类似问题之前已经提出,我很抱歉; 如果是的话,我一直无法识别它,可能是因为缺乏正式的命名法...
更新 :知道这些是非常大的扫描图像(显微镜扫描)可能是有价值的。 因此,它们实际上是根据沿着每个相邻快照的边缘的相似性缝合在一起的多个图像。 因此,在两次类似扫描中可能会出现小的单个毛刺(可能会错误计算子图像的偏移量)。 其次,我试图在空间上进行均匀化的图像可能会在扫描之前因处理而弯曲。 关于第二个失真来源,可能很自然地想到位移是由图像中的3D“峰”和“谷”引起的(关于发生拉伸/压缩的关键点),尽管它们的位置未知。
建议 :
方案A:生成一个voronoi图,为每个锚点建立支配区域,断言沿着每个区域边界的每个点应该在A
和B
之间定位相同,然后将类似于基于单应性的变换应用到每个区域。
备选方案B:针对每个像素计算基于最接近的(3-4)定位点的修正。
您的图像被弯曲,平面性假设被打破(两个形状之间不存在单应性),两个形状之间存在非刚性变换。 这个问题被称为从模板形状。
我建议你从Adrien Bartoli发表演讲和一篇文章。
链接地址: http://www.djcxy.com/p/50051.html上一篇: How to project pixels between two images according to known region anchors