您的位置:首页 > 其它

实现图像拼接,找半天也没找到好的解决方法

2004-08-31 00:10 351 查看
主  题:? 如何实现图像拼接,找半天也没找到好的解决方法。
作  者:? wrcluomo (落木)?
等  级:???
信 誉 值:? 111
所属论坛:? VC/MFC 图形处理/算法
问题点数:? 200
回复次数:? 21
发表时间:? 2003-09-04 10:13:59Z
??
?
??

有两幅重叠的图像,如何将这两幅图像拼接成一幅大图像,将相互重叠的部分去掉。最难的是如何找到其相互重叠的那一线
?
?
?
?回复人: asett1(asett1) ( ) 信誉:100? 2003-09-04 13:17:03Z? 得分:10
?
?
?
从左右边缘进行搜索,计算各自的灰度协方差矩阵,设定误差范围,在此范围内就把两块图像进行alpha融合,其余部分copy过来就可以了啊。
我这样说明白了吧 -_-

?
?
Top
?
?回复人: asett1(asett1) ( ) 信誉:100? 2003-09-04 13:18:26Z? 得分:0
?
?
?
从左右边缘进行搜索,计算各自的灰度协方差矩阵,设定误差范围,在此范围内就把两块图像进行alpha融合,其余部分copy过来就可以了啊。
我这样说明白了吧 -_-

?
?
Top
?
?回复人: mattus_zhao(人生十有八九不如意) ( ) 信誉:105? 2003-09-04 19:45:49Z? 得分:190
?
?
?
首先需要对图像进行配准(image registering)
1 使用相位相关度的方法
? 基本思想是把图像使用傅立叶变换到频域里,然后找到脉冲的最高点,就是两幅图像之间的平移量。具体的方法有点复杂,你可以查看一些关于“correlation”的文章。
2 在两幅图像之间选择控制点,然后由这些控制点决定图像之间的投影矩阵。为了精确的得到投影矩阵,需要使用非线性优化算法。
然后是图像拼接 (image stitching)
把图像投影到一个共同的的空间里后,需要对图像进行拼接。最简单的办法就是alpha的融合。更好和复杂的方法是多分辨率的图像融合,需要使用高斯金字塔和拉普拉斯变换。

?
?
Top
?
?回复人: wsljj_2002(开心就好) ( ) 信誉:99? 2003-09-04 20:14:35Z? 得分:0
?
?
?
问两个牛人一个问题,不同分辨率之间如何转换?
?
?
Top
?
?回复人: wrcluomo(落木) ( ) 信誉:111? 2003-09-05 09:58:03Z? 得分:0
?
?
?
灰度方法会不会误差太大,傅立叶变换我试了试有点慢,我看人家的软件过程序很快,肯定不是用的这种方法。
希望大家多发表意见。 这个贴我可能结的晚一点。
?
?
Top
?
?回复人: wrcluomo(落木) ( ) 信誉:111? 2003-09-05 10:19:39Z? 得分:0
?
?
?
灰度方法会不会误差太大,傅立叶变换我试了试有点慢,我看人家的软件过程序很快,肯定不是用的这种方法。
希望大家多发表意见。 这个贴我可能结的晚一点。

?
?
Top
?
?回复人: mattus_zhao(人生十有八九不如意) ( ) 信誉:105? 2003-09-05 16:12:52Z? 得分:0
?
?
?
的确,很多商业软件的图像拼接速度非常快。我自己也了一个基于傅立叶变换的拼接,但是速度的确慢。
比较好的方法应该是:1 全局优化。首先用correlation确定图像之间的运动参数(这个只是大概的);2 局部优化。采样金字塔式的方法迭代求精。
如果使用这样的方法,速度是很快的。不过对算法要求较高,我没有写出来。
?
?
Top
?
?回复人: mattus_zhao(人生十有八九不如意) ( ) 信誉:105? 2003-09-05 16:14:31Z? 得分:0
?
?
?
对了,找相互重叠的那一线还有一个技术叫做“best seamline(最佳缝合线)”,不过具体的方法我不太清楚。
?
?
Top
?
?回复人: mattus_zhao(人生十有八九不如意) ( ) 信誉:105? 2003-09-05 16:16:22Z? 得分:0
?
?
?
我主要是参考了一些IEEE和SIGGRAPH上面的文章,如果你感兴趣,我可以把文章的名字写出来,你去找来看看,就会对图像拼接由比较深刻的了解了。
顺便说一句,图像拼接在全景图的构建过程种有非常重要的作用。
?
?
Top
?
?回复人: wrcluomo(落木) ( ) 信誉:111? 2003-09-05 16:39:25Z? 得分:0
?
?
?
多谢人生,到那儿找这些文章呀。我今天测了灰度的方法,发现不行。
以下是我测的程序:重合区灰度应接近于0,但是看不出来那一行接近。
for (i = 0; i
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: