朗伯面、朗伯体、立体角----详细解答

在分析光源,以及物体反射时,由于朗伯表面具有规则的物理模型和数学计算公式,并且在不破坏光的原有性质的前提下,能很好地近似光源和物体反射的光学现象。因此在进行光学分析时,朗伯面是一个很好的公式以及分析简化的假设。

朗伯体:是指当入射能量在所有方向均匀反射,即入射能量以入射点为中心,在整个半球空间内向四周各向同性的反射能量的现象,称为漫反射,也称各向同性反射,一个完全的漫射体称为朗伯体。理想的漫反射应遵循这个规律。例如积雪和白墙。

余弦发光体:若一扩展光源的发光强度为dI∝cosθ,即其亮度B与方向无关。这类发射体称为余弦发光体,或朗伯(J.H.Lambert)发光体,上述按cosθ规律发射光通量的规律,成为朗伯余弦定律。式中dI为扩展光表面的每块面元dS沿某方向r的发光强度,θ为r与法线n的夹角。
符号“∝”表示成正比例。一个物理量y随另一个物理量x的正比关系,可以表示为y∝x(读作“y正比于x”)。例如,在匀速直线运动的速度公式v=s/t中,s与t成正比,记作s∝t。
从远处看,发光球体像是一个发光圆盘,这就是余弦发光体,太阳就是余弦发光体。
在这里插入图片描述
这里会有疑问的地方:我们已经说了朗伯面各个方向看到的亮度相同,那为什么还和角度有关?
这是因为我们各方向看到的是亮度,亮度与方向无关,而发光强度与方向有关。
在这里插入图片描述
我们是可以看出,我们正视面元时,其面积为s,其光强度为I1。当我们倾斜角度时,其面积为scosθ,其强度也就为I1cosθ。
下面我们来谈一下什么是立体角
首先我们先想一下,我们为什么要立体角?
因为我们需要定义一下,点光源发出的辐射的能量。我们可以想到,这个应该会与距离有关,与面积有关,与是否正对有关,等等。
我们的第一印象
在这里插入图片描述
在这里插入图片描述
单位面积/距离的平方=单位立体角。这就是单位立体角的含义,其单位为球面度(sr)
在这里插入图片描述
在这里插入图片描述

### 奇异值分解在光度立中的应用 #### 光度立简介 光度立(Photometric Stereo)是一种通过多幅不同照明条件下拍摄的同一场景图像来估计物性质的技术。该方法可以用来恢复物的高度图或者法向量场,进而构建三维模型。 #### SVD用于求解线性方程组 当采用多个方向均匀分布的平行光源照射被摄并获取一系列灰度影像时,在理想情况下每一点处满足朗伯反射定律,则对于每一个像素位置(x,y),其强度I可表示为: \[ I_i = \rho(\textbf{n}\cdot\textbf{l}_i)\] 其中\(ρ\)代表反照率;n是未知的单位长度表法矢;li是从第 i 个光源发出的方向向量。上述关系构成了一个超定线性系统,可以通过最小二乘法解决这个问题。而奇异值分解(Singular Value Decomposition, SVD)[^1]作为一种强大的矩阵分析工具正好适用于此类问题。 具来说,如果我们将所有观测到的数据整理成一个m×n大小的矩阵形式M(m 表示图片数量,n 表示单张图片中有效像素数目),那么就可以对该数据矩阵执行SVD操作得到三个子空间U、Σ 和 V 的乘积: \[ M= U ΣV^{T} \] 这里Σ是一个对角阵,它包含了原始矩阵最重要的信息——即各个维度上的能量贡献比例。通过对这些成分的选择性保留或舍弃,可以在一定程度上去噪和平滑处理输入信号的同时保持主要结构特性不变[^4]。 #### 应用实例:去除镜反射干扰项 实际采集过程中不可避免地存在非理想的因素影响最终结果的质量,比如高光斑点等异常情况。此时借助于SVD技术可以从数学层分离出低秩部分对应着真实的漫射分量,并将剩余残差视为噪声加以剔除掉从而获得更纯净的目标函数表达式[^2]。 ```python import numpy as np from scipy.linalg import svd def photometric_stereo(images, light_directions): """ Perform Photometric stereo using SVD. Parameters: images : ndarray of shape (num_images, height, width) Input grayscale images under different lighting conditions. light_directions : ndarray of shape (num_images, 3) Corresponding normalized direction vectors for each image's illumination source. Returns: albedo_map : ndarray of shape (height, width) Estimated surface reflectance map. normal_map : ndarray of shape (height, width, 3) Reconstructed unit-length normals at every pixel location. """ num_images, h, w = images.shape # Reshape the input data into matrices suitable for processing with SVD img_matrix = images.reshape((num_images, -1)) l_dirs = light_directions.T @ light_directions rhs_vector = light_directions.T @ img_matrix u, s, vh = svd(rhs_vector) # Extract first three singular values and corresponding left/right singular vectors rank_three_approximation = u[:, :3] * s[:3].reshape(1,-1) @ vh[:3,:] n_hat = rank_three_approximation / np.sqrt(np.sum(rank_three_approximation ** 2,axis=0)) rho_estimated = np.mean(img_matrix / ((light_directions @ n_hat).clip(min=0)),axis=0) return rho_estimated.reshape(h,w), n_hat.reshape(h,w,3) if __name__ == "__main__": pass ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值