Excel使用笔记

本文介绍了如何利用配置文件管理设备参数,特别是相机内参。详细阐述了金字塔分配特征点的方法,用于优化图像处理。此外,还探讨了批量文件命名的策略,确保文件按照时间戳正确排序。最后,讨论了如何在Excel中合并并求和数据,删除重复项,以及在处理过程中遇到的数字排序和重命名问题。
摘要由CSDN通过智能技术生成

配置文件

*.yaml
每次对应不同的相机或者其他设备,而导致的参数不同,如相机内参等。为了防止每次都要输入到程序中,可将参数整合到配置文件中去,每次修改对应配置文件即可。
配置文件的开头为 %YAML:1.0,注意需要一个字符的空格在%前,否则CLion会报错。


金字塔分配特征点

金字塔的设计是为了仿真人眼近大远小,采样中的上、下分别对应图片尺寸的扩大和缩小。因此下采样金字塔就是图像越来越小(对应于原图来说)。
参考https://blog.csdn.net/xbcreal/article/details/52629465

通过不同层的面积关系来分配特征点,面积越小,分配的越少。
假设第0层图像的宽为 W W W ,长为 L L L,缩放因子为 s ( 0 < s < 1 ) s(0<s<1) s(0<s<1)整个金字的面积为
S = L × W × [ s 2 ] 0 + L × W × [ s 2 ] 1 + ⋯ + L × W × [ s 2 ] n − 1 = L × W ⏟ C × 1 − [ s 2 ] n 1 − [ s 2 ] = C 1 − [ s 2 ] n 1 − [ s 2 ] S=L\times W\times [s^2]^0+L\times W\times [s^2]^1+\cdots+ L\times W\times [s^2]^{n-1}\\=\underbrace{L\times W}_C\times\frac{1-[s^2]^n}{1-[s^2]}=C\frac{1-[s^2]^n}{1-[s^2]} S=L×W×[s2]0+L×W×[s2]1++L×W×[s2]n1=C L×W×1[s2]1[s2]n=C1[s2]1[s2]n
那么单位面积特征点数量为
N a v g = N C = N C 1 − [ s 2 ] n 1 − [ s 2 ] = N { 1 − [ s 2 ] } C { 1 − [ s 2 ] n } Navg=\frac{N}{C}=\frac{N}{C\frac{1-[s^2]^n}{1-[s^2]}}=\frac{N\{1-[s^2]\}}{C\{1-[s^2]^n\}} Navg=CN=C1[s2]1[s2]nN=C{1[s2]n}N{1[s2]}
那么第0层应分配的特征点数量为
N 0 = N { 1 − [ s 2 ] } { 1 − [ s 2 ] n } ⋅ [ s 2 ] 0 N_0=\frac{N\{1-[s^2]\}}{\{1-[s^2]^n\}}\cdot[s^2]^0 N0={1[s2]n}N{1[s2]}[s2]0
则第 α \alpha α 层应该分配的特征点数量为
N α = N { 1 − [ s 2 ] } { 1 − [ s 2 ] n } ⋅ [ s 2 ] α N_\alpha=\frac{N\{1-[s^2]\}}{\{1-[s^2]^n\}}\cdot[s^2]^\alpha Nα={1[s2]n}N{1[s2]}[s2]α
但实际上,opencv里的代码不是按照面积算的,是按照边长来算的。将上述公式里的 [ s 2 ] [s^2] [s2] 换为 s s s


数据名称对齐

批量修改文件名称(文件名称顺序对应时间戳的顺序)
给文件命名,数字前字符不宜太长,用循环给文件用数字命名时,最好最优如下命名0000,0001,0002,0003,避免0,1,2,3,上述两者的区别是前者正常排序,后者排序为字典序0,1,10,11,..,2,20,21...。假如按照后者排序,解决办法为将文件中的数字筛选出来后再排序。
Excel:F5可以快速定位 选中该列之后,Ctrl+D将空白进行填充 Ctrl+Shift+下方向键可以选中全列,
用Window和Excel:

  • 图片和对应时间戳文件time.txt

  • 将图片名称按列顺序导入到Excel中
    打开Dos,然后输入指令dir IMAGE_DIR_PATH /b > EXCEL_FILE_PATH,如dir F:\image_Ms_0 /b > F:\image_Ms_0.csv
    pic_name

  • 将时间戳文件time.txt导入Excel中, 记得设置单元格格式-> 数字->数值->小数位数 n改为与时间戳对应的小数位 不要省略该有的0。如下图,将修改后的复制到B列。再设置小数位,从B列变成C列,使用公式后,还是会出现E列的问题,就是在ren语句中显示时,自动省略小数后0的位。
    renren
    面对这个问题,由于*.txt文本上是不会显示此问题的,又可以将CD列合为一起,因此需要用*.txt过度一下。
    将CD列复制到新建文本上,Ctrl+A全选之后,Ctrl+H替换,Ctrl+C复制来将CD两列中间的空格替换成没有空格,即可完成。完成后复制到上图的空余列,重写ren语句。
    txtfuzhu
    renrenren
    将G列整列处理完后,单独复制到新建文本文件中rename.txt,将其后缀改为.bat,将其置于对应文件夹内,双击运行即可完成批量对应重命名。(ren是Dos对应的修改名称指令)

对于重命名时,没有采纳开头意见,如下命名,分别提取出数值后,排序方式不对。BC列的公式为TEXT()内的内容。
wrongname
可以通过对C列的排序将A列对应过来。
ordered


合并求和数据

  1. 姓名列复制粘贴到新的一列(为什么复制姓名,是要找姓名中重复的一项)
  2. 假设复制粘贴后的姓名列是H列,选中H列,在数据选项卡中,选择数据工具中的删除重复值,来删除重复姓名
  3. H列后的下一列I列使用公式=SUMIF(原姓名列,后姓名,原姓名列对应合并求和的数据)。(公式第一个参数是筛选范围,第二个是比较内容,第三个是范围对应的数值)
  4. 将公式求得I列数据重新复制粘贴到下一列J列(是为了下一步删除原姓名中重复项时,不修改公式求得的数据),因此粘贴选用粘贴
  5. 可以将I列整列删除。
  6. 选中原表所有部分(不包含H列J列),在数据选项卡中,选择数据工具中的删除重复值,来删除重复姓名及其对应的所有重复信息
  7. J列数据复制到原表中姓名对应的数据一列
  8. 删除H列 J列即可

对于公式来说,如果使用的不是姓名来筛选,而是身份证号等,需要将公式中的后姓名加上&"*",是因为该公式是通过比较前15位,来计算的。加入符号后,可以将其改变为文本格式进行比较。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值