如果一个序列,一方面它是可以预先确定的,并且是可以重复地生产和复制的;一方面它又具有某种随机序列的随机特性(即统计特性),我们便称这种序列为伪随机序列。因此可以说,伪随机序列是具有某种随机特性的确定的序列。它们是由移位寄存器产生确定序列,然而他们却具有某种随机序列的随机特性。因为同样具有随机特性,无法从一个已经产生的序列的特性中判断是真随机序列还是伪随机序列,只能根据序列的产生办法来判断。伪随机序列系列具有良好的随机性和接近于白噪声的相关函数,并且有预先的可确定性和可重复性。

所谓的随机指的相关函数是高斯的,只有自相关时为1,互相关为接近0.
        所谓的伪:指的是产生的方法是确定的,也就是这种序列是可以有确定的方法来重复产生的,而且具有周期性,而不像真正的随机序列是无法重复产生而且不具有周期性的。

在通信从通常使用LFSR线性反馈移位寄存器来产生伪随机序列:

假设初始的状态中(X4,X3,X2,X1)是1000
        现在开始移位:X1+X2 = 0, 新移入的为0, 则当前寄存器中的值为0100,输出0
        反复进行: 1000,0100,0010,1001,1100,0110,1011,0101,1010,1101,1110,1111,0111,0011,0001,1000。
        输出为: 111101011001000 (右边的最先输出)

一维随机码:
        周期性: 理论上的最大周期为2^4 = 16, 也就是每一个寄存器都遍历过0和1两个值的数目,排列组合
               这个例子中的周期=16,经过16次移位后寄存器的值还原为初始值。
        窗口特性: 用一个较小的窗口进行滑动,得到的窗口内的序列是唯一的。这是可以推导的,从上面
               这个例子中可以看到,窗口取4正好就是寄存器在某时刻的值,肯定是唯一的。
       折叠原理: 比如一个1维的伪随机序列,可以在任何位置折叠成高维比如2维的序列仍然是伪随机的。
              比如周期为3^9 -1=19682的序列可以折叠为26x757=19682的二维伪随机序列。M-ARRAY
              折叠方法如下:

多元域:   每一个寄存器的取值的数目,比如只能取0/1二进制,那么就是二元域,对于图像
                比如有R/G/B三个值,那么就是3元域,类推。
                下图为一个3元域的RGB的伪随机pattern:

同样的还存在二维伪随机码等:
          随机码组成一个KxL的矩阵,window size为vxw,每个window包含的码字只出现一次。
          同样具有一维伪随机码的各种特点包括窗口特性,周期性等。

在结构光编码中,假设已经知道了伪随机序列的产生方法和值,那么我们就知道了下面的信息:
                 周期大小,窗口大小。

这个已知的伪随机序列就是参考图像或者说是编码模板。

在匹配中使用正确的窗口大小在拍摄的图片中进行滑动,对窗口中的图案进行解码,得到该窗口内的伪随机序列的片段,这个片段在已知的编码模板中搜索同样片段进行比较,如果距离为0,那么就得到了匹配点。

可见,这种结构光编码的方法需要预先知道编码模板,并在测试图像中正确的提取到片段信息才能正确。

由于伪随机序列具有的窗口特性(窗口内的符号是唯一的),因此比较适合用于结构光编码。

后面会对结构光伪随机编码的编码实现和解码做详细的总结。

二维伪随机序列结构光编码相关推荐

  1. 视频|结构光编码与三维重建

    主讲嘉宾: 博众精工科技股份有限公司 北京 技术研究院技术总监 课程大纲: 1.结构光3D成像技术 2.结构光编解码方案 3.结构光3D相机的应用 [3D视觉工坊]公开课:结构光编码与三维重建

  2. 直播回顾|结构光编码与三维重建技术

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 大家好,本公众号现已开启线上视频公开课,主讲人通过B站直播间(bilibili号:3D视觉工坊:htt ...

  3. 二维码原理与编码介绍

    一 简介 二维条码(二维码)是用某种特定的几何图形按一定规律在平面(二维方向)分布的黑白相间的图形记录数据符号信息的. 二维码是DOI(Digital Object Unique Identifier ...

  4. Java实现二维码QRCode的编码和解码

    涉及到的一些主要类库 编码lib:Qrcode_swetake.jar         (官网介绍-- http://www.swetake.com/qr/index-e.html)          ...

  5. c++如何定义二维数组结构体_原来数组还可以这么玩(宏把数组玩坏了)

    点击上方公众号名称关注,获得更多内容 ✎ 编 者 悟 语 想起青春追寻的昨天,你也是曾经追风的少年. 文 章 导 读 今天给小伙伴们介绍下用宏对数组值进行分类使用的方式,比较大的程序中的寄存器经常会这 ...

  6. 开源二维码QR CODE编码/解码(识别)库

    在很近很近的未来,城市疏导局(前身是城市管理局)实行新政,秉持"用高科技提升城市形象"的原则,要给办证从业人员开辟专门的广告涂鸦墙,条件是:不得使用手工喷涂的字体,而必须改用工整的 ...

  7. 二维码Data Matrix编码、解码使用举例

    二维码Data Matrix的介绍见: http://blog.csdn.net/fengbingchun/article/details/44279967  ,这里简单写了个生成二维码和对二维码进行 ...

  8. 算法【动态规划】 | 【01】二维表结构

    文章目录 一.问题解决思路: 二.问题一: 1.问题描述 2.图文解析 3.递归代码 4.动态规划代码 二.问题二 1.问题描述 2.图文解析 3.递归代码 4.动态规划代码 一.问题解决思路: 先尝 ...

  9. MATLAB编写界面实战-一款优良的二维非结构化网格生成软件

    主核调用c语言编写的delaucy非结构化网格生成器,采用Matlab编写界面,界面代码如下: %--------------------------------------------------- ...

最新文章

  1. 产品经理必须知道的概念-什么是前景效应分析?用户决策背后的影响因子有哪些?
  2. matlab 双向链表,双向链表基本操作(C语言实现)
  3. AI+游戏:高效利用样本的强化学习 | 腾讯AI Lab学术论坛演讲
  4. CIKM 2021 | AutoHERI: 基于层次表示自动聚合的 CVR 预估模型
  5. rest api如何创建_创建一个安全的Spring REST API
  6. 华为手机丢失定位网站_手机端网站优化要从网站的设计和定位开始入手
  7. mysql百万数据根据索引查询_mysql创建多列索引查询百万表数据的性能优化经验分享...
  8. c语言基础程序设计报告,c语言程序设计基础课程设计报告.doc
  9. Eclipse如何重置窗口
  10. 特征选择的基本方法概述
  11. mysql实现斐波那契,C#实现斐波那契数列的几种方法整理
  12. Robomaster视觉教程(二)Win10+VS201x+Opencv3.4.x环境搭建
  13. 云服务器温控系统,服务器cpu温度监控软件
  14. pdf转换成jpg python_Python Wand将PDF转换为JPG background
  15. 成功解决pyinstaller打包时报错:lib not found的问题
  16. 干货 | Linux面试题(2020最新版)
  17. 代码审查(Code Review)
  18. python 爬虫 处理429错误
  19. 2 shell 锂基脂_昭和Shell Nerita HV高速轴承润滑脂
  20. 如何使用HTML,CSS和JavaScript创建 二进制计算器?

热门文章

  1. python控制电脑鼠标和键盘,登录QQ
  2. 我们是如何在研发过程中控制质量的?产品质量正变得越来越重要
  3. VGGNet 阅读理解 - Very Deep Convolutional Networks for Large-Scale Image Recognition
  4. 【报告分享】2021年中国高端汽车出行生态趋势洞察报告-腾讯新闻上汽奥迪(附下载)
  5. vm虚拟机安装网络适配器驱动卡死/无响应/无限等待状态
  6. c语言long int字节,C语言基本类型之long long int
  7. 华为技术有限公司-上海交通大学联合研究院成立!
  8. 李宏毅 线性代数 向量和矩阵
  9. 西部数据NAS设备网络攻击通告
  10. happypack提升项目构建速度