当前位置: 首页 > news >正文

制作网站首页的步骤用word制作网页教程

制作网站首页的步骤,用word制作网页教程,衡水php网站建设,建设网站必须要服务器吗该文档记录从双目相机标定到点云生成的所有过程#xff0c;同时会附上代码。 代码直接能跑。https://github.com/stu-yzZ/stereoCamera 目录 大致思路如下#xff1a; 一、相机标定 1、相机参数介绍 2、单目相机标定 3、双目相机标定 二、图片畸变矫正 三、极线矫正…该文档记录从双目相机标定到点云生成的所有过程同时会附上代码。 代码直接能跑。https://github.com/stu-yzZ/stereoCamera 目录 大致思路如下 一、相机标定 1、相机参数介绍 2、单目相机标定 3、双目相机标定 二、图片畸变矫正 三、极线矫正 1、极线矫正 2、投影矩阵Q 3、图片检查 四、SGBM局部匹配算法计算视差图并填充 1、设置立体匹配算法SGBM 2、WLS视差图空洞填充 五、通过视差图计算深度图并可视化 六、通过视差图和Q矩阵计算每个二维坐标对应的三维坐标同时获取颜色。 七、点云的显示 反思 大致思路如下 首先标定双目相机获取每个相机的内参同时对相机进行标定获取相机的相对位置参数也就是外参。 然后通过相机拍图片并对图片进行矫正畸变矫正和立体矫正然后通过立体匹配算法计算视差图通过视差图计算深度图有了视差图很多问题都可以解决了通过视差图可以获得点云信息。 点云数据太大了 我电脑跑不动但大致可以看到将图片像右旋转45°即和图片视角一致。 一、相机标定 相机标定获取相机参数用来矫正图。并且要使用相机参数对拍摄的图片进行矫正。相机标定非常重要所有的计算都是基于相机参数进行的如果误差较大后面所有步骤都会受到影响。我自己从淘宝上买了个200左右的双目相机标定之后结果一直很差非常影响后续的视差图和深度图的计算。 但是标定的过程一定要自己动手做只有亲自动手才能知道一些细节。由于硬件限制姑且认为是吧我转换思路用别人标定好的参数和图片进行视差图和深度图的实现。使用https://vision.middlebury.edu/stereo/data/这个数据集MiddleburyStereoDatasets进行后续步骤。 1、相机参数介绍 拿单目相机举例四个坐标系之间需要变换主要是参数有相机内参和外参。 四个坐标系世界坐标系-相机坐标系-图像坐标系-像素坐标系 内参共有11个参数变量。其中相机的内部参数有5个焦距像主点坐标畸变参数相机的外部参数有6个旋转平移。 2、单目相机标定 需要准备一个标定板一台相机尽可能多的拍一下照片张正友标定法。但是标定出高精度的结果太难了我还是暂时跳过了这个精度的要求暂时先把整条思路打通。 3、双目相机标定 双目相机标定除了求解每个摄像头的内参外还需要求解两个摄像头之间的 相对位置 和 姿态即 外参旋转矩阵和平移向量。其中平移矩阵的以我选择的artroom1的参数为例是这样的self.T np.array([[-536.62], [0.0], [0.0]])其中第一个元素是对应的你自己相机的基线长度也就是两个相机镜头的距离单位是mm。如果是自己标定的话也可以通过这个参数判断自己标定误差大小。 二、图片畸变矫正 使用畸变参数对图片进行矫正 cv.undistort该函数可以实现畸变矫正功能。双目相机的话需要对左右两张图像都进行矫正操作。 void undistort( InputArray src, //输入原图OutputArray dst,//输出矫正后的图像InputArray cameraMatrix,//内参矩阵InputArray distCoeffs,//畸变系数InputArray newCameraMatrixnoArray() ); 三、极线矫正 非常重要的一步将立体匹配从二维降到一维。对极约束是将搜索空间约束到像平面内的一条直线上 1、极线矫正 这篇文章从原理讲的很细会让人有生畏的感觉https://zhuanlan.zhihu.com/p/466758105。你也可以跳过没懂的地方首先你要知道匹配的意思就是要从针对左视图中的某一个像素在右试图中找到对应的匹配像素如果不做立体矫正的话需要从右视图的整个图片中搜索如果做了立体匹配可以将匹配过程从整张图片二维空间降低到一维空间极线矫正之后空间中点在左右视图中的投影在同一条直线上。 下面代码展示了从读取图片到极线矫正并检测矫正情况的过程。 # 读取图像imgl cv.imread(1_L.jpg)imgr cv.imread(1_R.jpg)high, wide imgl.shape[0:2]# 读取相机参数config stereoCamera()# 消除图像畸变imgl_qb cv.undistort(imgl, config.cam_matrix_l, config.distortion_l)imgr_qb cv.undistort(imgr, config.cam_matrix_r, config.distortion_r)# 极线校正map1x, map1y, map2x, map2y, Q getRectifyTransform(high, wide, config)imgl_jx, imgr_jx rectifyImage(imgl_qb, imgr_qb, map1x, map1y, map2x, map2y)# print(Print Q!)# print(Q)# 绘制等间距平行线检查效果line draw_line(imgl_jx, imgr_jx)其中draw_line函数为 def draw_line(img1, img2):height max(img1.shape[0], img2.shape[0])width img1.shape[1] img2.shape[1]output np.zeros((height, width, 3), dtypenp.uint8)output[0:img1.shape[0], 0:img1.shape[1]] img1output[0:img2.shape[0], img1.shape[1]:] img2line_interval 50 # 直线间隔for k in range(height // line_interval):cv.line(output, (0, line_interval * (k 1)),(2 * width, line_interval * (k 1)),(0, 255, 0), thickness2, lineTypecv.LINE_AA)# plt.imshow(output, gray)# plt.show()return output 2、投影矩阵Q Q矩阵在后面生成3D点云的时候要用到。暂不多解释。 3、图片检查 极线矫正之后的图片进行检查这个过程很难界定怎么样算是好的或许肉眼看着在同一个平面但是在像素层面上来看并没有对齐总的来说这个结果也是和标定结果强相关。我自己标定的结果打印出来感觉没有差很多但是最后视差图和深度图还是效果很差。下面这是我使用数据集中的参数和图片显示的结果数据集中的图片已经是畸变矫正和立体匹配之后的图片所以他们肯定极线对齐的 四、SGBM局部匹配算法计算视差图并填充 通过opencv获取视差图 1、设置立体匹配算法SGBM SGBM属于局部匹配算法我调试下来的感觉就是泛化性很低甚至图片场景变化大的话基本上一张图片对应一套参数计算量先不谈我22款拯救者y9000P还能带动SGBM算法原理我没有太深究主要的参数调整网上有很多讲解的可以自己看比较重要的就是windowssize和最大最小视差视差值对应图片的深度也就是拍照的距离。窗口大小会影响视差图的平滑与否可以自己设置调试下。且最大最小视差可以通过拍照的距离计算出来。根据深度计算公式已知最大最小深度也就是拍照的最近最远距离可以计算出视差值。我使用的数值来自于数据集中提供的。 同时需要注意视差图的精度问题。 def opencv_SGBM(left_img, right_img, use_wlsFalse):blockSize 11paramL {minDisparity: 0, #表示可能的最小视差值。通常为0但有时校正算法会移动图像所以参数值也要相应调整numDisparities: 170, #表示最大的视差值与最小的视差值之差这个差值总是大于0。在当前的实现中这个值必须要能被16整除越大黑色边缘越多表示不能计算视差的区域blockSize: blockSize,P1: 8 * 3 * blockSize * blockSize, #控制视差图平滑度的第一个参数P2: 32 * 3 * blockSize * blockSize, #控制视差图平滑度的第二个参数值越大视差图越平滑。P1是邻近像素间视差值变化为1时的惩罚值#p2是邻近像素间视差值变化大于1时的惩罚值。算法要求P2P1,stereo_match.cpp样例中给出一些p1和p2的合理取值。disp12MaxDiff: 1, #表示在左右视图检查中最大允许的偏差整数像素单位。设为非正值将不做检查。uniquenessRatio: 10, #表示由代价函数计算得到的最好最小结果值比第二好的值小多少用百分比表示才被认为是正确的。通常在5-15之间。speckleWindowSize: 50, #表示平滑视差区域的最大窗口尺寸以考虑噪声斑点或无效性。将它设为0就不会进行斑点过滤否则应取50-200之间的某个值。speckleRange: 1, #指每个已连接部分的最大视差变化如果进行斑点过滤则该参数取正值函数会自动乘以16、一般情况下取1或2就足够了。preFilterCap: 31,mode: cv.STEREO_SGBM_MODE_SGBM_3WAY}matcherL cv.StereoSGBM_create(**paramL)# 计算视差图dispL matcherL.compute(left_img, right_img)# WLS滤波平滑优化图像if use_wls:paramR paramLparamR[minDisparity] -paramL[numDisparities]matcherR cv.StereoSGBM_create(**paramR)dispR matcherR.compute(right_img, left_img)# dispR np.int16(dispR)lmbda 80000sigma 1.0filter cv.ximgproc.createDisparityWLSFilter(matcher_leftmatcherL)filter.setLambda(lmbda)filter.setSigmaColor(sigma)dispL filter.filter(dispL, left_img, None, dispR)#双边滤波dispL cv2.bilateralFilter(dispL.astype(np.float32), d9, sigmaColor75, sigmaSpace75)# 除以16得到真实视差因为SGBM算法得到的视差是×16的dispL[dispL 0] 1e-6dispL dispL.astype(np.int16)dispL dispL / 16.0return dispL 2、WLS视差图空洞填充 wls叫做基于加权最小二乘法的保边缘平滑滤波器。目的是对图像进行平滑处理代码在上主要是对视差图进行平滑处理。 这篇文章讲解了基于积分的空洞填充也包括整个双目视觉的大致流程也包括一些细节的内容比如提到了精度相关的知识我受益匪浅https://www.cnblogs.com/riddick/p/8486223.html这篇博文是2018年发表的不得不感慨…… 空洞填充可以使得视差图更加的平滑和高质量。但是需要较大算力支持。 五、通过视差图计算深度图并可视化 通过公式计算每个像素可计算像素的深度坐标同时生成深度图并可视化。 1、计算深度图并可视化 直接根据深度计算公式对视差图进行计算但是要确定深度的单位zf*b/d,其中f和d的单位是像素bbaseline的单位是米计算出来的z深度单位也是米。 六、通过视差图和Q矩阵计算每个二维坐标对应的三维坐标同时获取颜色。 1、生成点云信息并保存 看代码即可。没有什么逻辑。 七、点云的显示 1、点云(6d)显示 数据太大了可以在线展示点云但是没有颜色信息看起来不是很直观。 反思 1、我在这个过程遇到了困扰我很久的问题就是视差图生成了虽然差一些但是深度图一直显示不出来用颜色映射出来都是红色的。我解决问题的思路一直在视差图转深度图的转换上了其实最后才意识到源头在于视差图中计算出有大量的无限接近0的数值存在导致深度无穷远所以深度图中显示全红同时也是看到了Middlebury数据集中给出的有效的视差范围我才意识到这个问题所以我想说的是如果遇到同样的问题可以将视差图中的数值分布打印成直方图看看0附近的值是不是非常多并且确定你自己图像的邮箱视差范围在深度生成过程中将小于最小有效值的视差值都赋值为最小有效值。这样可以保证视差图转深度图没有问题。
http://www.w-s-a.com/news/550057/

相关文章:

  • 免费自助小型网站专业网站建设组织
  • 猎聘网网站建设目标查看别人wordpress主题
  • 免费建设网站入驻网站备案不能更新吗
  • 个人网站制作代码西安建筑类公司
  • 网站备案要营业执照吗网站建设如何记账
  • 新手学做网站难吗外包服务商
  • 公司网站建设的项目工作分解结构wordpress插件后端页面
  • 四川省建设人才网站2018南京专业建站
  • ppt制作网站推荐seo教程百度网盘
  • 网站建设多少钱一平米网上商城网站开发报告
  • 福州网站建设招聘信息哈尔滨中企动力科技股份有限公司
  • 军事新闻最新seo关键词查询排名软件
  • 免费网站建设官网项目建设表态发言
  • 平谷建站推广广告投放平台主要有哪些
  • 网站备案掉了什么原因步骤怎么读
  • 徐州市建设监理协会网站做一个公司官网需要多少钱
  • 网站开发学什么数据库做公司网站注意事项
  • 游戏开发网站建设国际战事最新消息
  • 达州+网站建设网站里自己怎么做推广
  • 看网站建设公司的网站案例熊掌号接入wordpress
  • 黄石下陆区建设局网站wordpress如何拖移小工具
  • 宁波网站建设信息网站开发看书
  • 网站建设优化价格北京优化seo排名
  • 微信网站建设公司费用高端网站建设 炫酷
  • 北京网站假设销售找客户最好的app
  • 做外贸需要关注的网站有什么好处宜州设计公司
  • 公司最近想做个网站怎么办陕西科强建设工程有限公司官方网站
  • 生态城门户网站 建设动态it外包收费
  • 网站项目评价老渔哥网站建设公司
  • 哈尔滨寸金网站建设价格178软文网