为了获得用于相机位姿估计的特征点对做的图像预处理

1、阈值分割
目的是获得领航AGV的外壳轮廓

阈值分割是按照图像像素灰度幅度进行分割的方法,它是把图像的灰度分成不同的等级,然后用设置灰度门限(阈值)的方法确定有意义的区域或要分割物体的边界。
目的是要按照灰度级,利用图像中要提取的目标区域与其背景在灰度特性上的差异,把图像看作具有不同灰度级的两类区域(目标区域和背景区域)的组合,选取一个比较合理的阈值,对像素集合进行一个划分,以确定图像中每个像素点应该属于目标区域还是背景区域,从而产生相应的二值图像。

0纯黑色--------->255纯白色

2、对相邻两帧图像进行特征点提取和匹配
目的是为了得到特征点对

(1)利用ORB特征点检测方法提取两帧图像的特征点集
ORB(Oriented FAST + Rotated BRIEF)

双车协同搬运系统对实时性的要求,选择ORB来提取特征点,后面两个算法精度高但是太慢了,会跟丢

FAST算子的基本原理是:若某像素点与其周围领域内足够多的连续的像素点存在某一属性差异,并且该差异大于指定阈值,则可以断定该像素点与其邻域像素有可被识别的不同之处,可以作为一个特征点(角点);对于灰度图像,FAST算子考察的属性是像素与其邻域的灰度差异

举例如下图:

首先任意选定一个点作为候选的特征点,以该点为圆心,半径是3的圆周上的共计16个像素点中心点的差异。如果有 连续的12 个像素点与中心点的灰度差的绝对值大于或低于某一给定阈值,则该点被检测为FAST特征点。
为了提高检测速度,FAST提出分割测试的概念,不是逐个遍历考察圆周上的16个像素点,而是先考察垂直和水平方向上的4个点,1,9,5,13 。先测试 1 和 19, 如果它们符合阈值要求再测试 5 和 13。
如果 p 是角点,那么这四个点中至少有 3 个要符合阈值要求。如果不是的话肯定不是角点,就放弃,节约了检测时间,提高了效率。

通过这步测试的点再继续进行测试(是否有 12 的点符合阈值要求)。

初步筛选后,在对剩下的符合条件的点实施FAST算子进行特征点检测,最后进过非极大值抑制(去除非极大值的算法,挑出最显著的特征点)后得到最终的特征点检测结果。

(2)特征点粗匹配(匹配过程暂时不是很清楚)
ORB特征点通过汉明距离进行图像特征点匹配,选汉明距离小的对(汉明距是两个字符异或操作所得字符里面1的个数)
是对BRIEF描述子用汉明距的,BRIEF 是一种二进制描述,需要用汉明距离度量。
事先通过FAST得到了特征点的位置,BRIEF在特征点附近随机的选取若干点对,将这些点对的灰度值大小组合成一个长为256的二进制字串,并将这个二进制字串作为该特征点的特征描述子。
大量实验表明,不匹配特征点的描述子的Hamming距离在128左右,匹配点对描述子的Hamming距离则远小于128。

采用FLANN算法进行特征点的配准。计算所有匹配点对的最近邻距离d1和次近邻距离d2。设定阈值T,如果两者的比值r=d1/d2小于T,则保留该匹配点对。也就是用最优距离和次优距离作比,找区分度明显的对。

(3)双向交叉滤波筛选(?)

(4)余弦相似度提纯
两个特征向量间的余弦值越大。则特征向量相似程度越高。
也就是说越接近1,两个特征描述向量的相关性就越高。

(5)使用RANSAC算法对错误匹配点对进行最后一次筛除。(待深入)
随机抽样一致算法(RANdom SAmple Consensus,RANSAC)

RANSAC算法假设数据中包含正确数据和异常数据(或称为噪声)。
正确数据记为内点,异常数据记为外点。

对误匹配的粗差点进行剔除,RANSAC算法就是一种剔除离群点的很好的一种方法。

RGB-D立体视觉导航之图像预处理相关推荐

  1. 图像预处理之减去RGB均值

    减去RGB均值(实例以DIV2K数据集为例) 在计算机视觉领域中,一定免不了的就是图像预处理中的 逐个样本减去mean值的过程,那么为什么一定要做这一步呢? 为什么每张图片都要减去数据集均值呢? 原因 ...

  2. 指针式仪表自动读数与识别(二):仪表图像预处理

    一.仪表图像预处理 1.预处理操作 在做任何图像处理相关操作之前都要先进行预处理.预处理操作包括: (1) 缩放和变换 缩放操作的主要目的是减小图像大小,减少计算量,缩放操作不是必须的,但是如果系统对 ...

  3. 图像预处理第7步:标准归一化

    图像预处理第7步:标准归一化 将分割出来的各个不同宽.高的数字字符宽.高统一 //图像预处理第7步:标准归一化 //将分割出来的各个不同宽.高的数字字符宽.高统一 void CChildView::O ...

  4. 如何利用图像预处理提高OCR的准确性?

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 OCR代表光学字符识别,将文档照片或场景照片转换为机器编码的文本. ...

  5. opencv ocr字符识别_OCR深度实践系列:图像预处理

    近一个半月时间没更了,在这段时间里针对OCR业务进行了深入研究,业务也已上线,谨以此篇作为OCR系列的开篇. 目前NLP+OCR的落地应用在市场上愈加火热,如金融领域的研报分析.司法领域的合同审核甚至 ...

  6. 图像预处理第8步:紧缩重排数字字符

    //图像预处理第8步:紧缩重排已经分割完毕的数字字符,并形成新的位图句柄 void CChildView::OnImgprcShrinkAlign() {m_hDIB=AutoAlign(m_hDIB ...

  7. 计算机视觉——图像预处理及边缘检测

    1.为什么要进行图像预处理? \qquad当对图像进行边缘.轮廓的检测时,图像噪声会对检测产生不利影响,并且为了帮助模型专注于一般细节并获得更高的准确度,我们需要对图像进行预处理. \qquad预处理 ...

  8. PyTorch框架学习六——图像预处理transforms(二)

    PyTorch框架学习六--图像预处理transforms(二) (续)二.transforms的具体方法 4.图像变换 (1)尺寸变换:transforms.Resize() (2)标准化:tran ...

  9. pytorch —— 图像预处理模块(Transforms)

    transforms运行机制 torchvision是pytorch的计算机视觉工具包,在torchvision中有三个主要的模块: torchvision.transforms,常用的图像预处理方法 ...

最新文章

  1. 底部固定菜单_捡起一只妲己团团,附送一个同校固定队友!还有这种好事?
  2. k8s中service类型
  3. __name__=='__main__'的理解和使用
  4. java 钩子_java中钩子方法的概念
  5. C语言实现ternary search三分查找算法(附完整源码)
  6. freemind在ubuntu20.04下面的安装
  7. FastJson/spring boot: json输出
  8. scipy是python下的什么_Python下科学计算包numpy和SciPy的安装
  9. python获取手机号码归属地_Python批量获取并保存手机号归属地和运营商的示例
  10. 对象存储 OSS > 产品简介 > 什么是对象存储OSS
  11. eclipse中maven项目pom文件第一行报错解决方法
  12. springMVC 简单事例
  13. 余额宝限购了!为啥?
  14. 注册验证python_Python登录注册验证功能实现
  15. Win10家庭中文版如何更改Users下的中文用户名
  16. 何为民间IP,小游戏竟然还可以这样做?脑洞大开
  17. 肺炎期间,送上一份家庭健身计划
  18. javascript Array系列函数之9:slice拷贝一个数组
  19. Android播放音乐案例分享
  20. mac使用ssh免密登录腾讯云服务器主机,并通过alias设置指令别名

热门文章

  1. oracle utl_smtp,Oracle 11g 环境下,利用utl_smtp创建发送邮件的存储过程
  2. sb3500_您的代码如何在3500万人的家庭中成为社会公益的代言人
  3. MySQL查询优化分析
  4. 海康威视网络摄像头通过浏览器网页的配置流程
  5. Splay(不是Spaly,也不是slay,附两道练(mu)习(ban)题)
  6. 数学模型课程期末复习提纲(上)
  7. Android网络数据JSON解析使用总结
  8. 使用Python批量下载哨兵一号(sentinel-1)的精密轨道数据(precise orbit data)
  9. spry使用视频_Spry Fox如何利用Cloud Build
  10. 1.51单片机开发环境配置