Image processing 一种用于去除缝合图像接缝的图像拼接方法

Image processing 一种用于去除缝合图像接缝的图像拼接方法,image-processing,panoramas,image-stitching,Image Processing,Panoramas,Image Stitching,我使用了SURF进行特征检测,然后使用了RANSAC。我得到的缝合图像有接缝。如何移除这些?我实现了移除接缝以缝合眼睛视网膜图像。您可以在下面找到最终效果: 为此,我实现了本文第138页描述的一种技术。下面您可以找到用于执行此操作的伪代码并进行解释,完整的源代码可以在上找到 该算法基于通过对重叠在该像素上的图像执行像素值计算像素的最终值。权重基于像素到图像边缘的距离。如果像素离它所属图像的中心越近,则像素越重要,权重越大。使用OpenCV实现的函数可以计算像素到图像边缘的距离。这是距离变换对放

我使用了SURF进行特征检测,然后使用了RANSAC。我得到的缝合图像有接缝。如何移除这些?

我实现了移除接缝以缝合眼睛视网膜图像。您可以在下面找到最终效果:

为此,我实现了本文第138页描述的一种技术。下面您可以找到用于执行此操作的伪代码并进行解释,完整的源代码可以在上找到

该算法基于通过对重叠在该像素上的图像执行像素值计算像素的最终值。权重基于像素到图像边缘的距离。如果像素离它所属图像的中心越近,则像素越重要,权重越大。使用OpenCV实现的函数可以计算像素到图像边缘的距离。这是距离变换对放置在最终马赛克上的眼睛视网膜图像之一的影响:

您可以在下面找到伪代码:

//图像是程序正在缝合的图像数组
//对于最终平面上的每个图像(变换后),计算距离变换
用于(图像中的图像){
//计算距离变换
image.distanceTransform=距离变换(图像)
}
//对于最终拼接的每个像素,使用加权平均值计算其值
for(一行接一行){
for(col单位:cols){
currentPixel=FinalMosaic(列,行)
//加权平均值
numeratorSum=0
分母=0
//浏览所有在该像素处可能重叠的图像
用于(图像中的图像){
//若图像并没有在这个像素上重叠,只需跳过
isOverlapping=图像。isOverlapping(当前像素)
if(等重叠){
currentPixelWeight=image.distanceTransform.valueAt(currentPixel)
numeratorSum+=currentPixelWeight*currentPixel.value
分母数+=当前像素权重
}
}
如果(分母数!=0){
currentPixel.value=数值/分母
}
}
}

如果有什么不清楚的地方,在评论中写下问题,我会尝试改进答案。

你能告诉我你最终得到了什么解决方案吗?因为我不明白如果我们连接两个图像,并且在两个图像的连接点处得到一条垂直的接缝,我们将如何删除图像中的接缝

缝针?他们是直的吗?有棱角的可变尺寸?随机?它们在两幅图像缝合的点上实际上是有角度的。对不起。我现在对图像有一些问题。你能概括一下吗?这不是答案。