最近看了一篇TPAMI文章Determining Both Surface Position and Orientation in Structured-Light-Based Sensing
,是用伪随机序列编码图像,图像是这样的:
最后利用该编码图像重构出来的结果是这样的
具体怎么编码呢?怎么得到最终的结果呢?今天先简单从下面三部分介绍:
1,伪随机序列
2,伽罗华域
3,编码过程
1, 伪随机序列(PN序列)
先科普一下伪随机噪声,伪随机噪声具有类似于随机噪声的某些统计特性,同时又能重复产生,主要未来实现高可靠的保密通信,特别是在CDMA系统中作为扩频码已成为CDMA技术中的关键问题。目前广泛应用的伪随机噪声都是由周期性数字序列经过滤波等处理后得到的。
那这种周期性数字序列成为伪随机序列,同时又称为伪随机信号或者伪随机码。
伪随机序列的分类:1,m序列;2,M序列;3,二次剩余序列;4,双素数序列
伪随机序列的性质(以m序列为例):
1,均衡性 在m序列的一个周期中,1和0的数目基本相等,准确的说是,“1”的个数比“0”的个数多一个。
2,游程分布 什么是游程呢?可不是梦游的路程哦!我们把一个序列中取值相同的那些相继的(连在一起的)元素合称为一个“游程(run)”。一个游程中元素的个数称为游程长度。一般来说,在m序列中。长度为1 的游程占游程总数的1/2,长度为2的游程占游程总数的1/4,长度为3的游程占1/8。即长度为k的游程数目占游程总数的2-k次幂。
3,移位相加特性 一个m序列M与其经过任意次延迟移位产生的另一个不同序列Mr模2相加,得到的仍是M的某次延迟移位序列Ms。
4,自相关特性 自相关特性具有周期性,周期为m。
5,功率谱密度 对m序列的自相关函数作傅里叶变换,求出其功率谱密度。
6,伪噪声特性 由于m序列的这些特性与伪随机序列的性质是相似的,所以m序列被称为伪随机序列,同时具有上述性质的也都被称为伪随机序列。
2, 伽罗华域
伽罗华(也译作伽瓦罗),法国数学家,群论的创立者。用群论彻底解决了根式求解代数方程的问题,而且由此发展了一整套关于群和域的理论,先介绍几个概念。
1、域
一组元素的集合,以及在集合上的四则运算,构成一个域。其中加法和乘法必须满足交换、结合和分配的规律。加法和乘法具有封闭性,即加法和乘法结果仍然是域中的元素。
域中必须有加法单位元和乘法单位元,且每一个元素都有对应的加法逆元和乘法逆元。但不要求域中的 0有乘法逆元。
2、有限域
仅含有限多个元素的域。因为它由伽罗华所发现,因而又称为伽罗华域。
所以当我们说伽罗华域的时候,就是指有限域。
GF(2^w)表示含有2^w个元素的有限域。
3、本原多项式
域中不可约多项式是不能够进行因子分解的多项式, 本原多项式 (primitive polynomial)是一种特殊的不可约多项式。当一个域上的本原多项式确定了,这个域上的运算也就确定了。本原多项式一般通过查表可得,同一个域往往有多个本原多项式。
通过将域中的元素化为多项式形式,可以将域上的乘法运算转化为普通的多项式乘法再模本原多项式。
提到多项式以及本原多项式,就难免会涉及多项式的运算,这样才能确定是否为本原多项式。
多项式运算
由于GF(2^w)上的四则运算是基于多项式运算的,这里先介绍多项式运算。
多项式一般长这个样子:f(x) = x^6 + x^ 4 + x^2 + x + 1。
1、多项式加减法
将两个多项式中相同阶数的项系数相加或相减。
例如 (x^2 + x ) + (x + 1) = x^2 + 2x +1
2、多项式乘法
将其中一个多项式的各项分别与另一个多项式的各项相乘,然后把相同指数的项的系数相加。
例如 (x^2 + x) * (x + 1) = x^2 * (x + 1) + x * (x + 1) = x^3 + x^2 + x^2 + x
3、多项式除法
使用长除法。例如计算x^3-12x^2-42,除以x-3。使用长除法计算,商x^2-9x-27,余数-123
4、GF(2^w)上的多项式运算
对于GF(2^w)上的多项式计算,多项式系数只能取 0或1。(如果是GF(3^w),那么系数可以取 0、 1、 2)
GF(2^w)的多项式加法中,合并阶数相同的同类项时,由于0+0=0,1+1=0,0+1=1+0=1,因此系数不是进行加法操作,而是进行异或操作。
GF(2^w)的多项式减法等于加法,例如x ^4 – x^4就等于x^4 + x^4。
1、有限域GF(p):有限域GF(p),其中p为素数。
2、有限域GF(2^w):实际应用中,很多场合需要 0到255这256个数字能组成一个域。但256不是素数,小于256的最大素数为251,如果直接把大于等于251的数截断为250,则会丢失一部分数据。因此引入了GF(p^w),其中p为素数,通常取p=2。计算机领域中经常使用的是GF(2^8),8刚好是一个字节的比特数。
伽罗华域的元素可以通过该域上的本原多项式生成。通过本原多项式得到的域,其加法单位元都是 0,乘法单位元是1。
以GF(2^3)为例,指数小于3的多项式共8个: 0,
1, x, x+1, x^2, x^2+1, x^2 + x, x^2+x+1。其系数刚好就是000,001, 010, 011, 100, 101, 110, 111,是0 到7这8个数的二进制形式。
GF(2^3)上有不只一个本原多项式,选一个本原多项式x^3+x+1,这8个多项式进行四则运算后 mod (x^3+x+1)的结果都是8个之中的某一个。因此这8个多项式构成一个有限域。
通过本原多项式生成元素
设P(x)是GF(2^w)上的某一个本原多项式,GF(2^w)的元素产生步骤是:
1、给定一个初始集合,包含0,1和元素x,即 {0,1,x};
2、将这个集合中的最后一个元素,即x,乘以x,如果结果的度大于等于w,则将结果mod P(x)后加入集合;
3、直到集合有2^w个元素,此时最后一个元素乘以x再mod P(x)的值等于1。
3,编码过程(最关键的部分:伪随机序列在伽罗华域内的窗口特性)
如果宽度为m的窗口沿着伪随机序列以delta m滑动,那么2-1次幂个非二进制m-tuples中的每一个都可以看到恰好一次。见下图,
(这是m = 4的情况。 h(x)是原始多项式的事实。)为了避免末端的困难,要么想象序列的三个副本彼此相邻放置,要么将序列写成圆形。
如果是二维的窗口属性:如果kl X kz窗口滑过a中的伪随机数组,则每个个非零二进制kl X kz阵列恰好一次看到 ,对于n = 15的情况,参见下图,kl = kz = 2。
最后我们针对GF(q)而说,GF(q)是具有q个元素的伽罗瓦域,我们需要一个m次多项式h(x),其系数来自GF(q),长度为的输出序列的一段称为GF(q)上的伪随机序列。
这些可以通过折叠伪随机序列来构造,取n=的形式,使得n1 =
和 n2 = n / n 1 是相对素数且大于1。
现在我们回到论文中:
在我们的SLS中使用由菱形元素组成的伪随机颜色图案,如下图所示。 它按以下方式构建,原始多项式h(x),在具有四个元素(GF(4))的伽罗瓦域上定义,首先用于生成伪随机序列:
根据上述原始多项式,生成长度为4,095()的伪随机序列。 然后,通过折叠序列可以产生大小为65x63的伪随机数组。 通过图案的窗口属性,模式中每个大小为2x3的窗口在窗口组成的元素上是唯一的。 这意味着每个大小为2x3的窗口在整个图案中只出现一次。由于伪随机阵列是在GF(4)上构建的,因此在图案中总共必须有四个不同的元素,在此,我们使用四种不同的颜色(红色,绿色,蓝色和黑色),这些颜色具有鲜明的对比度它们之间。 图案的背景设置为白色。编码图像如下图所示:
下一篇文章我会继续分享这篇论文是如何通过这个编码图像去完成三维重构。