光度立体法检测原理讲解

news/2025/1/17 21:42:38/

光度立体法检测

图像辐照度

决定场景表面片辐射的因素有两个:

1.在场景表面片的照明

投在某一特定表面片上的照明量取决于该表面片在场景中相对于光源的分布位置

2.表面片反射的入射照明部分

在某一特定方向上被表面片反射的入射照明部分取决于表面材料的光学特性

反射类型:

1.Lambertian反射(也叫理想散射)

Lambertian 表面是指在一个固定的照明分布下从所有的视场方向上观测都具有相同亮度的表面,Lambertian表面不吸收任何入射光.Lambertian反射也叫散光反射,不管照明分布如何,Lambertian 表面在所有的表面方向上接收并发散所有的入射照明,结果是每一个方向上都能看到相同数量的能量.

Lambertian 表面的 BRDF 是一个常数:
在这里插入图片描述
假定照明不是一个点光源,而是在所有方向都是均匀的,其发光总强度为I.那么亮度可由下式给出:
在这里插入图片描述
现在,Lambertian 表面的被感觉的亮度在所有方向上都相,这是因为不管表面片朝向何方,它都能接收到同样数量的照明。
表面反射特性:
在这里插入图片描述

2.理想镜面反射

在这里插入图片描述

该方程表明入射光线被表面片反射出去,如同理想的镜子一样。
镜面在某一方向上反射所有的入射光,反射方向角相对于镜面法线来说与入射角相等,但在法线的另一侧,镜面的BRDF为:
在这里插入图片描述

理想镜面反射特性:

在这里插入图片描述

3.Lambertian反射和镜面反射组合

在这里插入图片描述
式中常量控制着两个反射函数的混合度
镜面反射和散光反射的相对比例随着物体表面材料的不同而变化光滑的物体,或者说闪亮的物体,其镜面反射的成分要高于无光泽的物体。

表面方向

想象球上的一个点,并假定一个平面在该点与球相切,该平面的法线也是球上对应点的表面法线。

表面朝向: 表面法线和镜头方向间夹角

在这里插入图片描述
该式子简单地表明对应于深度z 的单位变化,在X和Y的相应位移量分别为 p和q.单位表面法线可以通过表面法线除以它的长度得到:
在这里插入图片描述

反射图(Reflectance Map)

将场景照明、表面反射和(在以观察者为中心的坐标系中)表面方向表示的组合称为反射图。它确定了在给定照明分布和表面材料的情况下,一个表面片在特定方向上的亮度.
假设具有 Lambertian 反射特性表面片由一个点光源照明。已计算出表面片的辐射为:
在这里插入图片描述
式中,0.是表面片的法线与光源方向矢量间的夹角。
在这里插入图片描述

两个矢量间夹角的余弦是两矢量的点积除以每个矢量的长度,所以表面法线和光源方向之间的夹角的余弦是:
在这里插入图片描述
场景照明 (光源)、表面反射特性和表面方向(梯度表示)共同确定表面一点的亮度,三者的组合形成反射图.
假设图象平面上的辐照度 (亮度) 等于物体表面对应点的辐射度,则已知反射图和以上三个因素,就可以确定图象上一点的亮度。
图像辐照度的精确值取决于各种因素,比如光源强度、光学系统的集光性能以及很多其它不影响反射的因素这些因素使得图像辐照度正比于若干常数。因此,反射图可以归一化,以便统一描述。
这样对于一个远距离点光源照射的朗伯面,有:
在这里插入图片描述
景物亮度与表面朝向关系可由反射图获得。

点光源照射的Lambertian表面典型反射图

在这里插入图片描述

亮度约束方程

反射图表示了表面亮度与表面朝向的关系。
图像上一个点的辐照度正比于景物中目标表面对应点亮度。
如果归“化将比例系数定为单位值,则可将景物点亮度记为:
可以得到图像上点照度为:
在这里插入图片描述
在一个象素点处的图像强度是对应于场景点的表面方向的函数,该强度值可在反射图中获取。这样,对于一个固定照明和成象条件,以及对于一个已知反射特性的表面,表面方向的变化可转换成图像强度的相应变化。反过来,由图像强度的变化可以恢复表面形状的问题,即所谓从明暗恢复形状的问题。“
图像辐照方程包含有两个未知数,表面方向p和g。
基本思想: 通过不同的光源产生不同的图像辐射方程来增加方程数目,以求解表面方向p和q。假定获取两幅采用不同照明图像,如图所示。这样,对于图像中的每一点,将产生两个图像辐照方程:
在这里插入图片描述

如果这些方程是线性的,而且是线性无关,则p和9 具有唯一解。如果方程是非线性的,则方程无解或无唯一解。
在两个不同光源照射下的两个反射图迭加示意图:
在这里插入图片描述

例如,两个图像辐射方程为:
在这里插入图片描述
可以验证,当R和R,分别取不同值时,上述方程将会有一个解、两个解、或无解,当(p1:q1)=(p2;q2),将有无穷解。
主要代码部分:

ImageFiles := []
ImageFiles[0] :='F:/光度立体/0.jpg'
ImageFiles[1] :='F:/光度立体/90.jpg'
ImageFiles[2] := 'F:/光度立体/180.jpg'
ImageFiles[3] := 'F:/光度立体/360.jpg'* zoom_image_size (Image, ImageZoom, 512, 512, 'constant')
read_image (Image, ImageFiles)
rgb1_to_gray (Image, Image)* Image Acquisition 01: Do something* Tilts := [0,90,180,270]
* Slants := [45,45,45,45]
Tilts := [-80,10,95,-170]
Slants := [45,45,45,45]
* ResultType := ['gradient','albedo']
ResultType := ['gradient']
photometric_stereo (Image, HeightField, Gradient, Albedo, Slants, Tilts, 'gradient', 'poisson', [], [])
derivate_vector_field (Gradient, Result, 5, 'mean_curvature')
* threshold (Result, Regions, 0.001165, 0.1)
threshold (Result, Regions, 0, 0.1)
* gen_circle (ROI_0, 1946.17, 2498.06, 766.33)
* clip_region (Regions, RegionClipped, 1165, 1679, 2744, 3222)

http://www.ppmy.cn/news/38586.html

相关文章

零售数据分析之操作篇11:销售占比分析

各位数据的朋友,大家好,我是老周道数据,和你一起,用常人思维数据分析,通过数据讲故事。 上期内容和作业 上一讲讲了排名与TOP的场景,排名是以排序为基础,从1开始标识其排名的序号;…

[SV]local和protected的区别

local和protected的区别 Q1:什么时候用local和protected? A:local和protected的封装属性,都可以隔离外部对类成员变量的访问。对于验证环境,反倒一般不建议添加local和protected,因为一般验证环境的层次没有…

C 错误处理

C 错误处理 C 语言不提供对错误处理的直接支持,但是作为一种系统编程语言,它以返回值的形式允许您访问底层数据。在发生错误时,大多数的 C 或 UNIX 函数调用返回 1 或 NULL,同时会设置一个错误代码 errno,该错误代码是…

【动手学习深度学习笔记】

第二章预备知识 节省内存:使⽤切⽚表⽰法将操作的结果分配给先前分配的数组 Z[:] XY就可以把结果覆盖在Z的原内存上,而不是新开辟内存,就节省了内存了 处理缺失值 inputs,outputs data.iloc[:,0:2],data.iloc[:,2] # iloc为位置索引 in…

ABC252 D - Distinct Trio

还有一天就篮球被了,好紧脏.... 我的世界将被摧毁,也许事与愿违 是时候放弃一些东西了呢 D - Distinct Trio (atcoder.jp) 思路: 注意到值域很小,我们可以用值域的前缀和来维护全局哈希,即用前缀和来维护多少数比x…

华为OD机试-最多组合直角三角形个数-2022Q4 A卷-Py/Java/JS

题目描述 有N条线段&#xff0c;长度分别为a[1]-a[n]。 现要求你计算这N条线段最多可以组合成几个直角三角形。 每条线段只能使用一次&#xff0c;每个三角形包含三条线段。 输入描述 第一行输入一个正整数T(1<T<100)&#xff0c;表示有T组测试数据. 对于每组测试数据&…

自然语言处理(七): Deep Learning for NLP: Recurrent Networks

目录 1. N-gram Language Models 2. Recurrent Neural Networks 2.1 RNN Unrolled 2.2 RNN Training 2.3 (Simple) RNN for Language Model 2.4 RNN Language Model: Training 2.5 RNN Language Model: Generation 3. Long Short-term Memory Networks 3.1 Language M…

机器学习:无监督学习之deep generative model

无监督学习 费曼的思想&#xff1a;what i can not create, i do not understand 不知道怎么产生的话&#xff0c;是不能完全理解的。 Create - Image Processing Generative Models PixelRNN 输入一个3x3的像素块&#xff0c;输出3x3的像素块。再把所有的加入继续送入网络输…