首页 > 其他分享 >光度立体法的简化求解(已知特殊光源方向)

光度立体法的简化求解(已知特殊光源方向)

时间:2024-03-19 12:34:12浏览次数:14  
标签:求解 光源 立体 titls CSDN 二式 速度 光度

 原理这个博主写的很好

如何获取物体表面的法向量?好好谈谈光度立体法-CSDN博客

Photometric Stereo 光度立体三维重建(一)——介绍-CSDN博客

不过当图片较大的时候,比如4048*4000这种量级的,矩阵很大,速度要10秒,加了openmp也需要2s;

如果我们知道一些先验知识,在特定的slant和titls角度,可以简化过程,提升速度(结果在最后)

四个光源在等高且titls分别为0,90,180,270;偏角均为slant = θ

那么每个位置(x,y)在四个特殊的角度下,代入朗博公式有

t_0 =\frac{ \rho(-n_xsin\theta +cos\theta )l }{\sqrt{n_x^{2}+n_y^{2}+1}}

t_{90} =\frac{ \rho(-n_ysin\theta +cos\theta )l }{\sqrt{n_x^{2}+n_y^{2}+1}}

t_{180} =\frac{ \rho(n_xsin\theta +cos\theta )l }{\sqrt{n_x^{2}+n_y^{2}+1}}

t_{270} =\frac{ \rho(n_ysin\theta +cos\theta )l }{\sqrt{n_x^{2}+n_y^{2}+1}}

其中,ρ反射率,l是光强

一式加三式,二式加四式有

t_{180} +t_0=\frac{ 2\rho cos\theta l }{\sqrt{n_x^{2}+n_y^{2}+1}}

t_{270} +t_{90}=\frac{ 2\rho cos\theta l }{\sqrt{n_x^{2}+n_y^{2}+1}}

那么有

\frac{ \rho l }{\sqrt{n_x^{2}+n_y^{2}+1}}=\frac{t_{180} +t_0}{2cos\theta }=\frac{t_{270} +t_{90}}{2cos\theta }

一式减三式,二式减四式有

t_{180} -t_0=\frac{ 2\rho n_xsin\theta l }{\sqrt{n_x^{2}+n_y^{2}+1}}

t_{270} -t_{90}=\frac{ 2\rho n_ysin\theta l }{\sqrt{n_x^{2}+n_y^{2}+1}}

\frac{ \rho l }{\sqrt{n_x^{2}+n_y^{2}+1}}=\frac{t_{180} +t_0}{2cos\theta }=\frac{t_{270} +t_{90}}{2cos\theta }

代入上面两个式子中

得到:

t_{270} -t_{90}=\frac{ 2\rho n_ysin\theta l }{\sqrt{n_x^{2}+n_y^{2}+1}}=\frac{ 2n_ysin\theta (t_{270}+t_{90}) }{2cos \theta }= n_ytan\theta (t_{270}+t_{90})t_{180} -t_{0}=\frac{ 2\rho n_xsin\theta l }{\sqrt{n_x^{2}+n_y^{2}+1}}=\frac{ 2n_xsin\theta (t_{180}+t_{0}) }{2cos \theta }= n_xtan\theta (t_{180}+t_{0})

处理一下,得到:

n_y=\frac{t_{270} -t_{90}}{(t_{270}+t_{90})tan\theta }

n_x=\frac{t_{180} -t_{0}}{(t_{180}+t_{0})tan\theta }

上面两式子就是求出的法向量x分量,y分量.这样可以跳过大矩阵求逆相乘的溢出,减少耗时,速度提升很多.

下面是处理4048*4000图片的速度(均加了openmp)

两种方法速度比较
不加omp加omp
传统方法10s2s
特殊方法0.7s0.2s

标签:求解,光源,立体,titls,CSDN,二式,速度,光度
From: https://blog.csdn.net/weixin_41674673/article/details/136802399

相关文章

  • 【Python】拉格朗日Lagrange插值与牛顿Newton插值求解
    实验原理熟悉并掌握Lagrange插值的构造原理;会计算在给定点的函数值Lagrange插值是一种基于Lagrange基函数的插值方法。给定一组数据节点(x,y),其中x是自变量,y是因变量,其插值的目标是构造一个多项式函数,通过这个多项式函数来拟合已知的数据节点,并用于对其他未知点进行插值预......
  • 反演问题求解:基于MATLAB的反演问题求解算法实现和应用,包括反演问题数值模拟、反演问题
    鱼弦:公众号【红尘灯塔】,CSDN内容合伙人、CSDN新星导师、全栈领域优质创作者 、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构https://github.com/Peakchen)基于MATLAB的反演问题求解:原理、应用、实现与分析反演问题是指由间接观测数......
  • 利用规约算法实现求解数组元素最大值
    规约算法原理可参照上一篇关于规约算法求解数组和的博客,此处不再详细介绍,直接给出代码实现过程及注释。#include<stdio.h>#include<stdlib.h>#defineN1000//数组大小__global__voidfindMax(int*array,int*maxValue,int*maxIndex){__shared__ints_ma......
  • 求解器研究中的实验设计
    最近收集了部分文献中实验设计如下: 1.文献:CommunityStructureinIndustrialSATInstancesA.段落:第7节第4段后半段。讲解了一个实验,很有意思。笔记:(1)关于SAT结论对应于可能有多个不同的赋值序列。特别是:Noticethatthisexperimentisequivalenttoremovingallac......
  • 【题目】ccf csp 202309-3 梯队求解
    题目大意:给出需要求解的逆波兰表达式(后缀表达式),包含多个变量,现在每一次查询,给出所有变量的值,询问对于给定的变量其函数偏导值为多少。(仅包含乘、加减运算)(例如,对于表达式:x1x1x1*x2+*可转化为(x1*x1+x2)*x1对x1求偏导后变为(2*x1+x2)+(x1*x1+x2)带入x1=......
  • 年均增长率的求解方法举例
    原文链接:https://baijiahao.baidu.com/s?id=1776842859423008087&wfr=spider&for=pc年均增长率=每年的增长率之和/年数2累积增长率法累积增长率法是一种常见的求解年均增长率的方法,它适用于已知多个年份的数值:步骤1:将每个年份的数值除以前一年的数值,得到每年的增长率;步......
  • 特效学习-光源的特殊运算
    光源的正常运算:物理上光源是反比例衰减逻辑,当x轴趋向远端时,光照强度趋近于0,所以一般的光源在引擎中显示呈:中间足够量,外圈趋向于黑暗在正常现实世界光照的半径是从人的眼睛到达光源,但在引擎中基于对性能的优化往往会设置一个光源半径,光源不会超出这个半径,导致在引擎中的表现会让......
  • 题解 NKOJ2929 【[THUSC2014] 函数求解】
    代码:#include<iostream>#include<queue>#include<cstdio>#include<cmath>usingnamespacestd;typedefstruct{ intnxt; intend; intdis; doublecost;}Edge;constintN=2e3,M=400+7,K=80800+7;constdoubleep......
  • chapter2-暴力求解
    1、枚举对所有可能的情况进行枚举。面对枚举类型的题目,在想到思路的时候,要习惯于分析一下这种方法的复杂度是多少,结合题目的数据量分析这样的方法是否可行,然后再动手写代码,节约时间。计算机1000MS,大约可进行10^7次运算。所以,常见的代码时间复杂度,1秒内可接受的数据量如下表:......
  • 费用流求解二分图最大权匹配
    二分图最大权匹配问题:有\(n_1\)个左部点,\(n_2\)个右部点,\(m\)条边,边有边权\(w_i\),表示若选择这条边就会获得\(w_i\)的收益,求获得收益最大的一种图的匹配方案。若考虑用费用流求解,建立超级源点\(S\)和超级汇点\(T\),\(S\)向每个左部点连边,流量1费用0;每个右部点向\(......