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

 原理这个博主写的很好

如何获取物体表面的法向量?好好谈谈光度立体法-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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/754830.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

项目中遇到的sql问题记录

有一张表,表结构及数据如下: INSERT INTO test.test_approve(approve_no, tra_date, tablename, part_dt) VALUES (approve001, 2021-02-18 00:00:00, tableA, 2024-03-18); INSERT INTO test.test_approve(approve_no, tra_date, tablename, part_dt) …

卸载.Net SDK

文章目录 SDK版本对照卸载历史版本清理Nuget缓存参考资料 在.Net学习环境或项目开发环境中,往往会安装多个版本的SDK,如何卸载历史SDK呢? SDK版本对照 # 检查SDK $ dotnet sdk check .NET SDK: 版本 状态 ---------------…

深度学习03价值学习

Q*类似于先知,知道动作的后果 价值学习是得到一个近似的价值函数

【ARM】DSTREAM上面的各个指示灯代表什么意思?

【更多软件使用问题请点击亿道电子官方网站查询】 1、 文档目标 对于DStream仿真器上面的指示灯亮灭代表的意义进行分析。 2、 问题场景 主要对于DStream仿真器的使用过程中,不同的情况下面仿真器的指示灯会进行相应的亮灭。了解一下不同指示灯的亮灭所提示的信息…

【nfs报错】rpc mount export: RPC: Unable to receive; errno = No route to host

NFS错误 问题现象解决方法 写在前面 这两天搭建几台服务器,需要使用nfs服务,于是六台选其一做服务端,其余做客户端,搭建过程写在centos7离线搭建NFS共享文件,但是访问共享时出现报错:rpc mount export: RPC…

2023 re:Invent 使用 PartyRock 和 Amazon Bedrock 安全高效构建 AI 应用程序

前言 “ Your Data , Your AI , Your Future .(你的数据,你的 AI ,你的未来。) 亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、活动与竞赛等。帮助中国开发者对接世界…

Nginx高级数据结构动态数组源码剖析

本博客于学习nginx时刚好看了几眼nginx动态数组的实现源码,故记录一下 其实动态数组的实现原理核心都大差不差,推荐看看C STL(SGI)的vector更好 类型定义 typedef struct { //可以通过ngx_array_create函数创建空间,并初始化各个成员void *elts; //数组地址…

GitLab/Github从头开始配置秘钥

1、下载git安装包 CNPM Binaries Mirrorhttps://registry.npmmirror.com/binary.html?pathgit-for-windows/ 拉到页面最底部选择 点进文件夹下载32位或者64位的版本,我的是64位就选择64的版本进行安装 2、傻瓜式安装 3、在相应的文件夹右键选择 UserName为你的用…

【vSphere】更改集群中ESXi主机IP地址的安全方法

参考步骤(不完整验证) 将 ESXi 主机置于维护模式。从 vCenter 中移出集群,并删除 ESXi 主机。使用 ESXi 主机 UI Client 或 KVM 直接连接。更改 IP 地址并更新 DNS 服务器。将 ESXi 主机添加回 vCenter Server,置于维护模式&…

Flutter-自定义图片3D画廊

效果 需求 3D画廊效果 设计内容 StackGestureDetectorTransformPositioned数学三角函数 代码实现 具体代码大概300行 import dart:math;import package:flutter/material.dart; import package:flutter_xy/widgets/xy_app_bar.dart;import ../../r.dart;class ImageSwitc…

用C语言打造自己的Unix风格ls命令

在Unix或类Unix操作系统中,ls是一个非常基础且实用的命令,它用于列出当前目录或指定目录下的文件和子目录。下面,我们将通过C语言编写一个简化的ls命令,展示如何利用dirent.h头文件提供的函数接口实现这一功能。 c #include &quo…

【3DsMax】UVW展开——以制作牙膏盒为例

效果 步骤 1. 从网上下载牙膏盒贴图,我下载的贴图地址为(牙膏盒贴图链接) 2. 打开3DsMax,创建一个长方体,设置长宽高分别为180、45、40毫米 打开材质编辑器,点击漫反射后的按钮 双击“位图” 将材质赋予长…

阿里云云服务器ECS端口多个端口号开通教程

阿里云云服务器ECS端口多个端口号开通教程 1、登录到ECS云服务器管理控制台 2、左侧栏找到【实例与镜像】>>【实例】,找到目标ECS实例,点击实例ID进入到实例详情页 3、切换到【安全组】页面,点击右侧【配置规则】,如下图&…

HTML静态网页成品作业(HTML+CSS)——抗击疫情网页(4个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有4个页面。 二、作品演示 三、代…

图论题目集一(代码 注解)

目录 题目一&#xff1a; 题目二&#xff1a; 题目三&#xff1a; 题目四&#xff1a; 题目五&#xff1a; 题目六&#xff1a; 题目七&#xff1a; 题目一&#xff1a; #include<iostream> #include<queue> #include<cstring> using namespace st…

<商务世界>《第15课 投标文件一般包含的子文件》

1 响应文件封面 招标文件中的响应文件封面是投标人或参与者在提交响应文件时所使用的封面设计。这个封面不仅仅是文件的外包装&#xff0c;更是投标人形象和专业素质的直观展示&#xff0c;对于给招标方留下良好的第一印象至关重要。 首先&#xff0c;响应文件封面通常会包含…

java中下载多个文件和文件夹打压缩包下载,并自定义包中每个文件的名称

我的需求是一个可以批量下载文件或文件夹的接口&#xff0c;下载一个文件就正常下载&#xff0c;下载多个文件或单个多个文件夹都压缩成zip下载 本来想的是直接用hutool里面的ziputil工具类就行&#xff0c;但是我这里报错的文件都是用随机字符串命名的&#xff0c;直接用ZipUt…

硬盘哨兵Hard Disk Sentinel Pro V6.20.0.0 便携版

Hard Disk Sentinel 是一款功能强大的硬盘监控和分析软件&#xff0c;专为 Windows 用户设计。它可以实时监测硬盘驱动器&#xff08;HDD&#xff09;、固态硬盘&#xff08;SSD&#xff09;、混合硬盘&#xff08;SSHD&#xff09;、NVMe SSD、RAID 数组和外部 RAID 盒子的健康…

uniapp可视范围高度 - 用户屏幕可操作的屏幕高度 - 适用于APP、H5@公众号、纯H5@Chrome

可视范围高度 let heightPx uni.getWindowInfo().windowHeight uni.getWindowInfo().windowTop 官方手册 uni.getWindowInfo() | uni-app官网uni-app,uniCloud,serverless,uni.getWindowInfo()https://uniapp.dcloud.net.cn/api/system/getWindowInfo.html 实测数据 uni.ge…

【精准】北斗同步时钟(北斗卫星授时服务器)助力医疗信息化

【精准】北斗同步时钟&#xff08;北斗卫星授时服务器&#xff09;助力医疗信息化 【精准】北斗同步时钟&#xff08;北斗卫星授时服务器&#xff09;助力医疗信息化 北斗时钟同步服务器是一款支持NTP和SNTP网络时间同步协议&#xff0c;高精度、大容量、高品质的高科技时钟产品…