ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

期末作业--论文

2020-12-23 19:05:17  阅读:106  来源: 互联网

标签:energyMat -- double 论文 矩阵 特征 拼接 期末 图像


随便看看,仅供参考
计算机视觉导论
期末项目:全景图像拼接
摘要:全景图像拼接是一个重要的视觉任务,原理是将多副图之间的共同之处进行匹配连接,合成完整的一幅图像。本文实现了对左右两图的全景图像拼接,主要步骤有输入,特征提取与匹配,单应矩阵估计,图像对齐,图像融合。
关键字:特征提取;特征匹配;图像对齐;图像融合;全景图像拼接

Abstract: Panoramic image Mosaic is an important visual task. The principle is to match and connect the common points between multiple images to synthesize a complete image.In this paper, the panoramic image Mosaic of left and right graphs is realized. The main steps include input, feature extraction and matching, homography matrix estimation, image alignment, and image fusion.
Keywords: Feature extraction;Feature matching;Image alignment;Image fusion;Panoramic image Mosaic

一、引言
在生活在拍照,由于镜头拍照的位置不同,会导致图片虽然有相同的拍摄区域,但是并不能简单的将图二和图一的重叠区域覆盖进行拼接。因为拍摄图一和图二时,相机的世界坐标位置基本会发生变化。这也就是本项目所实现的全景图像拼接技术要解决的问题。
近年来,随着计算机技术的快速发展,图像融合技术发展越来越广泛和深入,对具有较大视域全景图像的需求也越来越迫切。全景图像拼接(image mosaic)作为新兴技术,短短几年得到了快速发展,受到研究者越来越多的关注。目前全景图像已经成为计算机仿真计算机视觉模拟、图像处理和计算机特效以及虚拟现实
研究中的热点和关键技术,在地质勘测、军事侦查、医学微创手术、航空航天以及视频会议等多个领域发挥着重要作用。
所谓全景是指图像有比较宽的视域(FOV,Wide Field of View);所谓拼接是指把多个单一图像融合成一幅图像。具体地说,全景拼接是使用多个摄像机对同一个场景在不同角度拍摄,把得到的多个图像进行校正、去噪、匹配、融合,最终构建成一个质量高、清晰、边缘平滑、分辨率高的图像。图像拼接主要有 4 个步骤:图像的几何校正、图像预处理、图像配准和图像融合,如图 1 所示。其中,图像配准和图像融合是图像拼接成功的关键

图1 图像拼接流程

二、相关算法

  1. SIFT算法
    SIFT的全称是Scale Invariant Feature Transform,尺度不变特征变换,由加拿大教授David G.Lowe提出的。SIFT特征对旋转、尺度缩放、亮度变化等保持不变性,是一种非常稳定的局部特征,在图像处理和计算机视觉领域有着很重要的作用,其本身也是非常复杂的,计算过程如下:
    1.DoG尺度空间的极值检测。 首先是构造DoG尺度空间,在SIFT中使用不同参数的高斯模糊来表示不同的尺度空间。而构造尺度空间是为了检测在不同尺度下都存在的特征点,特征点的检测比较常用的方法是Δ2G(高斯拉普拉斯LoG),但是LoG的运算量是比较大的,Marr和Hidreth曾指出,可以使用DoG(差分高斯)来近似计算LoG,所以在DoG的尺度空间下检测极值点。
    2.删除不稳定的极值点。主要删除两类:低对比度的极值点以及不稳定的边缘响应点。

  2. 确定特征点的主方向。以特征点的为中心、以3×1.5σ为半径的领域内计算各个像素点的梯度的幅角和幅值,然后使用直方图对梯度的幅角进行统计。直方图的横轴是梯度的方向,纵轴为梯度方向对应梯度幅值的累加值,直方图中最高峰所对应的方向即为特征点的方向。
    4.生成特征点的描述子。 首先将坐标轴旋转为特征点的方向,以特征点为中心的16×16的窗口的像素的梯度幅值和方向,将窗口内的像素分成16块,每块是其像素内8个方向的直方图统计,共可形成128维的特征向量。

  3. RANSAC随机一致性采样
    RANSAC(Random Sample Consensus)即随机采样一致性,该方法是用来找到正确模型来拟合带有噪声数据的迭代方法。给定一个模型,例如点集之间的单应性矩阵,RANSAC的基本思想在于,找到正确数据点的同时摒弃噪声点。
    虽然特征提取所用的SIFT算法是具有很强稳健性的描述子,但这方法仍远非完美,还会存在一些错误的匹配。而单应性矩阵需要选取4对特征点计算,万一选中了不正确的匹配点,那么计算的单应性矩阵肯定是不正确的。因此,为了提高计算结果的鲁棒性,我们下一步就是要把这些不正确的匹配点给剔除掉,获得正确的单应性矩阵。在这里使用了RANSAC算法:随机抽取不同的4对特征匹配坐标(在图1中随机抽取4个特征坐标,以及这4个特征坐标在图2中匹配的4个特征坐标,组成4对特征匹配坐标),利用这4对特征匹配坐标计算出矩阵H1(3x3的一个矩阵,图2经过矩阵变换后,可以把图2映射到图1的坐标空间中,再将图2进行简单的平移即可与图1实现无缝拼接),再将图2中所有特征匹配点经过该透视矩阵H1映射到图1的坐标空间,然后与图1匹配点实际坐标求欧氏距离(就是为了验证计算出来的这个H1矩阵是否满足绝大多数特征匹配点);之后重复上面内容,再随机抽取不同的四组特征匹配坐标,再计算透视矩阵H2,再求欧式距离,如此重复多次。最后以欧式距离最小的那个透视矩阵(表示这个特征矩阵H满足最多的特征匹配点,它最优秀)作为最终计算结果。

3.单应性矩阵
在计算机视觉领域,空间同一平面的任意两幅图像被单应矩阵联系着(假设在针孔相机模型中),即一个相机拍摄空间同一平面的两张图像,这两张图像之间的映射关系可以用单应矩阵表示。
在两视几何中,也可以这样理解,两架相机拍同一空间上得到两幅图像A、B,其中图像A到图像B存在一种变换,而且这种变换是一一对应的关系,这个变换矩阵用单应矩阵表示。要实现两张图片的简单拼接,其实只需找出两张图片中相似的点 (至少四个,因为 homography 矩阵的计算需要至少四个点), 计算一张图片可以变换到另一张图片的变换矩阵 (homography 单应性矩阵),用这个矩阵把那张图片变换后放到另一张图片相应的位置 ( 就是相当于把两张图片中定好的四个相似的点給重合在一起)。如此,就可以实现简单的全景拼接。当然,因为拼合之后图片会重叠在一起,所以需要重新计算图片重叠部分的像素值,否则结果会很难看。

4.图片融合
在用计算出的变换矩阵对其中一张图做变换,然后把变换的图片与另一张图片重叠在一起,并重新计算重叠区域新的像素值。对于计算重叠区域的像素值,其实可以有多种方法去实现一个好的融合效果,这里就用最简单粗暴的但效果也不错的方式。直白来说就是实现一个图像的线性渐变,对于重叠的区域,靠近左边的部分,让左边图像内容显示的多一些,靠近右边的部分,让右边图像的内容显示的多一些。用公式表示就是,假设 alpha 表示像素点横坐标到左右重叠区域边界横坐标的距离,新的像素值就为 newpixel = 左图像素值 × (1 - alpha) + 右图像素值 × alpha 。这样就可以实现一个简单的融合效果。

三、程序实现
1.输入
将左右两图读入:

img1=imread(‘left.jpeg’); >>img2=imread(‘right.jpeg’);
使用 imshowpair 并列显示出来:

imshowpair(img1,img2,‘montage’);
利用rgb2gray函数将img1,img2转换成灰度图:

img_gray=rgb2gray(img);
图2 读取图像后并列显示

2.特征提取与匹配
1.运用《第十一节:立体视觉(下)》中图像矫正部分所讲内容,使用 detectSURFFeature函数来检测2000个特征,‘MetricThreshold’- Strongest feature threshold,表示最强的特征阈值,提取对象是二维灰度图像:

blobs1 = detectSURFFeatures(img1_gray, ‘MetricThreshold’, 2000);
blobs2 = detectSURFFeatures(img2_gray, ‘MetricThreshold’, 2000);
可以用>>imshow(img1); hold on;plot(blobs1.selectStrongest(2000));将这2000个点显示出来,如下图:
在这里插入图片描述
在这里插入图片描述

图3 两图检测出来的2000个特征点

然后使用extractFeatures函数分别来提取图1,图2特征:

[features1, validBlobs1] = extractFeatures(img1_gray, blobs1);
[features2, validBlobs2] = extractFeatures(img2_gray, blobs2);
在使用matchFeatures函数进行特征匹配:

indexPairs = matchFeatures(features1, features2, ‘Metric’, ‘SAD’, …
‘MatchThreshold’, 5);

matchedPoints1 = validBlobs1(indexPairs(:,1)

标签:energyMat,--,double,论文,矩阵,特征,拼接,期末,图像
来源: https://blog.csdn.net/qq_41079931/article/details/111596673

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有