角点

openGL两种投影方式

|▌冷眼眸甩不掉的悲伤 提交于 2020-01-31 05:20:14
from http://hi.baidu.com/fcqian/blog/item/cc5794ec76807a3f27979131.html 投影变换是一种很关键的图形变换, OpenGL中只提供了两种投影方式,一种是正射投影, 另一种是透视投影。不管是调用哪种投影函数,为了避免不必要的变换,其前面必须加上以下两句: glMAtrixMode(GL_PROJECTION); glLoadIdentity(); 事实上,投影变换的目的就是定义一个视景体,使得视景体外多余的部分裁剪掉,最终图像只是视景体内的有关部分。本节将详细讲述投影变换的概念以及用法。 1 正射投影(Orthographic Projection) 正射投影,又叫平行投影。这种投影的视景体是一个矩形的平行管道,也就是一个长方体,如图 所示。正射投影的最大一个特点是无论物体距离相机多远,投影后的物体大 小尺寸不变。这种投影通常用在建筑蓝图绘制和计算机辅助设计等方面,这些行业要求投影后的物体尺寸及相互间的角度不变,以便施工或制造时物体比例大小正确。 此种模式下,不需要设定照相机位置、方向以及视点的位置,也就是说不需要gluLookAt函数。 OpenGL正射投影函数共有两个。 一个函数是: void glOrtho(GLdouble left,GLdouble right,GLdouble bottom

OpenCV中角点检测:Harris、Shi-Tomasi、亚像素级角点检测

∥☆過路亽.° 提交于 2020-01-26 01:51:54
1、角点的定义 角点通常被定义为两条边的交点,或者说,角点的局部邻域应该具有两个不同区域的不同方向的边界。比如,三角形有三个角,矩形有四个角,这些就是角点,也是他们叫做矩形、三角形的特征。 角点是个很特殊的存在。如果某一点在任意方向的一个微小的变动都会引起灰度很大的变化,那么我们就可以把该点看做是角点。 角点检测(Corner Detection)是计算机视觉系统中获取图像特征的一种方法,广泛应用于运动检测、图像匹配、视频跟踪、三维重建和目标识别等,也可称为特征点检测。 2、 角点检测算法的基本思想 使用一个固定窗口在图像上进行任意方向上的滑动,比较滑动前与滑动后两种情况,窗口中的像素灰度变化程度,如果存在任意方向上的滑动,都有着较大灰度变化,那么我们可以认为该窗口中存在角点。 目前,角点检测算法还不是十分完善,许多算法需要依赖大量的训练集和冗余数据来防止和减少错误的特征的出现。对于角点检测算法的重要评价标准是:其对多幅图像中相同或者相似特征的检测能力,并且能够应对光照变化、或者图像旋转等影响。 关于角点的具体描述可以有几种: 一阶导数(即灰度的梯度)的局部最大所对应的像素点; 两条及两条以上边缘的交点; 图像中梯度值和梯度方向的变化速率都很高的点; 角点处的一阶导数最大,二阶导数为零,指示物体边缘变化不连续的方向。 三类角点检测算法: 基于二值图像的角点检测;

目标检测中基于角点检测:CornerNet Detecting Objects as Paired Keypoints

孤者浪人 提交于 2020-01-24 23:57:46
原始内容来源于:https://blog.csdn.net/weixin_40414267/article/details/82379793 参考文献:https://arxiv.org/abs/1808.01244 pytorch代码实现:https://github.com/umich-vl/CornerNet 包括理解! CornerNet: Detecting Objects as Paired Keypoints 摘要 我们提出了一种新的目标检测方法,使用单个卷积神经网络将目标边界框检测为 一对关键点(即边界框的左上角和右下角) 。通过将目标检测为成对关键点,我们消除了现有的one stage检测器设计中对一组anchors的需要。除了上述新颖的构想,文章还引入了 corner pooling ,这是一种新型的池化层,可以帮助网络更好地定位边界框的角点。CornerNet在MS COCO上实现了42.1%的AP,优于所有现有的one stage检测器。 1 引言 基于卷积神经网络的对象检测器(ConvNets)[20,36,15]已经在各种具有挑战性的基准测试中取得了最新成果[24,8,9]。现有技术方法的一个 共同组成部分是anchor boxes [32,35],它们是包含各种尺寸和宽高比的矩形框,是用作检测的候选框。anchor boxes广泛用于one

目标检测基于中心点:CenterNet Keypoint Triplets for Object Detectiontection

血红的双手。 提交于 2020-01-18 00:15:26
参考文献:https://arxiv.org/abs/1904.08189 代码实现:https://github.com/Duankaiwen/CenterNet 截至目前2019.04.19,CenterNet应该是one-stage目标检测方法中性能(精度)最好的方法! CenterNet: Keypoint Triplets for Object Detectiontection 摘要 在目标检测中,基于关键点的方法经常会遇到大量不正确的边界框,主要是由于缺少对裁剪区域的额外监督造成的。本文提出了一种有效的解决方案,以最小的成本探索每个裁剪区域内的视觉模式。 本文提出的CenterNet是一个单阶段的关键点检测模型,将每个目标物看作是一个三个关键点,而不是一对关键点,从而提高了精确度和召回率。相应地,我们设计了两个模块cascade corner pooling和center pooling,分别起到丰富左上角、右下角收集的信息和在中心区域提供更多可识别信息的作用 。在MS-COCO数据集上,CenterNet实现了47%的AP,其性能优于现有的单阶段检测器至少4.9%。同时,CenterNet具有更快的推理速度,其性能与排名第一的两阶段检测器相当。 1 引言 基于锚框的目标检测算法缺点 : 借助于深度学习中的卷积神经网络(CNNs),目标检测得到了显著的改进和提高[11]

Opencv特征提取与检测学习01

我的未来我决定 提交于 2020-01-13 14:31:40
Opencv特征提取与检测学习01:Harris角点检测 1.什么是harris角点检测 harris角点检测是harris于1998年提出的检测图片角点位置的一个理论。 具体理论(我的理解) 如上图,W是我们定义的图像窗口,W(x,y)是窗口一个像素值,后面的一串是像素梯度。 当采取近似计算时,E(u,v) 约等于下面的这个式子。 Ix 2 ,Iy 2 是图像像素点在x、y方向的二阶梯度,Ix,Iy则是一阶梯度,k是响应系数;我们是可以通过索贝尔算子,拉普拉斯算子等计算以上的梯度值。 矩阵M = 所以, R = + 其中, , 是矩阵M的特征检测值,用来计算角度响应值R, 根据我们自己设定的一个阈值t,若R>t,我们就认为在W这个窗口大小的像素中,包含了角点 关于 , 在图片的不同区域,得到的值是不同的。 角点处:两个特征值都很大,而且各个方向像素梯度变化明显! 平滑区:两个特征值较小,像素梯度基本不变 边缘地带:两个特征值,一个 远大于另外一个。 2.API介绍 void cornerHarris(InputArray src, OutputArrays dst , int blocksize, int ksize , double k, int borderType=BORDER_DEFAULT) 参数详解: 1.src是输入图像,一般要求是灰度图

特征检测

孤街醉人 提交于 2020-01-09 23:03:59
计算机视觉课堂笔记 : 包括边缘检测和特征点检测两个部分 边缘检测部分 what--边缘的定义 why--提取边缘的意义 how--提取边缘的方法 what 边缘是图像中亮度突然变化的区域; 图像灰度构成的曲面上的陡峭区域; 像素灰度存在阶跃变化或屋脊状变化的像素的集合。 分类:有梯状,脊状,条状 why 边缘可以表达物体的特征; 边缘特征对于图像的变化(几何变化,灰度变化,光照方向变化)不敏感; 可以为检测物体提供有用信息; 是对图像进行预处理的过程。 how 1.使用微分滤波器 在一阶中叫梯度算子(prewitt,sobel),二阶微分滤波器叫做LoG算子,LoG=高斯平滑+拉普拉斯二阶微分,相当于先将高斯算子进行求取二阶导数再与图像进行卷积。 补充:关于卷积的一个定理,卷积的偏导数等于偏导数的卷积,即 。 ***2.canny算子 参考:J.Canny, "A Computational Approach to Edge Detection",IEEE Trans. on PAMI, 8(6),1986. 算法主要步骤: 梯度计算==》非极大值抑制==》双阈值提取边缘点 2.1梯度计算: 先做高斯平滑 分别对x,y两个方向求取一阶微分 最后求取幅值和相位角 2.2非极大值抑制 对梯度幅值图像M ,仅保留梯度方向上的极大值点。 解释:对M中的每个点进行逐一排查

视觉SLAM学习——视觉里程计VO

我只是一个虾纸丫 提交于 2019-12-31 16:01:15
视觉SLAM学习——视觉里程计VO 本文为个人学习视觉slam之后的一些片面的理解,希望能够对大家有所帮助 文章目录 视觉SLAM学习——视觉里程计VO 特征点法 ORB特征检测 1、FAST特征点提取(设提取n个角点): 2、对FAST角点构建图像金字塔实现尺度不变性 3、对角点采用灰度质心法实现旋转不变性 4、获得角点的BRIEF描述子 特征匹配 相机位姿T估计及3D点P的求取 1、2D到2D过程 1.1、位姿T的获取: 1.2、3D点P的获取 1.3、最后可加入深度滤波器对获得的深度进行滤波 2、3D到2D过程 2.1 直接线性变换DLT: 2.2 非线性优化(Bundle Adjustment) 3、3D到3D过程 3.1 ICP(迭代最近点) 3.2 非线性优化方法 光流法 1、保留特征点,但只计算关键点,不计算描述子 2、LK光流法 3、ICP或对极几何估计相机运动T 4、三角测量获得特征点3D坐标P 直接法 1、保留特征点,但只计算关键点,不计算描述子 2、最小化光度误差求解相机位姿T: 3、三角测量获得特征点3D坐标P 特征点法 ORB特征检测 这里仅仅介绍ORB特征点的提取的算法过程: 1、FAST特征点提取(设提取n个角点): 1.1、选取像素p,获得其亮度为Ip 1.2、设置阈值T(如:Ip的 20%) 1.3、以p为中心选取半径为3的圆上的16个像素点 1

CenterNet算法笔记(目标检测论文)

感情迁移 提交于 2019-12-18 23:48:02
论文名称:CenterNet: Keypoint Triplets for Object Detectiontection 论文链接: https://arxiv.org/abs/1904.08189 代码链接: https://github.com/Duankaiwen/CenterNet 简介 该论文是由中科院,牛津大学以及华为诺亚方舟实验室联合提出。截至目前(2019.04.19),CenterNet应该是one-stage目标检测方法中性能(精度)最好的方法。 传统的基于关键点的目标检测方法例如最具代表性的CornerNet通过检测物体的左上角点和右下角点来确定目标,但在确定目标的过程中,无法有效利用物体的内部的特征,即无法感知物体内部的信息,从而导致该类方法产生了很多误检 (错误目标框)。 本文利用关键点三元组即中心点、左上角点和右下角点三个关键点而不是两个点来确定一个目标,使网络花费了很小的代价便具备了感知物体内部信息的能力,从而能有效抑制误检。另外,为了更好的检测中心点和角点,该论文分别提出了 center pooling 和 cascade corner pooling 来提取中心点和角点的特征。该方法在MS COCO上,获得了 47% AP ,超过了所有已知的 one-stage 检测方法,并大幅度领先,其领先幅度至少达4.9%,推理时间略慢( 270ms

亚像素级角点检测

荒凉一梦 提交于 2019-12-09 17:42:14
  亚像素在提高检测精度上有着很大的作用,在实际的情况下,检测到的角点不会是一个准确的像素点,精确来说是一个浮点数角点,这样可以保证后面的三维重建及相机跟踪才能够更加精确。亚像素检测是基于曲线拟合的方式采用高斯,多项式及椭圆曲面来进行亚像素定位。   下图是亚像素的检测结果: 亚像素检测函数参数解释: cornerSubPix(gray,corners,winSize,zeroZone,criteria); gray,输入的灰度图像;corners,利用前面角点检测函数提供初始坐标及转化后精确的输出坐标;winSize,搜索窗口的一般尺寸大小;zeroZone,死区的一半尺寸,避免自相关矩阵出现可能的奇异值;criteria,角点迭代终止条件,迭代数目或设定的精度。 #include<opencv2/opencv.hpp> #include<iostream> using namespace std; using namespace cv; int init_value=50, max_value=555; Mat src,gray,dst; void subpix(int, void*); int main(int argc, char** argv) { src = imread("H:/cv_code/image/home.jpg"); if (src.empty()) {

高精地图中地面标识识别技术历程与实践

二次信任 提交于 2019-12-05 06:40:43
导读:本文将主要介绍高德在高精地图地面标识识别上的技术演进,这些技术手段在不同时期服务了高精地图产线需求,为高德地图构建高精度地图提供了基础的技术保证。 1.面标识识别 地面标识识别,指在地图道路中识别出各种类型的地面标识元素,如地面箭头、地面文字、时间、地面数字、减速带、车距确认线、减速丘、人行横道、停止让行线、减速让行线等。这些自动化识别结果将作为生产数据交付给地图生产产线,经过制作后演变成服务于自动驾驶、车载导航、移动导航的地图。 高精地图一般对各个地图要素精度至少有着厘米级的要求,所以相对于普通地图来说需要更高的位置精度,这也是与普通地图识别的最大不同,所以探索如何将地面标识识别得又全又准是我们一直努力的方向。 地面标识识别有两大难点:一是地面标识本身的种类、大小繁多,二是地面标识易被磨损遮挡,清晰度参差不齐,这给高精度识别带来了巨大的挑战。 1)地面标识种类繁多 :实际场景中地面标识种类繁多,在内容、颜色、形状、尺寸等方面均有不同分布。 颜色:比如黄色、红色、白色等 形状:箭头形、各种文字数字形状、条形、多条形、面状、丘状等 尺寸:国标定义的标准箭头长度为9m,但也存在1m~2m甚至1m以下的地面标识元素,尤其减速带以及人行道等尺寸差异会更大,反映到图像中像素个数以及长宽比均会有较大差异。 图1. 部分地面标识 2)磨损压盖多 :地面元素长年累月受车辆