首页 > 其他分享 >DiLiGenT光度立体数据集

DiLiGenT光度立体数据集

时间:2024-10-06 19:22:28浏览次数:1  
标签:相机 mathbf DiLiGenT 光源 立体 图像 对齐 向量 光度

简介

”DiLiGenT“ 光度立体数据集,全称为 calibrated Directional Lightings, objects of General reflectance, and ‘ground Truth’ shapes (normals),即使用标定过的定向光源,对一些具有常见反射率特性的物体进行光度立体拍摄,并获取到精确的物体表面法向信息作为真值的这样数据集。该工作由施伯鑫团队耗时2年多完成,主要目的在于提供一份标准的数据集,用于评估非朗伯材料(non-Lambertian materials)和未知照明条件下(unknown lightings)的光度立体计算方法,分析他们的优点和局限性。

该数据集早期发布在CVPR16上,论文名为 ”A Benchmark Dataset and Evaluation for Non-Lambertian and Uncalibrated Photometric Stereo“,网页版见 https://www.cnblogs.com/gshang/articles/18447361

正式发布在 IEEE,引用如下:

Boxin Shi, Zhipeng Mo, Zhe Wu, Dinglong Duan, Sai-Kit Yeung, and Ping Tan, "A Benchmark Dataset and Evaluation for Non-Lambertian and Uncalibrated Photometric Stereo", In IEEE Transactions on Pattern Analysis and Machine Intelligence (TPAMI), Volume 41, Issue 2, Pages 271-284,2019. 

根据以上资料,整理了数据集制作过程,以及数据集如何使用。

数据集制作过程

被摄物挑选

在挑选被摄物时,为满足评估的全面性。从表面双向反射率分布特性(BRDF, bidirectional reflectance distribution function)和表面形貌复杂性两个角度进行筛选,一共挑选得到了10个物件。

image-20241005160300296

image

相机选型

拍摄所使用的相机型号为 Point Grey 公司生产的 GRAS-50S5C-C ,分辨率为 \(2448 \times 2048\);搭配 50 mm 镜头。

image-20241005161242799

所有被摄物体直径约为20cm,放置在距相机约1.5m处以近似获得正投影效果。

为了避免相互反射,所有图像都在暗室中记录,除了目标物体外,所有物体都用黑布覆盖。对于每种照明条件,我们在不同曝光时间下拍摄四张图像并将它们组合起来以获得单个输入 HDR 图像,以便也可以精确存储高镜面观察结果。我们的数据捕获的一组典型曝光时间设置是 {20, 40, 70, 100} ms

光源制作

大多数非朗伯方法需要大约 100 个不同照明的图像,因此将96个白色LED灯按照 \(12 \times 8\) 排列成网格,可实现 \(74.6° \times 51.4°\) 拍摄角度覆盖。

拍摄

在拍摄过程中,光源固定,相机位于其中心。其中测试数据集是在仅改变拍摄角度的条件下获得的。

坐标系

这里统一使用相机坐标系,并将\(Z\)方向与视角对齐,即 \(\mathbf{v} = [0,0,1]^{\top}\)。

\(\mathbf{n}\) : 表面法向量

\(\mathbf{l}\) : 光源方向向量

\(\mathbf{h}\) : 角平分线向量(向量 \(\mathbf{l}\) 和 向量 \(\mathbf{v}\) 的角平分线)

\(\theta_h\) : 向量 \(\mathbf{n}\) 和向量 \(\mathbf{h}\) 的夹角

\(\theta_d\) : 向量 \(\mathbf{h}\) 和向量 \(\mathbf{l}\) (或者向量 \(\mathbf{v}\) )的夹角

image-20241005174206010

光源标定

照明强度标定

使用 Macbeth white balance chart 进行光源强度标定。

光源方向标定

在传统的光度立体光源方向标定方法中,假设了光源为固定照明方向,并且相机成像为正交投影。通过识别图像中铬球(镜面反射)的镜面反射点(图中最亮的亮斑处即为反射点)来计算该处的表面法线。然后根据反射定律,假设该点的表面法线平分了观察方向和光源方向之间的角度,由此推出光源方向计算公式为:

\[\mathbf{l} = 2(\mathbf{n}^{\top}\mathbf{v})\mathbf{n} - \mathbf{v} \]

但作者认为这样的标定仍不够精确,因为实际成像过程是透视变换,而非正交投影。因此,作者基于 “点光源照明和透视相机模型” 来重新标定光源方向。

image-20241006171859197

求解步骤可以概括为:

1)计算相机坐标系下的铬球中心点 \(\mathbf{C}\) 的三维坐标;

2)优化光源到相机坐标系的变换矩阵 \((\mathbf{R},\mathbf{T})\) 使得所有光源到其理论光源方向直线的距离最小;

详细推导过程如下:

已知光度立体相机内参 \(K\) , 铬球半径 \(r\) ,铬球镜面反射点在相机坐标系下的坐标 \(\mathbf{x}\) , 则该位置的观察方向为

\[\mathbf{v} = \mathbf{K}^{-1}\mathbf{x} \]

铬球中心点 \(\mathbf{C}\) 到经过该点的直线距离为 \(r\),即

\[\left \| {\mathbf{C} - \mathbf{v}\mathbf{v}^{\top} \mathbf{C}} \right \| = r \]

将图像中的所有椭圆上的点代入上式中,即可求得铬球中心点 \(\mathbf{C}\) 的三维坐标。

在上图中,铬球表面的亮斑在相机坐标系下的三维坐标为 \(\mathbf{P}_j\) , 其在图像中对应的像素坐标为 \(\mathbf{p}_j\) ,则过 \(\mathbf{p}_j\) 的光线为 \(\mathbf{K}^{-1}\mathbf{p}_j\) , \(\mathbf{P}_j\) 是由光线 \(\mathbf{K}^{-1}\mathbf{p}_j\) 与铬球相交得到的。而铬球表面的点坐标由 球体中心点 \(\mathbf{C}\) 和铬球半径 \(r\) 决定的。

假设所有光源的世界坐标集合为 \(\{\hat{\mathbf{S}}_1, \hat{\mathbf{S}}_2, \cdots,\hat{\mathbf{S}}_{96} \}\),因为这些灯固连在一起,因此经过某个特定的 \(\{ \mathbf{R}, \mathbf{T}\}\) 变换,转换到光度立体相机坐标系,得到 \(\{ \mathbf{S}_1, \mathbf{S}_2, \cdots, \mathbf{S}_{96} \}\)。即 $\mathbf{S}_j = \mathbf{R}\hat{\mathbf{S}}_j+\mathbf{T} $ 。

则可定义如下代价函数:

\[f(\mathbf{R},\mathbf{T}) = {\sum_{j=1}^{96}} \text{dist}(\mathbf{R}\hat{\mathbf{S}}_j+\mathbf{T}, \mathbf{l}_j, \mathbf{P}_j) \]

其中,方向向量 \(\mathbf{l}_j\) 由 镜面反射点 \(\mathbf{P}_j\) 处,\(\mathbf{K}^{-1}\mathbf{p}_j\) 关于表面法向量 \(\mathbf{n}_{\mathbf{P}_j}\) 的反射。其中距离函数 \(\text{dist} (\mathbf{S}, \mathbf{l}, \mathbf{P})\) 定义为点 \(\mathbf{S}\) 到经过 \(\mathbf{P}\) 且方向向量为 \(\mathbf{l}\) 的直线的距离的平方。即:

\[\text{dist} (\mathbf{S}, \mathbf{l}, \mathbf{P}) = \left \| { \mathbf{S} -\mathbf{P} - (\mathbf{l}\mathbf{l}^{\top})(\mathbf{Q} - \mathbf{P})} \right \| \]

这是一个非线性最小二乘问题,可以通过 Matlab 函数 lsqnonlin 来求解。

这种对所有光源同时求解比逐个求解单一光源具有更好的稳健性,因为在设计光源支架时,每个光源的位置都是精确设计了的。

表面法向量真值获取

使用结构光扫描设备恢复物体形貌,所使用的仪器为 Rexcan CS 搭配 TA300 转台。

image-20241006161948726

该结构光设备的点云间距在 [0.035, 0.2] mm 以内,表面噪声低于 0.01 mm。扫描仪搭载了两个 200 mm 的镜头,其 FOV 分别为 \(150° \times 105° \times 185°\) (宽、高、对角线);这样的镜头组可以实现 0.097 mm 的点云间距扫描效果。转盘的直径为 30 cm ,被摄物的直径约为 10 cm ,因此可以放置在旋转台中心,并完全在扫描仪相机的FOV 中。

转盘可以执行±180°旋转和±40°摆动两个方向的运动。通过编程使其以20°的旋转步长和10°的摆动步长移动,因此,在每一轮扫描任务中,物体会自动扫描 \(18 \times 9 = 162\) 次。与扫描仪关联的 eZScan 7 软件对所有扫描执行自动配准,并将它们合并为一个完整的网格。我们从扫描仪的输出中检查配准误差的直方图,并观察到平均距离通常在 0.01mm 的数量级。考虑到我们的物体大小约为 10 cm,配准误差足够低,可以为我们提供足够精确的形状。在扫描之前,我们会对 (READING) 和 (HARVEST) 等高镜面物体进行喷涂。最后,我们获得了 3D 网格,其中从正面视图没有观察到可见的孔或凸起,用于表面法线计算。

形状和图像对齐

通过扫描仪获取到的物体三维信息以及表面法向量信息是在扫描仪相机坐标系下的,而理论的表面法向量真值应该在光度立体相机坐标系下,因此二者需要对齐。作者通过 Meshlab 软件来实现对齐操作。

通过 Meshlab 软件提供的UI交互,可以将扫描得到的参考法线贴图与广度立体图像进行对齐(主要为旋转、缩放、平移)到大致一致,然后使用自动对齐算法进行精确计算,使其收敛到一个稳定的解,则认为已对齐。

为了验证这种对齐方法的有效性,作者测试了斯坦福大学3D扫描库中的几个形状,测试发现这种方法下,对齐结果和真实发现贴图之间的平均角度误差大约为1°(对于BUNNY这类光滑表面);但是对于HAPPY BUDDHA10这类复杂表面,误差则大于3°。但是,真实数据包含来自相机校准、镜头畸变和其他意外来源的噪声,这些也是误差的源头。通过对比发现,对于深度变化较大的对象(尤其是POT1、POT2和BUDDHA),即使提供了较好的初值,对齐结果也不是最优的。因此,必须根据自动对齐结果,以 Meshlab 允许的最小步骤小心旋转和平移来手动调整 3D 形状。在完成一个步骤的手动操作后,我们通过仔细检查两个法线图上的每一个小特征,比较从对齐形状渲染的法线图和参考法线图,直到所有部分都以亚像素精度对齐。

image-20241006165210573

表面法线误差计算

作者采用了基于角度误差的统计指标,用于评估各类光度立体的表现。

在图像中,对于每一个像素,都可以通过算法计算出其表面法向量 \(\mathbf{n}_0\) , 其与法向量真值 \(\mathbf{n}\) 之间的角度误差可以表示为 \(\arccos(\mathbf{n}_0^{\top} \mathbf{n})\) ,使用角度制单位计算。

对整张图计算平均角度误差,并使用箱线图统计误差的最小值、最大值、中位数、第一四分位数、第三四分位数。

数据集使用

在官方网站中,一共提供了如下几份数据集和相关资料:

名称 大小 说明
DiLiGenT.zip 850MB 光度立体数据集
DiLiGenT_Test.zip 759MB 光度立体测试数据集,不提供表面法向量真值
shapeToImageAlignmentToolbox.zip 8MB 执行形状到图像对齐并将网格渲染为法线贴图的代码和说明
ACLSfitBRDFzip 502MB 使用图像数据、校准照明和“地面实况”法线提供 BRDF 拟合结果。还提供了使用拟合的 BRDF 重建图像的示例代码
PointLight.zip 9KB 光源位置和相机内参矩阵,用于点光源模型/透视相机模型

DiLiGenT

压缩包目录结构如下:

├─estNormalNonLambert
├─estNormalUncalib
├─pmsData
│  ├─ballPNG
│  ├─bearPNG
│  ├─buddhaPNG
│  ├─catPNG
│  ├─cowPNG
│  ├─gobletPNG
│  ├─harvestPNG
│  ├─pot1PNG
│  ├─pot2PNG
│  └─readingPNG
├─sampleCodeBaseline
└─sampleCodeEvalNormal
  • pmsData。 所挑选的十个对象,在96个不同光源照明下拍摄所得的16位图像,分辨率为 \(612 \times 512\) , 物体的掩模图(mask.png),光源方向信息 (light_directions.txt,\(3 \times 96\) , 每一行作为一个单位矢量) ,光源强度(light_intensities.txt,\(3 \times 96\) , 每一行代表RGB通道;在执行光度立体前,需要按通道划分这些强度值来对图像进行归一化),文件夹中还提供了所有图像文件名(filenames.txt), 表面法向量真值mat文件(Normal_gt.mat),以及表面法向量的RGB渲染图像(Normal_gt.png)。
  • sampleCodeBaseline。使用“DiLiGenT”数据集加载图像并运行基线光度立体算法(简单线性最小二乘法)的示例。
  • estNormalNonLambert/ estNormalUncalib。 使用最先进的非朗伯/未标定光度立体算法,对 DiLiGenT 数据集进行结算,所获得的各个物体表面法向量mat文件。
  • sampleCodeEvalNormal。加载'estNormalNonLambert'/'estNormalUncalib'中的结果并计算误差统计数据的示例代码(基于每像素角度误差并使用箱须图进行可视化);这里的代码再现了论文的图 2/4

DiLiGenT_Test

压缩包目录结构如下:

├─estNormalNonLambert
├─estNormalNonLambertErrMap
├─estNormalUncalib
├─estNormalUncalibErrMap
├─pmsData
│  ├─bearPNG
│  ├─buddhaPNG
│  ├─catPNG
│  ├─cowPNG
│  ├─gobletPNG
│  ├─harvestPNG
│  ├─pot1PNG
│  ├─pot2PNG
│  └─readingPNG
└─sampleCodeBaseline

与DiLiGenT类似,但不提供面法向量真值mat文件(Normal_gt.mat),而是提供每个像素角度误差图和统计数据角度午餐。测试数据集包含在相同变化的光照条件下与主数据集中的#1--#9相对应的九个对象,但它们是从不同的视点拍摄的。

  • pmsData。图像和光照格式与主数据集相同,但未提供“Normal_gt.mat”和“Normal_gt.png”。

  • sampleCodeBaseline / estNormalNonLambert / estNormalUncalib。与主数据集具有相似的内容。

  • estNormalNonLambertErrMap / estNormalUncalibErrMap。提供了估计法线与“地面实况”的逐像素角度差异图(PNG 图像);每个文件名末尾的数字是平均角度误差。同一文件夹中还提供了错误统计信息(如 EMF 图像中的盒须图,详细信息请参阅我们的论文)

基准数据集测试结果

DiLiGenT数据集

image-20241006191603944

*: 单元格中的数据是平均角度误差(角度制)

DiLiGenT_Test数据集

image-20241006191658232

*: 单元格中的数据是平均角度误差(角度制)

参考资料

标签:相机,mathbf,DiLiGenT,光源,立体,图像,对齐,向量,光度
From: https://www.cnblogs.com/gshang/p/18449313/DiLiGenT

相关文章

  • 三维立体自然资源“一张图”
    随着信息技术的发展,自然资源管理迎来了新的机遇与挑战。在众多技术中,“三维立体自然资源‘一张图’”的概念尤为引人注目。它不仅代表了地理信息科学领域的最新成果,也为自然资源的有效管理和可持续利用提供了强有力的支持。本文将探讨这一概念的内涵及其在自然资源管理中的应用前......
  • 谷歌老户的优势及优化策略,增加曝光度方法介绍
    谷歌老户(已存在一段时间并积累了历史数据的账户)通常具有较高的权重和稳定性,这使其在投放广告时可以更快速地增加流量并保持稳定的表现。以下是一些策略和建议,帮助您最大化利用谷歌老户的优势。一、它的优势:账户权重高:谷歌广告系统通常会给予历史良好表现的账户更高的权重,这......
  • SFM(structure from motion从运动恢复结构)和MVS(multi-view stereo多视图立体视觉)
    最近在开始新的领域,三维重建,其实是想做adas领域的4dlabel相关的工作。无奈啊,对computergraphics的东西,我一向很排斥,然后现在不得已要面对了。首先推荐一本书,MultipleViewGeometryinComputerVision(SecondEdition),英语版本可能读着顺利些,中文的看反馈说翻译的不好。顾名......
  • 3.js - 阴影映射、色调映射(曝光度)
    阴影映射、色调映射阴影映射shadowMapconstrenderer=newTHREE.WebGLRenderer({alpha:true})`阴影映射: 用于,计算物体投射到其他物体上阴影的技术, 阴影映射,通过,在场景中,从光源的视角渲染一次场景(深度测试)来工作,从而确定哪些部分被其他物体遮挡,进而生成阴影。`......
  • 立体角
    立体角立体角,常用字母Ω表示,是一个物体对特定点的三维空间的角度,是平面角在三维空间中的类比。它描述的是站在某一点的观察者测量到的物体大小的尺度。例如,对于一个特定的观察点,一个在该观察点附近的小物体有可能和一个远处的大物体有着相同的立体角。平面角的大小可以用弧度(r......
  • 【小白深度教程 1.5】手把手教你用立体匹配进行双目深度估计,以及 3D 点云生成(含 Pytho
    【小白深度教程1.5】手把手教你用立体匹配进行双目深度估计,以及3D点云生成(含Python代码解读)1.立体匹配的原理2.块匹配算法(BlockMatchingAlgorithm)2.1代码中的立体匹配过程概述2.2代码原理及公式2.2.1.窗口匹配和代价函数(SAD)2.2.2.匹配过程2.2.3.......
  • Vue2 - 最新实现百度地图3D立体感视角教程及示例代码,利用WebGL实现3d百度地图详细流程
    前言如果您需要Vue3版本,请访问在vue2|nuxt2项目开发中,详解实现“安装引入百度地图webgl技术,实现3d地图教程”将百度地图变成3D视角效果,让百度地图平面2D视图和3D立体视图进行切换渲染显示,vue如何实现百度地图的三维立体地图效果,解决WebGL引入报错或无效、3D地图......
  • NS4248 3.0Wx2 双声道 D 类音频功率放大器附加立体声耳机功能
    1特性●工作电压范围:3.0V-5.25V●输出功率3W@ClassD/Load=3ohm●THD+N=0.1%@VDD=5V/Po=0.5W●立体声耳机放大模式●优异的全带宽EMI抑制能力●优异的“上电,掉电”噪声抑制●过流保护、欠压保护●提供SOP16封装2应用范围●手提电脑●台式电脑●......
  • HT4832耳机放大器33mw免输出电容立体声耳机放大器
    ■特点无需大尺寸输出隔直电容以0V电位为参考输出;出色的低频表现:静态电流:3.6mA(PVDD=3.6V,Output=floating)关断电流:0.1uA单端或差分输入 内置输入电阻减少外部元器件数量系统噪声性能优良THD+N仅为:0.014%(3.6V,32ohm,20mw)功率输出:33mW(PVDD=3.6V,RL=32......
  • 佰泰盛世—HT760 2x30W I2S 输入,无电感,立体声D级放大器
    1特性电源:•PVDD:4.5V-22V;•DVDD:3.3V音频性能•BTL,2x33W(PVDD=22V,RL=8Ω,THD+N=10%)•PBTL,50W(PVDD=22V,RL=4Ω,THD+N=1%)•THD+N=0.05%(PVDD=12V,RL=4Ω,Po=1W)•Noise:100uV(Gain=19dBV,Aweighted)低静态电流•PVDD=12V时,12mA,无滤波器 1SPW......