1,在unity电脑屏幕上得到的相机的四个点做标记。

AR标记时虚实融合投影仪和相机的手动标定_平行投影

2,调整投影用到的相机的Transform让四个标记与真实的相重合,记下位置后,停止运行unity,然后把值重新调整到刚才记下的位置。组件上右击copy component,----paste as new 

 

3,为了快速的调好,应该让投影仪和相机的位置比近,近似认为在一起的那样。

4,用于投影的那个相机看到的平面,的大小应该是每次都一样的不然比例会出错。

5,用普通相机时视频里会有彩虹纹,采用工业相机时色彩不正常,不好调,如果反光则可以调unity中投影相机的背景颜色。

AR标记时虚实融合投影仪和相机的手动标定_机器视觉_02

6,眼动的标定

可以先htc头盔中能看见可视化的眼动,也可以看到投影的红色小球。但两者有一定的偏差,通过标记来解决。先新建四个 红色的小球,然后运行工程,看一个标记的位置,把正确的投影位置用四个 东西标记,最后调整投影相机的位置和视角完成标记。然后可以把可视化的眼动结果不可见,即只能看到投影出来的一个红色小球,问题完美解决。

AR标记时虚实融合投影仪和相机的手动标定_背景颜色_03

上面这图是在HTC头盔中可视化与投影的都可见。应该这样来标记更快,只要四个标记点本来就在那个平面则调整相机重合就好。

 

--------------------------------------------------------------------------------------------------------------------------------------------

上面的相机采用平行投影可能会效果好一点

===============================================================================

方案二

投影和相机的标定,在物理世界中投影和相机有一定的距离,标记的目的简单的说就相当于当投影仪和相机的成像中心重合,投影仪可以看为逆光的相机,这样说来要做的事就是将给投影仪视野的虚拟相机与真实相机重合,且比例相同(这里我们采用unity的虚拟相机为平行投影)。

1 打开unity工程并将虚拟相机调整为平行投影。

2 调出要投影的game窗口,调整scale可以看到虚拟相机的边界-----》即下图的黑框;并记下scale比例,如果标定好后下次可以快速调整好。

AR标记时虚实融合投影仪和相机的手动标定_机器视觉_04

3 打开相机,可以看到投影的game窗口,然后拖动game窗口的中心和相机视野的中心相重合。=====这就相当于将投影用的虚拟相机和真实相机的中心重合了。

4  在桌面上测量投影game窗口的 L边的真实尺寸。

5 修改unity工程中虚拟相机size的大小,size的大小 为平行投影测量L的一半。

AR标记时虚实融合投影仪和相机的手动标定_3d_05

6 这样基本上可以实现投影仪和相机的标定。

 

===============================================================================

方案三

相机和投影安装平行,投影先采用梯形校正(为了投影的是正或长方形),相机的视野比投影的范围大

1,确定相机视野中物体真实长与像素比

测量相机视野中真实物体的边长Lreal,对应物体边长在图像中的像素值Lpixel

2, 确定投影的真实长

在投影的四个边界点上放四个小球,方便检测。通过相机检测投影的边界,求得像素值Ppixel

Lreal/Lpixel = Preal/Ppixel = BILI

求得Preal

3, 计算相机的ROI

以相机视野中投影的范围取ROI,并以ROI的中心像素位置求得真实坐标

4,调整投影使用的虚拟相机位置

ROI的真实坐标赋给虚拟相机位置,同时根据Preal调整虚拟相机的W或H值

以上方法相机视野中的实物可以采用标定板,实现一定程度的自动化

 

===============================================================================

方案四

采用单应性变换

假设在相机视野中有四个点(a, b, c, d),在相机视野中叠加远程专家的装配引导信息(如<ARANAO>),通过虚实融合后共享到装配现场,采用投影仪当四个点(a, b, c, d)投影到工作台,对应的四个点是e, f, g, h4-6所示。正确的虚实融合应当a, b, c, de, f, g, h对应重合,则远程专家的装配引导信息会投影到装配现场正确的位置。具体实现步骤如下:

AR标记时虚实融合投影仪和相机的手动标定_平行投影_06

手动调整本地客户端Unity 3D工程中,投影的虚拟相机位置;然后通过投影仪的梯形校正功能,调整投影画面。

Step3: 采用机器视觉开源库Opencv计算点集e, f, g, ha, b, c, d的单应性矩阵,并生成DLL,通过Unity 3D工程调用。以a(ax, ay)点对应的e(ex, ey)点为例则单应性变换可表示为:H

   式中H为3´3单应性矩阵。

Step4: 在视频流上叠加装配引导信息,再通过单应性变化后投影至工作台,则共享的视觉信息会在正确的位置。变换的是要投影的图像信息。

如果通过单应性变换相机采集的信息则视野会变小,而且真实空间中的物体位置是不能变化的。