demi的博客

OpenGL中的深度、深度缓存、深度测试

1、深度

所谓深度,就是在openGL坐标系中,像素点Z坐标距离摄像机的距离。摄像机可能放在坐标系的任何位置,那么,就不能简单的说Z数值越大或越小,就是越靠近摄像机。

2、深度缓冲区

深度缓冲区原理就是把一个距离观察平面(近裁剪面)的深度值(或距离)与窗口中的每个像素相关联。

首先,使用glClear(GL_DEPTH_BUFFER_BIT),把所有像素的深度值设置为最大值(一般是远裁剪面)。

然后,在场景中以任意次序绘制所有物体。硬件或者软件所执行的图形计算把每一个绘制表面转换为窗口上一些像素的集合,此时并不考虑是否被其他物体遮挡。

其次,OpenGL会计算这些表面和观察平面的距离。如果启用了深度缓冲区,在绘制每个像素之前,OpenGL会把它的深度值和已经存储在这个像素的深度值进行比较。新像素深度值<原先像素深度值,则新像素值会取代原先的;反之,新像素值被遮挡,他颜色值和深度将被丢弃。

GPU渲染流水线

GPU的渲染流水线的主要任务是完成3D模型到图像的渲染(render)工作。常用的图形学API编程模型中的渲染过程被分为几个可以并行处理的阶段,分别由GPU中渲染流水线的不同单元进行处理。GPU输入的模型是数据结构(或语言)定义的对三维物体的描述,包括几何、方向、物体表面材质以及光源所在位置等;而GPU输出的图像则是从观察点对3D场景观测到的二维图像。在GPU渲染流水线的不同阶段,需要处理的对象分别是顶点(vertex)、几何图元(primitive)、片元(fragment)、像素(pixel)。

如图1-6所示,典型的渲染过程可以分为以下几个阶段:

1.顶点生成

图形学API用简单的图元(点、线、三角形)表示物体表面。每个顶点除了(x,y,z)三维坐标属性外还有应用程序自定义属性,例如位置、颜色、标准向量等。

2.顶点处理

图像处理常用边缘检测算子

边缘是图像中像素值发生剧烈变化而不连续的结果,它存在于目标与背景、目标与目标、区域与区域之间。边缘检测是图像基于边界分割的第一步。由图像灰度的特点,可将边缘类型分为阶梯状边缘(处于图像两个具有不同灰度值的相邻区域之间)、脉冲状边缘(它主要对应细条状灰度值突变区域,可以看做两个背景阶梯状的边缘构成)、屋顶状边缘(它的边缘上升、下降都比较平缓,可以看作是将脉冲状边缘拉伸而得到的)。

如何理解梯度下降

梯度下降是迭代法的一种,可以用于求解最小二乘问题(线性和非线性都可以)。在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(Gradient Descent)是最常采用的方法之一。

在求解损失函数的最小值时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数和模型参数值。反过来,如果我们需要求解损失函数的最大值,这时就需要用梯度上升法来迭代了。

一般情况下,我们把要最小化或最大化的函数称为目标函数。当我们队其进行最小化时,我们也把他称为代价函数,损失函数或误差函数。

我们说导数对于最小化一个函数很有用,因为它告诉我们如何更改x来略微地改善y。加入,我们知道对于足够小的\varepsilon来说,

f(x-\varepsilonsign(f'(x)))<f(x)。因为我们可以将x往导数的反方向移动一小步来减少f(x)。这种技术被称为梯度下降。

自动驾驶之测试验证技术盘点

自动驾驶在落地之前必须要经过测试和验证其技术的安全性,那么自动驾驶技术该如何测试和验证呢?本文就带大家探讨一下当前自动驾驶测试技术都有哪些?

此前,国外有机构通过研究提出,如果要证明自动驾驶能够比人类驾驶员更可靠,那么至少需要在真实或者模拟环境中行驶 110 亿英里。

但这种方法很难完成,因为行驶 110 亿英里需要花费的人力物力财力非常之大,并且完成这个测试耗时也足够长,就连路测里程数最多的Waymo利用了9年的时间才完成了真实路测里程1000万英里、模拟环境行驶里程50亿英里的测试。

并且,如此众多的企业要制造推出自动驾驶车,在企业的自我测试之外,政府还需要有一套标准的测试方式对其验证,如果这个标准测试方法也按照这个方式来进行,自动驾驶的到来就是遥遥无期。那么究竟该如何进行测试呢?本文给出了几个测试方法。

自动驾驶测试技术发展情况

Unity小技巧介绍(四)

前面已经为大家分享了三篇Unity小技巧相关的文章,涉及到编辑器操作及脚本等多方面的内容,掌握这些小技巧能大大提高我们的开发效率。今天为大家介绍第四篇。

技巧一

在float型的字段前添加范围属性声明如[Range(0, 10)],即可在检视面板中使用滑动条来设置该字段的值。

1

技巧二

对一组字段使用属性声明[Heaader(“XX”)],可以在检视面板中将字段进行分组。

2019年十大技术预测

一些技术趋势进行预测很容易。例如,数字化转型、云计算、人工智能、量子计算等流行术语将会在新闻中继续受到广泛关注。但人们不太清楚的是这些技术领域将会如何发展?哪些创新将成为商业活动的组成部分?哪些技术将会逐渐失去重要性?企业将如何利用这些技术来获得竞争优势?IT领导者现在应该做些什么来为不久的将来做好准备?

为了回答这些问题,需要仔细研究咨询机构和分析机构发布的预测,寻找2019年最有趣和最相关的预测。但没有采用行业供应商的预测。这是因为大多数报告都有厂商自己的目的,对于其他IT团队来说没有实际价值。另一方面,分析师的预测可能对企业CIO和其他IT领导者有用,他们正在撰写目标、制定预算,以及确定未来一年的培训重点。

在许多情况下,分析师已经为企业IT团队提供了如何利用这些趋势的直接建议。通常,各个研究机构就企业应采取哪些步骤达成一致。但在其他情况下,网络安全是其中的一个趋势,分析师对于技术发展趋势如何影响企业以及领导者应该采取哪些措施来做好准备方面存在着截然不同的观点。

1. 数字化转型将有赢家和输家

基于深度学习的细粒度图像分类综述

1. 简介

细粒度图像分类 (Fine-grained image categorization), 又被称作子类别图像分类 (Sub-category recognition),是近年来计算机视觉、 模式识别等领域一个非常热门的研究课题。 其目的是对属于同一基础类别的图像(汽车、狗、花、鸟等)进行更加细致的子类划分, 但由于子类别间细微的类间差异以及较大的类内差异, 较之普通的图像分类任务, 细粒度图像分类难度更大。 图1所示为细粒度图像分类数据集CUB-200[1]中的两个物种,加州鸥和北极鸥,从竖直方向的图片对比可以看出,两个不同物种长相非常相似,而从对比水平方向可知,同一物种由于姿态,背景以及拍摄角度的不同,存在较大的类内差异。 因此,要想顺利的对两个极为相似的物种进行细粒度分类,最重要的是在图像中找到能够区分这两个物种的区分性的区域块(discriminative part),并能够对这些有区分性的区域块的特征进行较好的表示。

机器视觉引发的智能制造领域变革

随着柔性制造系统的推广和传感、模式识别等技术的发展,针对工业需求的视觉和图像技术逐步成熟,制造业信息获取能力加强。视觉和图像技术搭载在摄像头、传感器、雷达等智能硬件内,能够实现图像信息的获取和分析。

面向工业的视觉和图像分析技术逐步成熟,制造业信息获取能力不断增强

随着柔性制造系统的推广和传感、模式识别等技术的发展,针对工业需求的视觉和图像技术逐步成熟,制造业信息获取能力加强。视觉和图像技术搭载在摄像头、传感器、雷达等智能硬件内,能够实现图像信息的获取和分析。信息从传统的单一维度数据拓展为包含速度、尺寸、色谱等信息的多维度立体海量数据,并同设计信息和加工控制信息集成,为后续工况监测、质量检验等生产环节提供数据支撑。制造业信息获取渠道得到拓展,信息获取效率大幅提升。华睿科技发布多系列面阵相机、高分辨率定焦镜头产品以及读码、结构光3D相机等最新产品,通过isp算法保证图像质量,可广泛应用于工业生产领域。

机器视觉结合信息网络技术催生新服务内容,生产监控智能化水平得到提升

盘点2019年最值得警惕的十大技术 若被滥用后果很严重

据外媒报道,技术本身并不能控制自己如何被应用。新技术需要我们更多关注,建设性地表达我们的关切,并在人们受到伤害时承担起责任。《福布斯》杂志编辑杰西卡·巴伦(Jessica Baron)列出了2019年人们应该关注的十大技术,希望能让普通大众了解世界各地实验室正在发生的事情。巴伦的目标是围绕这些技术提出伦理和政策问题,让普通人保持警惕。2019年,这份名单包括了部分人们耳熟能详的技术(比如5G),还有些令人惊讶的技术。

1. 克隆宠物

现在只要花2.5万到5万美元,你就可以克隆自己的宠物猫或狗了。然而,这并不能保证你能找回已经失去的亲密宠物。动物爱好者很快就会注意到,用宿主动物克隆的宠物可能会过上相当悲惨的生活。在已经有这么多动物无家可归的情况下,投资于这项技术真的正确吗?

2. DIY神经黑客

可用于家中的神经刺激设备已经进入市场,但自己制造这类设备的方案已经在互联网上铺天盖地了。顾客们希望用微小电流冲击他们的大脑,以便帮助提高记忆到注意力,但我们还不知道神经刺激会产生哪些长期影响。