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

所谓的随机指的相关函数是高斯的,只有自相关时为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. 【撸码师的读书笔记】 深入理解Java虚拟机——JVM高级特性与最佳实践
  2. 磁盘硬件结构及容量计算
  3. 从源代码角度分析ViewStub 疑问与原理
  4. RestTemplate技术预研-认识RestTemplate
  5. linux下python脚本print中文显示不正确_在终端上运行python脚本,没有打印或显示-为什么?...
  6. dhl:mvc用户登陆身份验证
  7. 大数据给教育带来怎样的可能?
  8. 常用Maven插件介绍(下)(转)
  9. MSSQL sum()计算expression转化为数据类型int时发生算术溢出错误解决
  10. xml和TreeView
  11. mysql 使用内置函数来进行模糊搜索(locate()等)
  12. 网页选项卡应用4-12
  13. 用html代码制作一个表单页面,HTML网页表单制作详细讲解
  14. linux启动mysql命令
  15. Android音视频——H265编码核心技术解析
  16. 百炼JAVA-----实现家庭收支记账软件
  17. 企业微信逆向分析之——自己二维码——静态分析
  18. 鼠标悬浮触发事件(onmouseover)实现
  19. [整站源码]thinkphp古筝古琴书画培训类网站模板+前后端源码
  20. 疯了疯了,13楼惊现蟋蟀

热门文章

  1. 媒介方案及其实施如何体现其策略性和创意性、科学性和艺术性结合?字数不限...
  2. c语言程序快排,C语言快排
  3. tensorflow环境下keras安装
  4. 程序分析-klee工具分析
  5. 一个牛人给java初学者的建议(很有意义,转载的)
  6. Google秋招原题分享,捡漏期仅剩1个月!(过期失效)
  7. 辗转相除法原理(求最大公约数)
  8. kettle bat文件启动带参数
  9. 测试开发之路--喷喷埋雷的事,吵吵代码的情
  10. 前端之路:工具化与工程化