周报5<仅供自己学习>

一、NeRF代码

def spherify_poses(poses, bds):
    
    p34_to_44 = lambda p : np.concatenate([p, np.tile(np.reshape(np.eye(4)[-1,:], [1,1,4]), [p.shape[0], 1,1])], 1)
    
    rays_d = poses[:,:3,2:3]
    rays_o = poses[:,:3,3:4]

    def min_line_dist(rays_o, rays_d):
        A_i = np.eye(3) - rays_d * np.transpose(rays_d, [0,2,1])
        b_i = -A_i @ rays_o
        pt_mindist = np.squeeze(-np.linalg.inv((np.transpose(A_i, [0,2,1]) @ A_i).mean(0)) @ (b_i).mean(0))
        return pt_mindist

1.齐次化位姿坐标

p34_to_44 = lambda p : np.concatenate([p, np.tile(np.reshape(np.eye(4)[-1,:], [1,1,4]), [p.shape[0], 1,1])], 1)

2.理解rays_d和rays_o

①rays_d表示相机坐标系的z轴向量,也就是向前向量
②rays_o表示相机坐标系在世界坐标系的原点坐标

3.min_line_dist的函数

问题1:该函数的作用

问题2:为何要计算ray_d的外积

①形成投影矩阵

(1)投影矩阵

任意向量v,左乘d的外积,形成的结果为(d·v)d,d·v是向量的点乘,是标量,也就是说结果平行于向量d,从而达到了将v向量投影到了向量d的方向上

(2)投影矩阵的性质

投影矩阵的秩为1,表示行和列都线性相关,并且都和d线性相关

(3)投影长度的计算

v·d/||d||

②A_i和b_i的含义!!!


我的理解是
A_i是一个系数
我们先看A_i@ray_o
假设绿线是光线向量。那么红线就是原点和相机原点的向量,也就是A_i中的np.eye(3)@ray_o
刚才我们已经外积是一个投影矩阵,那么外积@ray_o,就是将红线投影到绿线上,也是绿线的红线部分,那么(np.eye(3) - rays_d * np.transpose(rays_d, [0,2,1]))@ray_o,就是进行向量的减法,就是蓝线的,取反方向就是灰线

4.最小二乘法

因为这个函数在实现最小二乘法,所以我进行了具体的学习

①目标


举例



求第三个式子最小的x1,x2取值

②数学模型

(1)目标函数

最小化残差求出参数x的值

(2)方程的解

(3)残差r=Ax-b的空间意义


b正交A的值域:这里可以联想到B_id的作用

问题:什么是值域空间

(4)目标求解


二、集合论到位运算

1.哈希表

①属性

模表大小
哈希函数

②表现方式

数组+链表(解决哈希冲突)

③结构

数组 链表 哈希函数 插入 获取 删除

2.二级制和集合论的关系

在这里插入图片描述
也就是加入集合{0,2,4} 用二进制表示10101

3.位运算的优势

并行运算

4.集合与集合

交集

A&B

并集

A|B

对称差

A⊕B

A&~B
A⊕B

包含于

A&B=B
A|B=A

5.集合与元素

单元素集合

1<<2 ={2}

全集

1<<3-1 ={0,1,2}

补集

((1<<4)-1)⊕s

属于

判断i是否属于s
(s<<i)&1=1

添加元素

(1<<i)|s

删除元素

~(1<<i)&s
s⊕(1<<i)
删除最小
s&(s-1)

取最小元素

s&~(s-1)

6.一些库函数

集合大小
__builtin_popcount(s) C/C++
s.bit_count() python
二进制长度
__lg(s)+1 C++
log2(s)+1 c
s.bit_length() python

7.遍历集合

#include<stdio.h>
int main()
{
    unsigned int s =5;
    int n=3;
    for (int i = 0; i < n; i++) {
    if ((s >> i) & 1) { printf("%d in range\n",i);}
    }
}

最小元素遍历

for(int s=n;s&(~s+1);s-=s&(~s+1))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只特立独行猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值