- 博客(55)
- 资源 (2)
- 收藏
- 关注
原创 《Hybrid-quality-guided phase fusion model for high dynamic range 3D surface measurement 》
结构光三维测量因其良好的稳定性和优异的测量速度,已广泛应用于工业生产的缺陷检测、废弃物分类、参数优化等诸多方面[1-5]。然而,由于相机设备动态范围的限制,汽车外壳、发动机叶片等高动态范围(HDR)表面物体的三维形状测量一直是一个具有挑战性的难题[1,6]。许多基于结构光技术的HDR三维测量方法已经得到了深入的研究。这些方法可分为单最佳测量(SBM)和多最佳测量融合(MMF)两类。SBM方法试图通过自适应投影[7-9]和深度学习[10-12]等额外的处理,在单次测量中获得完整的重建。
2023-06-01 21:49:28
631
1
原创 论文阅读《Gradient-based Camera Exposure Control for Outdoor Mobile Platforms》
最近,用于物体检测、识别和跟踪的图像处理和计算机视觉技术的改进使各种视觉系统能够自主运行,从而使自主移动平台成为可能[1]。在这种基于实时视觉的系统中,从相机捕获的图像直接作为输入输入到后续算法中。捕获图像的质量强烈影响算法的成功;然而,针对鲁棒图像捕获的摄像机控制研究一直被忽视;对相机控制的研究远远少于对计算机视觉算法本身的研究。大多数移动平台视觉系统依赖于相机内置的标准自动曝光方法,或者由用户手动调整固定曝光。传统的自动曝光方法是通过评估图像的平均亮度来调整相机曝光[2,3,4]。
2023-05-18 20:30:31
1036
2
原创 论文精读《Optical Measurement of Highly Reflective Surfaces from a Single Exposure》
光学测量三维(3D)表面几何在工业检测[1]、视觉伺服[2]和视觉引导自动化[3]中得到了广泛的应用。在三维光学测量方法中,基于结构光(SL)的方法以其高精度、非接触、全视野等特点受到广泛应用[4]。基于语言的方法包括将一系列编码模式投射到目标部件。零件的表面由投影图案唯一地编码。对捕获图像的信息进行解码,通过三角剖分得到三维点云/网格[5],[6]。基于sl的方法的一个挑战是测量具有高反射表面的部件(例如金属和电镀表面)[7]。图1(a)显示了具有一系列反射率变化的工业部件的相位编码图像。
2023-05-16 11:56:15
921
2
原创 《NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis》论文精读
我们发现,优化复杂场景的神经辐射场表示的基本实现不能收敛到足够高分辨率的表示,并且在每个相机光线所需的样本数量方面效率低下。我们通过使用位置编码转换输入5D坐标来解决这些问题,该编码使MLP能够表示更高频率的函数,并且我们提出了一个分层采样过程,以减少充分采样这种高频场景表示所需的查询数量。我们的方法继承了体积表示的优点:两者都可以表示复杂的现实世界的几何形状和外观,并且非常适合使用投影图像进行基于梯度的优化。至关重要的是,我们的方法克服了在高分辨率下建模复杂场景时离散体素网格的高昂存储成本。
2023-05-07 19:56:40
754
原创 《High-reflectivity surface measurement in structured-light technique by using a transparent screen》
条纹投影轮廓术已广泛应用于物体的测量,但对高反射率表面的测量仍是一个棘手的问题。本文提出了一种利用透明屏作为摄像机光学掩模的高动态范围(HDR)技术。特别地,在相机的前面放置一个透明的屏幕,通过调整其对应的屏幕像素的强度,可以精确地控制每个相机像素的强度。实验验证了该方法的有效性:与其他方法相比,四步相移方法的动态范围从48.13 dB提高到71.83 dB,且投影图数较少。本研究的意义在于,该方法可以很容易地与其他HDR技术相结合,为结构光技术获得更大的动态范围。
2023-04-13 12:01:33
795
2
原创 《Improving the quality of stripes in structured-light three-dimensional profile measurement》论文解读
用编码结构光测量高动态范围(HDR)反射率的物体,捕获的条纹通常会受到反射率的严重扭曲,导致测量结果不准确。针对这一问题,提出了一种条纹增强方法。该方法基于条纹相位和强度之间的对应关系。首先,利用相移算法和多重曝光法提取条纹图像的相位图,消除条纹图像的饱和和低对比度;然后对条纹调制进行归一化处理,消除反射率的影响;最后,通过调制和相位图的组合得到增强条带。实验结果表明,该方法对具有HDR反射率的目标有效,具有较高的精度。
2023-04-11 11:55:55
720
2
原创 《High dynamic range 3D measurement based on structured light: A review》论文解读
结构光法具有稳定、快速的优点,是工业生产中自动化三维测量的最佳方法之一。然而,当工业零件表面具有高动态范围(HDR)区域时,例如生锈、油污或有光泽的表面,由于图像中的低调制和像素过饱和,可能会发生相位计算错误,从而难以获得准确的3D数据。本文对现有的高动态范围结构光三维测量技术进行了分类和总结,比较了各自的优势,并分析了未来的发展趋势。现有的测量方法根据测量原理分为多次测量融合(MMF)和单次最佳测量(SBM)。然后,详细讨论了两类不同方法的优点,并分析了适用场景。
2023-04-10 16:30:44
1175
原创 深入了解字典树
插入操作比较简单,我们知道数组长度为n,那么可以直接插入,时间复杂度为O(1)最简单并且最容易想到的方法就是暴力求解,那他的时间复杂度是多少? 字符串数组的长度为n,字符串前缀的长度为k,那我们需要遍历数组中每一个字符串,并且对这些字符串的前k个字符进行判断,那么暴力求解的时间复杂度就是O(kn)我们想一下,查询的这个操作是否跟我们查询字典的操作有些类似的,如果你要查找以“go”为前缀的单词,是不是需要先找到首字母“g”的部分?然后在查找第二个字母“o”,那我们能不能自己也建一部字典,实现上述的查询和插入问
2023-03-07 14:28:11
542
原创 面试八股文(持续更新)
集合1、试分析HashSet和TreeSet分别如何实现去重?答:(1)HashSet的去重机制:hashCode() + equals()。底层先对对象进行hash运算得到一个hash值,通过hash值得到table表中的索引,如果此时表中索引处没有元素,则直接加入。如果此时表中索引处存在元素,那么进行 equals()比较,(equals()可以自己重写),如果比较不同,则将元素插入到该位置所对应的链表之后。如果循环比较后相同,即table表索引处所对应的链表中有相同元素,那么就不加入(2)
2022-04-17 15:58:56
1288
原创 Collections工具类
排序操作1、reverse(List):反转List元素中的顺序2、shuffle(List):对List集合元素进行随机排序3、sort(list):根据元素的自然顺序对指定List集合升序排序4、sort(list,Comparator):根据指定的Comparator产生的顺序对List集合进行排序5、swap(List,int,int):将指定list集合中的i处元素和j处元素进行交换演示操作public class Collections_ { public static
2022-04-17 11:13:15
224
原创 【剑指Offer】面试题 05.03. 翻转数位
题目给定一个32位整数 num,你可以将一个数位从0变为1。请编写一个程序,找出你能够获得的最长的一串1的长度。示例输入: num = 1775(110111011112)输出: 8输入: num = 7(01112)输出: 4提前知道的概念位运算n & (1 << i)首先:1 << i的含义是将i左移i位,如1<<2 则0001->0100那么n & (1 << i)就是计算n的第i位(从右数)解法、
2022-03-29 22:43:54
143
原创 【剑指Offer】1025 除数博弈
题目爱丽丝和鲍勃一起玩游戏,他们轮流行动。爱丽丝先手开局。最初,黑板上有一个数字 n 。在每个玩家的回合,玩家需要执行以下操作:选出任一 x,满足 0 < x < n 且 n % x == 0 。用 n - x 替换黑板上的数字 n 。如果玩家无法执行这些操作,就会输掉游戏。只有在爱丽丝在游戏中取得胜利时才返回 true 。假设两个玩家都以最佳状态参与游戏。示例示例1输入:n = 2输出:true解释:爱丽丝选择 1,鲍勃无法进行操作。示例2输入:n = 3
2022-03-29 08:59:40
119
原创 【剑指Offer】49丑数
题目我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。示例输入: n = 10输出: 12解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。提前知道的概念在解答这道题之前,我们需要知道一个概念,即丑数是由他之前的丑数计算得来例如2 = 1 * 23 = 1 * 35 = 1 * 54 = 2 * 2;6 = 2 * 3 或者 3 * 2 10 = 2 * 5一次类推,我
2022-03-27 10:46:09
649
原创 【剑指Offer】10 青蛙跳台阶问题2
题目一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例示例1输入:n = 2输出:2示例 2:输入:n = 7输出:21示例 3:输入:n = 0输出:1思想有题目可知,青蛙有两种行为方式1、跳一级台阶2、跳两级台阶并且在0、1、2级台阶的情况下跳法数已知即1、0级台阶,有一种跳法2、1级台阶,有一种跳法3
2022-03-26 08:53:18
283
原创 【剑指Offer】11旋转数组的最小数字
题目把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。给你一个可能存在 重复 元素值的数组 numbers ,它原来是一个升序排列的数组,并按上述情形进行了一次旋转。请返回旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一次旋转,该数组的最小值为 1。 注意,数组 [a[0], a[1], a[2], ..., a[n-1]] 旋转一次的结果为数组 [a[n-1], a[0], a[1], a[2], ..., a[n-2]] 。示
2022-03-24 09:51:18
417
原创 【剑指Offer】06从尾到头打印链表
题目输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。输入:head = [1,3,2]输出:[2,3,1]方法一 循环遍历通过遍历将链表中的值装入list,然后将list中的值赋值给返回数组class Solution { public int[] reversePrint(ListNode head) { List<Integer> list = new ArrayList<>(); in
2022-03-23 10:53:37
616
原创 【剑指Offer】05替换空格
题目:请实现一个函数,把字符串 s 中的每个空格替换成"%20"。例如: 输入:s = "We are happy." 输出:"We%20are%20happy."最简单的方法就是用s.replace(" ", "%20");但是这个leetcode题解里面都说面试的时候不让用这个函数,只能手写循环了以为String不支持修改,所以要重定义一个字符数组array长度是原数组长度的三倍。最差情况就是原字符串全是空格,一个空格要替换三个字符,所以长度要扩充三倍之后循环遍历原字符串,遇到
2022-03-23 10:00:05
114
原创 Java读取输入、文件输入与输出
读取输入Scanner in = new Scanner(System.in);Stirng name = in.nextLine();其中,使用nextLine方法是因为在输入行中有可能包含空格。要想读取一个单词,就调用 Stirng name = in.next();要想读取一个整数,就调用nextInt方法 String name = in.nextInt();文件输入与输出读取文件Scanner in = new Scanner(Paths.get("niyflle.txt")
2022-03-20 10:12:02
1257
原创 java中字符串比较“==”与equals()的区别
“==”使用“==”作比较基本类型:比较的是数据值是否相同引用类型:比较的是地址值是否相同对于String类型来说,因为他是引用类型,所以使用“==”号只能比较两个string的地址是否相同equals()public boolean equals(Object object):将此字符串与指定对象进行内容比较。...
2022-01-19 12:03:22
241
原创 Java封装中public、private等修饰变量的作用范围
privateprivate修饰的变量,只用在当前类中才可以使用例如student.javapublic class Student { String name; private int age; public void study() { System.out.println("正在学习"); } public void doHomeWork() { System.out.println("正在做家庭作业"
2022-01-19 09:33:39
547
原创 NavigationView报错 Activity xxx@181e5c4 does not have a NavController set on 2131230884
错误原因应该为
2021-05-19 15:35:40
214
转载 open()打开文件失败对应的各种错误码
open()打开文件失败错误码:获取错误信息实例: HANDLE hFile = 0; hFile = open(“c:\test.txt”, O_RDWR, S_IRWXU|S_IRWXG|S_IRWXO); if (-1 == hFile) { printf("Error %d: Failed to open file\n", errno); if (errno == EEXIST )
2021-03-01 18:03:39
4272
转载 select()函数详解
elect()在SOCKET编程中还是比较重要的,可是对于初学SOCKET的人来说都不太爱用select()写程序,他们只是习惯写诸如 conncet()、accept()、recv()或recvfrom()这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。可是使用select()就可以完成非阻塞(所谓非阻塞方式non-block,就是进程或线程执行此函数时不必非要等待事件的发生,一旦执行肯定返回
2021-01-21 17:47:39
3275
转载 JS数组存储(两个数组相等,一个改变,另一个跟着改变)
数组是一种引用数据类型,数组引用变量只是一个引用,数组元素和数组变量在内存里是分开存放的实际的数组元素被存储在堆(heap)内存中;数组引用变量是一个引用类型的变量,被存储在栈(stack)内存中。基本类型:基本的数据类型有:undefined,boolean,number,string,null。 基本类型存放在栈区,访问是按值访问的,就是说你可以操作保存在变量中的实际的值。引用类型:引用类型指的是对象。可以拥有属性和方法,并且我们可以修改其属性和方法。引用对象存放的方式是:在栈中存放对象变量标示名
2020-10-25 18:49:01
619
转载 理解字节填充和零比特填充
https://juejin.im/post/6844904084525301773点对点协议PPP(Point to Point Protocol)即点对点协议,运行在数据链路层,为在点对点连接上传输多协议数据包提供了一个标准方法。PPP将IP数据报封装成帧并以帧为单位串行传输。考虑这种情况:发送方向接收方传递了两个帧,但我们知道,实际上传递过去的是比特——即一堆1和0,作为接收方要怎么知道这堆1和0到底是一个还是两个或者三个甚至四个帧呢?使用定界符为了解决这个情况,我们需要在帧与帧之间使.
2020-08-14 15:53:05
23237
3
android-BluetoothLeGatt-master.rar
2020-07-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人