视觉SLAM(二):相机与图像
目录
- 1. 三维刚体运动
- 1.1. 问题阐述
- 1.2. 变换矩阵
- 标准正交基法
- 旋转向量法
- 2. 相机模型
- 2.1. 针孔模型
- 2.2. 畸变模型
- 2.3. 根据GNSS与IMU求像素坐标
- 从 世界坐标系 到 相机坐标系
- 从 相机坐标系 到 像素坐标系
- 2.4. 像素数据结构
- 3. 双目相机模型
- 参考文献
1. 三维刚体运动
对于三维空间的物体,可以通过三个坐标描述其位置,但对于机器人 or 飞行器 航天器来讲,还需要另外三个量描述其姿态——俯仰角、滚转角 和 偏航角,这三个欧拉角可以通过陀螺仪测得。不同的位姿则对应不同的载体坐标系。
这一节内容主要解决的问题是:已知世界(惯性)坐标系中一点aaa,以及刚体的位姿,求得aaa在载体坐标系中的坐标。
1.1. 问题阐述
已知:北东地世界坐标系OwXwYwZwO_w X_w Y_w Z_wOwXwYwZw,以及其一组标准正交基ew=[ewx,ewy,ewz]Te_w = [e_{wx},e_{wy},e_{wz}]^Tew=[ewx,ewy,ewz]T。
一点aaa且点aaa在世界坐标系的表示为a=[ewx,ewy,ewz][awxawyawz]a=[e_{wx},e_{wy},e_{wz}]\left[\begin{array}{lcr} a_{wx} \\ a_{wy} \\ a_{wz} \end{array} \right]a=[ewx,ewy,ewz]⎣⎡awxawyawz⎦⎤
刚体ccc的世界坐标为cw=(cwx,cwy,cwz)c_w=(c_{wx},c_{wy},c_{wz})cw=(cwx,cwy,cwz),若刚体坐标系为OcXcYcZcO_c X_c Y_c Z_cOcXcYcZc。
并且刚体的偏航角、俯仰角 和 滚转角 分别为θYwθXcθZc\theta_{Y_w} \theta_{X_c} \theta_{Z_c}θYwθXcθZc(此处与课本中坐标系定义不同,是为了与2.1.的相机坐标系一致),单位radradrad。
求: 点aaa在刚体坐标系OcXcYcZcO_c X_c Y_c Z_cOcXcYcZc下的坐标[acx,acy,acz][a_{cx},a_{cy},a_{cz}][acx,acy,acz]
1.2. 变换矩阵
根据矩阵理论的描述,不同坐标系下同一个点的坐标 是通过向量的旋转 和 平移得到的,即应满足
ac=Rcwaw+tcw(1)a_c=R_{cw}a_w + t_{cw} \tag{1}ac=Rcwaw+tcw(1)
其中RcwR_{cw}Rcw为从世界坐标系 到 载体坐标系 的 旋转矩阵,tcwt_{cw}tcw表示载体坐标系中从 载体坐标系原点 到 世界坐标系原点 的向量。
注意RRR与ttt的下标记法:R12R_{12}R12表示从坐标系2旋转到坐标系1的旋转矩阵,t12t_{12}t12表示坐标系1中坐标系1原点到坐标系2原点的向量。
或者写成齐次形式 以方便多次旋转 和 平移
[ac1]=(RcwRcwtcw0T1)[aw1]=T[aw1](2,重要)\left[\begin{array}{lcr} a_{c} \\ 1 \end{array} \right]= \left(\begin{array}{lcr} R_{cw} & R_{cw}t_{cw}\\ 0^T & 1 \\ \end{array}\right) \left[\begin{array}{lcr} a_{w} \\1 \end{array} \right]= T\left[\begin{array}{lcr} a_{w} \\1 \end{array} \right] \tag{2,重要}[ac1]=(Rcw0TRcwtcw1)[aw1]=T[aw1](2,重要)
其中TTT就叫作变换矩阵,由于cwc_wcw已知,因此对旋转矩阵RRR的求解则需要解决。
标准正交基法
思路是根据矩阵理论中两个向量空间基的变换来实现实现旋转关系的,所以需要先确定载体坐标系 在世界坐标系 中的三个基。
标准正交基则是通过 基本旋转得到的,按照偏航-俯仰-滚转的顺序确定标准基。
1. 假设 载体坐标系原点 就是 世界坐标系原点,先绕YwY_wYw偏航θYw\theta_{Y_w}θYw
ec=ew(cosθYw0sinθYw−sinθYw0cosθYw0−10)e_c=e_w \left(\begin{array}{lcr} cos\theta_{Y_w} & 0& sin\theta_{Y_w} \\ -sin\theta_{Y_w} & 0& cos\theta_{Y_w} \\ 0& -1& 0 \end{array}\right) ec=ew⎝⎛cosθYw−sinθYw000−1sinθYwcosθYw0⎠⎞
2. 之后绕XcX_cXc俯仰θXc\theta_{X_c}θXc
ec=ec(1000cosθXc−sinθYc0sinθXccosθXc)e_c=e_c \left(\begin{array}{lcr} 1& 0 & 0\\ 0& cos\theta_{X_c}& -sin\theta_{Y_c} \\ 0& sin\theta_{X_c}& cos\theta_{X_c} \end{array}\right)ec=ec⎝⎛1000cosθXcsinθXc0−sinθYccosθXc⎠⎞
3. 最后绕Zc{Z_c}Zc滚转θZc\theta_{Z_c}θZc
ec=ec(cosθZcsinθZc0−sinθZccosθZc0001)e_c=e_c \left(\begin{array}{lcr} cos\theta_{Z_c} & sin\theta_{Z_c} &0 \\ -sin\theta_{Z_c} & cos\theta_{Z_c} & 0 \\ 0 & 0 & 1 \end{array}\right)ec=ec⎝⎛cosθZc−sinθZc0sinθZccosθZc0001⎠⎞
最终同时进行了偏航俯仰滚转的载体坐标系的 标准正交基 就为上述三个系数矩阵不断右乘,即
ec=ew(cθYwcθZc−sθXcsθYwsθZccθYwsθZc+sθXcsθYwsθZccθXccθYwsθYwcθZc−sθXcsθYwsθZc−sθYwsθZc+sθXccθYwcθZccθXccθYwcθXcsθZc−cθXcsθZcsθXc)e_c= e_w \left(\begin{array}{lcr} c\theta_{Y_w}c\theta_{Z_c}-s\theta_{X_c}s\theta_{Y_w}s\theta_{Z_c} & c\theta_{Y_w}s\theta_{Z_c}+s\theta_{X_c}s\theta_{Y_w}s\theta_{Z_c} & c\theta_{X_c}c\theta_{Y_w} \\ s\theta_{Y_w}c\theta_{Z_c}-s\theta_{X_c}s\theta_{Y_w}s\theta_{Z_c} & -s\theta_{Y_w}s\theta_{Z_c}+s\theta_{X_c}c\theta_{Y_w}c\theta_{Z_c}& c\theta_{X_c}c\theta_{Y_w} \\ c\theta_{X_c}s\theta_{Z_c} & -c\theta_{X_c}s\theta_{Z_c} & s\theta_{X_c} \end{array}\right)ec=ew⎝⎛cθYwcθZc−sθXcsθYwsθZcsθYwcθZc−sθXcsθYwsθZccθXcsθZccθYwsθZc+sθXcsθYwsθZc−sθYwsθZc+sθXccθYwcθZc−cθXcsθZccθXccθYwcθXccθYwsθXc⎠⎞
(3)\quad\tag{3}(3)
有了载体坐标系 的三个 标准正交基 在世界坐标系的表达式之后,就可以表示旋转矩阵了,旋转矩阵则为
Rcw=ecewT(4,重要)R_{cw}=e_ce_w^T \tag{4,重要}Rcw=ecewT(4,重要)
旋转向量法
用一个单位长度向量n=[n1,n2,n3]Tn=[n_1,n_2,n_3]^Tn=[n1,n2,n3]T表示旋转的轴,用角度θ\thetaθ表示旋转角(右手定则,大拇指转向轴方向时其余四指的方向为正方向),旋转向量则是θn\theta nθn。这样就可以表示旋转矩阵了。即
R=cosθI+(1−cosθ)nnT+sinθ⋅n−R=cos\theta I+(1-cos\theta)nn^T+sin\theta · n^- R=cosθI+(1−cosθ)nnT+sinθ⋅n−
其中n−n^-n−为nnn的反对称矩阵,并且可把矩阵外积转化为矩阵内积,即
∀a∈R3×1,n−⋅a=n×a\forall a \in \mathbb{R^{3×1}},n^-·a = n×a∀a∈R3×1,n−⋅a=n×a
n−=(0−n3n2n30−n1−n2n10)n^- = \left(\begin{array}{lcr} 0 & -n_3 & n_2 \\ n_3 & 0 & -n_1 \\ -n_2 & n_1 & 0 \end{array}\right)n−=⎝⎛0n3−n2−n30n1n2−n10⎠⎞
综上所述,通过GNSS和IMU测得某时刻机器人的 位置 和 角姿态信息,就可以计算出旋转矩阵,进而得到变换矩阵,就可以测得空间中某一点 在机器人眼中的位置。
2. 相机模型
下面介绍相机模型,对于智能体来讲,就需要视觉相机实现定位。本节主要讲解相机的成像过程。
2.1. 针孔模型
针孔相机模型描述了从 现实世界坐标点 到 像素平面坐标点的一种映射。根据小孔成像原理,现实世界的物体经过小孔成像之后,在透镜后方的平面会形成 倒立缩小的实像。
但实际相机我们看到的并不是倒立的,这是通过软件处理将像素平面上的所有点全部关于中心对称之后的结果,这样人眼看到的就是正像了。
如图所示:
如图中所示,PPP为现实世界中的点,OwXwYwZwO_w X_w Y_w Z_wOwXwYwZw为静止的世界坐标系,OcXcYcZcO_c X_c Y_c Z_cOcXcYcZc为相机坐标系,P′P'P′为PPP经过小孔成像映射到的像素平面 或是 物理成像平面上的点,而P′′P''P′′则是经过软件处理之后,或我们眼睛看到的点,ouvouvouv为像素坐标系。
像素坐标系与一般的坐标系不同,像素坐标系的单位为像素,即有多少个像素点,因此像素坐标系需要另外两个参数dududu表示uuu轴上单个像素的长度,单位为米/像素,同理dvdvdv对应vvv轴。
需要说明的是,若按上图所示则PPP会映射到像素坐标系的P′P'P′,这样产生的像为倒像,而实际我们看到的正像是经过对称之后的。有时候为了方便理解,可将像素平面uovuovuov直接绘制在相机中心OcO_cOc前面fff处得到等效图,如下图所示。
2.2. 畸变模型
实际相机由于相机透镜形状可能造成坐标的畸变,即径向畸变(例如实际是直线而像素平面上显示的是曲线),以及像素平面 和 透镜不平行造成的切向畸变。因此对于点PPP的成像,则主要考虑这两种畸变。
而畸变模型的构建则可以看作是 从相机坐标系 向 像素坐标系投影时,不再是简单的相似三角形,而是遵循另一个非线性规律,这个规律将从2.3.给出。
2.3. 根据GNSS与IMU求像素坐标
由于需要从相机的角度对世界坐标系中的点PPP进行分析,所以需要根据GNSS和IMU的数据计算出像素坐标系(相机显示器)上P′′P''P′′的像素坐标。该问题与1.1.的问题类似。
已知:北东地世界坐标系OwXwYwZwO_w X_w Y_w Z_wOwXwYwZw,以及其一组标准正交基ew=[ewx,ewy,ewz]Te_w = [e_{wx},e_{wy},e_{wz}]^Tew=[ewx,ewy,ewz]T。
点PPP的世界坐标系为Pw=(Pwx,Pwy,Pwz)TP_w=(P_{wx},P_{wy},P_{wz})^TPw=(Pwx,Pwy,Pwz)T
相机坐标系为OcXcYcZcO_c X_c Y_c Z_cOcXcYcZc且光心OcO_cOc的世界坐标为Ocw=(Ocwx,Ocwy,Ocwz)TO_{c_w}=(O_{c_{wx}},O_{c_{wy}},O_{c_{wz}})^TOcw=(Ocwx,Ocwy,Ocwz)T。
机器人的偏航角、俯仰角 和 滚转角 分别为θZwθYcθXc\theta_{Z_w} \theta_{Y_c} \theta_{X_c}θZwθYcθXc。
求: 点PPP在像素坐标系中的映射点P′′P''P′′的像素坐标(Ppu′′,Ppv′′)T(P''_{pu},P''_{pv})^T(Ppu′′,Ppv′′)T
从 世界坐标系 到 相机坐标系
由于已知ewe_wew和光心世界坐标OcwO_{c_w}Ocw,直接根据式(3)(3)(3)求得ece_cec,再根据式(4)(4)(4)求得旋转矩阵RcwR_{cw}Rcw,进而得出点PPP在相机坐标系中的坐标Pc=(Pcx,Pcy,Pcz)TP_c=(P_{cx},P_{cy},P_{cz})^TPc=(Pcx,Pcy,Pcz)T
Pc=RcwPw+tcwP_c=R_{cw}P_w+t_{cw}Pc=RcwPw+tcw
从 相机坐标系 到 像素坐标系
之后就可以将点PPP从三维的相机坐标系 映射 到二维的像素坐标系了,可直接参考相机等效图计算。
● 若不考虑畸变
点P′′(Ppx′′,Ppy′′)P''(P''_{px},P''_{py})P′′(Ppx′′,Ppy′′)求得为
Ppu′′=1du⋅f⋅PcxPcz+cx,Ppv′′=1dv⋅f⋅PcyPcz+cyP''_{pu}=\frac{1}{du} ·f·\frac{P_{cx}}{P_{cz}}+c_x,\quad P''_{pv}=\frac{1}{dv} ·f·\frac{P_{cy}}{P_{cz}}+c_yPpu′′=du1⋅f⋅PczPcx+cx,Ppv′′=dv1⋅f⋅PczPcy+cy
其中cxc_xcx和cyc_ycy分别为 向量oOcoO_coOc 在轴ououou 和 轴ovovov 上的映射长度,fff为焦距。
再将上述映射通过齐次坐标的形式表示出来则是
[Ppu′′Ppv′′1]=(fdu0cx00fdvcy00010)⋅1Pcz⋅[PcxPcyPcz1]\left[\begin{array}{lcr} P''_{pu} \\ P''_{pv} \\ 1 \end{array} \right] =\left(\begin{array}{lcr} \frac{f}{du} & 0& c_x & 0\\ 0 & \frac{f}{dv}& c_y& 0\\ 0& 0& 1& 0 \end{array}\right)·\frac{1}{P_{cz}}· \left[\begin{array}{lcr} P_{cx} \\ P_{cy} \\ P_{cz} \\ 1 \end{array} \right]⎣⎡Ppu′′Ppv′′1⎦⎤=⎝⎛duf000dvf0cxcy1000⎠⎞⋅Pcz1⋅⎣⎢⎢⎡PcxPcyPcz1⎦⎥⎥⎤
其中矩阵K=(fdu0cx0fdvcy001)K = \left(\begin{array}{lcr} \frac{f}{du} & 0& c_x \\ 0 & \frac{f}{dv}& c_y\\ 0& 0& 1 \end{array}\right)K=⎝⎛duf000dvf0cxcy1⎠⎞称为该相机的内参数,即该矩阵只与摄像机有关。旋转矩阵RRR 和 光心位置OcwO_{c_w}Ocw则成为相机的外参数。
此时从世界坐标到像素坐标的转换公式就为
P′′=(100010)⋅K⋅R⋅(Pw−Ocw)(001)⋅R⋅(Pw−Ocw)(重要)P''=\left(\begin{array}{lcr} 1 & 0& 0\\ 0 &1& 0\\ \end{array}\right) · K·\frac{R·(P_w-O_{c_w})}{(0 \quad 0 \quad 1)·R·(P_w-O_{c_w})} \tag{重要}P′′=(100100)⋅K⋅(001)⋅R⋅(Pw−Ocw)R⋅(Pw−Ocw)(重要)
● 若考虑畸变
点P′′(Ppu′′,Ppv′′)P''(P''_{pu},P''_{pv})P′′(Ppu′′,Ppv′′)求得为
Ppu′′=1du⋅f⋅(lPcxPcz+2p1PcxPcyPcz2+2p2Pcx2Pcz2+p2r2)+cxP''_{pu}=\frac{1}{du} ·f·(l \frac{P_{cx}}{P_{cz}}+2p_1\frac{P_{cx}P_{cy}}{P_{cz}^2}+2p_2\frac{P_{cx}^2}{P_{cz}^2}+p_2r^2)+c_xPpu′′=du1⋅f⋅(lPczPcx+2p1Pcz2PcxPcy+2p2Pcz2Pcx2+p2r2)+cx
Ppv′′=1dv⋅f⋅(lPcyPcz+2p2PcxPcyPcz2+2p1Pcx2Pcz2+p1r2)+cy\quad P''_{pv}=\frac{1}{dv} ·f·(l \frac{P_{cy}}{P_{cz}}+2p_2\frac{P_{cx}P_{cy}}{P_{cz}^2}+2p_1\frac{P_{cx}^2}{P_{cz}^2}+p_1r^2)+c_yPpv′′=dv1⋅f⋅(lPczPcy+2p2Pcz2PcxPcy+2p1Pcz2Pcx2+p1r2)+cy
其中 l=1+k1r2+k2r4+k3r6l=1+k_1r^2+k_2r^4+k_3r^6l=1+k1r2+k2r4+k3r6,且参数k1,k2,k3,p1,p2k_1,k_2,k_3,p_1,p_2k1,k2,k3,p1,p2为与相机畸变相关参数。
由该过程可见,PPP在像素平面上的投影P′′P''P′′坐标是二维的,因此已知PwP_wPw可以求P′′P''P′′,但从P′′P''P′′反推PwP_wPw则是不可能的。其实就是单目相机的劣势,少了深度信息。
2.4. 像素数据结构
在知道点PPP的成像点P′′P''P′′之后,相机还会采取点PPP的其他信息,包括颜色、距离等信息,有了这些信息才能完整的描述像素P′′P''P′′。
一个像素的数据结构可以用 结构体/类来描述,这里先列出一些属性。
● 像素坐标的位置u,vu,vu,v
这个比较好理解,但是u和v是有最大值的,即屏幕的 分辨率 通常所说的1920x1080 或 800x600描述的就是分辨率,表示 uuu轴像素个数(列)×vvv轴像素个数(行)。而用数组描述时则为先行后列,例如1920x1080分辨率,构建的数组则为
vector<vector<pixel> image{1080,vector<pixel>{1920}};
● 彩色图像RBG(RedBlueGreen, RGB)
使用红色、蓝色、绿色三通道构成的彩色像素,每个颜色数值可用1Byte(8bit,0~255)表示颜色的深浅,因此RGB一共24Byte。
● 灰度图与灰度值
灰度图没有颜色,表示R=G=B=灰度值时,可用1Byte表示(8bit,0~255,即灰度级别为256)。灰度值为0表示纯黑色,255表示纯白色。
彩色图像可转化为灰度图,RGB可按照一定算法转化为灰度值,例如 灰度值= R×0.3 + G×0.59 + B×0.11
● 深度值
记录该 像素点对应实际物体点 到相机的距离,可通过双目相机模型 或 RGB-D相机测算深度值,单位毫米mm。位数决定最大距离,例如2Byte(16bit,0-65536,0m-65m)。
下面给出一个像素类的例子,注意由于有些数据类型为char在获得实际值得时候需要做类型转换。
extern const horizontalPixelsNum = 1920;
extern const verticalPixelsNum = 1080;class pixel{public:unsigned int u,v; //位置,4Bunsigned char R,G,B; //三通道彩色 1B,0~255unsigned char gray; //灰度值 1B,0~255unsigned short depth; //深度值 2B,0~65535
public:pixel(){u = 0;v = 0;R = 255;G = 255;B = 255;gray = 0.3*R+0.59*G+0.11*B;depth = 0;}pixel(int row,int column,unsigned char grayScale = 255,unsigned short depthValue=0){if(row > verticalPixelsNum || column > horizontalPixelsNum){v = 0; u = 0;}else{v = row;u = column;}gray = grayScale;R=gray; G=gray; B=gray;depth = depthValue ;}pixel(int r,int c,unsigned char red,unsigned char green,unsigned char blue,unsigned short depthValue = 0){if(row > verticalPixelsNum || column > horizontalPixelsNum){v = 0; u = 0;}else{v = row;u = column;}R = red; B = blue; G = green;gray = 0.3*R + 0.59*G + 0.11*B; depth = depthValue;}
~pixel(){};
};vector<vector<pixel> image{verticalPixelsNum,vector<pixel>{horizontalPixelsNum}};for(int r = 0;r <= verticalPixelsNum;r++)for(int c = 0;c <= horizontalPixelsNum;c++)image[r][c] = pixel(r,c);cout<<int(image[1079][1919]);
3. 双目相机模型
顾名思义就是两个相机两个成像平面,一般为左右两个相机,两个相机就有利于我们估计点PPP的深度信息,甚至通过图像3D还原物体在现实世界的样子。
如图所示有左右两个相机坐标系ORXRYRZRO_RX_RY_RZ_RORXRYRZR和OLXLYLZLO_LX_LY_LZ_LOLXLYLZL,点PPP为现实世界的一点。左右双目相机是平行的,光心距离OLOR=bO_LO_R=bOLOR=b称作基线。
因此PPP的两个相机坐标中Z轴的量相同,记作PczP_{cz}Pcz。两个成像点的v轴量相同,PPP的成像点分别为PL(PLuL,Pv)P_L(P_{L_{uL}},P_v)PL(PLuL,Pv)和PR(PRuR,Pv)P_R(P_{R_{uR}},P_v)PR(PRuR,Pv)。因此可以计算PczP_{cz}Pcz。
根据相似三角形有
Pcz+fPcz=b+PLuL−PRuRb\frac{P_{cz}+f}{P_{cz}}=\frac{b+P_{L_{uL}}-P_{R_{uR}}}{b}PczPcz+f=bb+PLuL−PRuR
从而得到PPP的相机Z轴坐标
Pcz=fbPLuL−PRuR(重要)P_{cz}=\frac{fb}{P_{L_{uL}}-P_{R_{uR}}} \tag{重要}Pcz=PLuL−PRuRfb(重要)
注意fff和bbb均为相机自身属性。因此PczP_{cz}Pcz与视差PLuL−PRuRP_{L_{uL}}-P_{R_{uR}}PLuL−PRuR成反比,即视差越大,PPP距离相机越近。
综上所述,本篇文章主要讲述的是 现实世界到像素平面 的成像过程,而从像素平面 向现实世界的映射则是另外一个问题了。
譬如对双目相机来说,给出两幅成像,如何确定两幅图像的哪个像素 和 哪个像素是 现实世界同一个点?计算量有多大?如何削弱?这都将是未来研究的方向。
参考文献
- 视觉SLAM十四讲-从理论到实践
- 无人机运动学控制中的坐标系,及惯性坐标系与机体坐标系之间的矩阵转换 欧拉角 - CSDN
- RGB、灰度值 和 像素值的关系 - 个人图书馆
视觉SLAM(二):相机与图像相关推荐
- 初识视觉SLAM 用相机解决定位和建图问题
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 引言:视 ...
- 视觉SLAM——二维三维几何、三维空间刚体变换
前言 本博客为主要学习<视觉SLAM十四讲>第3讲.<机器人学的状态估计>第6章三位几何学基础.<计算机视觉-算法和应用>第2章2.1几何基元变换等SLAM内容的总 ...
- 视觉SLAM学习--相机成像模型及标定
相机模型1:B站热心网友的视频讲解,比较清楚 链接:https://www.bilibili.com/video/BV1Rh411o7Jb/?spm_id_from=333.788.recommend ...
- SLAM综述:激光雷达与视觉SLAM
第一节概述. 第二节讲述激光SLAM:激光传感器,开源系统,深度学习的应用. 第三节讲述视觉SLAM:相机传感器,开源系统,视觉惯性里程计,深度学习的应用. 第四节讲述激光雷达与视觉的融合. 最后展望 ...
- 八种常用激光雷达和视觉SLAM算法的评估与比较
文章:Evaluation and comparison of eight popular Lidar and Visual SLAM algorithms 作者:Bharath Garigipati ...
- 【视觉SLAM】An Improved ORB-SLAM2 in Dynamic Scene with Instance Segmentation
Cite: H. Qian and P. Ding.An Improved ORB-SLAM2 in Dynamic Scene with Instance Segmentation[C].2019 ...
- Halcon 进阶 四 C# 实现 Halcon与迈德威视,视觉解析二维码
Halcon 进阶 四 C# 实现 Halcon与迈德威视,视觉解析二维码 图像结果 设备操作 初始化 相机设置 图像处理 注意事项 halcon解析二维码 适合各行业 二维码数据采集.关联项目.质量 ...
- 《视觉SLAM十四讲》学习笔记:第5讲相机与图像
<视觉SLAM十四讲>学习笔记:第5讲相机与图像 前言:本学习笔记将记录<视觉SLAM十四将>中一些重要的知识点,并对书中一些比较难的知识点添加上一些笔者个人的理解,以供笔者本 ...
- 视觉SLAM⑤--相机与图像
目录 5.0 本章简介 5.1 相机模型 5.1.1针孔相机模型 5.1.2 畸变模型 5.1.3 双目相机模型 5.1.4 RGB-D相机模型 5.2 图像 5.3 实践:计算机中的图像 5.3.1 ...
最新文章
- LeetCode刷题记录10——434. Number of Segments in a String(easy)
- 【SSM框架系列】Spring IoC(控制反转) DI(依赖注入)注解开发
- Kafka文件存储机制那些事
- 十年磨一剑,王坚自研的MaxCompute如何解决世界级算力难题
- open一个绝对路径地址 python_实例15:用Python批量转换doc文件为docx文件
- 最简单的Asp.Net 2.0 TreeView的Checkbox级联操作
- [HNOI2012]集合选数 BZOJ2734
- android开发GPS定位测试(附效果图和示例)【转】
- Overloud Gem Modula for Mac - 三合一经典调制插件
- Atitit 修改密码的功能流程设计 attilax总结
- Error: could not open `C:\Program Files\Java\jre6\lib\i386\jvm.cfg'
- 几何实体图形保存成stl格式的ascII和二进制文。用Vc++语言读入文件,给三角网格坐标值乘以2,并保存到另一stl文件。输出完成工作所用的执行时间
- 不用for循环快速合并txt文本文件
- 简单快捷的ArcGIS 10.7安装方法
- IT男的魔都10年及N次面试 - 如何在500强升职顺便搞定漂亮MM
- 关于自编码器的核心点理解
- 计算机网络网络层之虚电路网络
- 香港虚拟主机租用价格
- 大觉寺到鹫峰线路_体验古香道---从大觉寺过鹫峰到妙峰山涧沟村
- 分享一些网页设计的素材
热门文章
- 《深入理解分布式事务》,初识分布式......
- Cloning A Database Home And Changing The User/Group That Owns It
- 吃透浏览器安全(同源限制/XSS/CSRF/中间人攻击)
- C++、Qt 调用 lua 完成简单计算并得到结果( 出现中文 ‘?’问题)
- 中国哪座城市“最会玩”?“这里是宇宙电竞中心”
- 江城如画里,山晚望晴空。 两水夹明镜,双桥落彩虹。 人烟寒橘柚,秋色老梧桐。谁念北楼上,临风怀谢公
- 汇编语言rep的用法
- helm3.7.2及helm-push_0.10.1安装及使用
- windows.frames
- 快醒醒吧!数据库mysql外文参考文献