- 博客(129)
- 资源 (5)
- 收藏
- 关注
原创 数据处理之聚类
本文探讨了图像处理中标志点提取与编码识别的工程实现难点,重点介绍使用灰度质心法提取标志点,并通过并查集(DSU)高效实现多点聚类。针对大量点时KNN搜索效率低的问题,提出基于传递连通性的聚类方法:利用DSU动态合并相近点,循环仅更新父节点数组,最后通过路径压缩归集生成簇。该方案避免了复杂嵌套与碎片化分组,显著提升解码效率,体现了AI辅助下算法理解与工程落地的便捷性。
2026-09-23 12:08:14
290
原创 数据处理之卡尔曼滤波
高帧率测量产生海量数据,需有效处理。针对位移差分求速度、加速度时的波动,采用卡尔曼滤波(均加速模型)实时解算。其原理基于历史预测与测量值调整权重,异常时加大预测权。实践有限,后续待深化。AI工具在数据分析和可视化上高效直观,利于问题定位与算法优化。
2026-09-04 12:30:18
161
原创 opencv 与摄影测量 相机坐标系的区别
摘要:OpenCV与摄影测量中的相机坐标系与图像/像平面坐标系关系图展示了两种不同的建模视角。OpenCV采用计算机视觉惯例,以图像左上角为原点,向下为Y轴正方向;而摄影测量学以像主点为原点,向上为Y轴正方向,符合测绘领域传统。两者Z轴均沿光轴指向场景,但坐标系旋转方向存在差异,反映了不同学科对成像几何解释的特点。这导致坐标转换时需注意Y轴方向及旋转矩阵定义的差异。
2026-06-08 09:09:33
131
原创 图像数据的宽度不是4的倍数
BMP图像格式要求宽度必须是4的倍数,这是由于其文件结构决定的。在保存BMP文件或使用相关API时,实际内存分配需按4字节对齐(如1281像素宽度需补至1284字节),但显示时仍使用原始像素宽度。BMP解码器会区分逻辑宽度(显示用)和存储行宽(内存寻址用),前者保持原始尺寸,后者满足对齐要求。这种设计确保了文件格式兼容性,同时不影响显示效果。
2026-04-28 15:23:54
44
原创 像点坐标畸变逆改正
本文介绍了相机畸变校正的两种计算方法:正向畸变改正和逆向求解原始坐标。正向畸变模型采用十参数模型,包括径向畸变、偏心畸变和非平面畸变分量,通过公式直接计算改正后的坐标。逆向求解则采用迭代法,通过建立残差方程并简化雅可比矩阵,逐步逼近原始坐标值。两种方法均基于相同的畸变模型参数,但计算方向相反,逆向求解需要多次迭代以达到足够精度。该方法为相机标定和图像校正提供了实用的数值计算方案。
2026-04-17 19:15:00
65
原创 环形编码识别
本文介绍了工业摄影测量中环形编码标志点的识别方法。该编码由中心圆点和外围10段黑白圆环组成,通过二进制表示唯一ID。识别过程包括:1)定位中心圆点;2)设置比例因子确定编码区域;3)角度分割获取二进制序列。为解决旋转问题,采用循环移位取最小值作为唯一标识。文章还提到不同编码标准存在差异,推荐以AICON标准为基础的14位编码方案,可生成516个编码值,并提供了编码图像生成网站的参考链接。
2026-02-28 16:38:54
489
原创 坐标系之间的转换关系2
本文讨论了不同坐标系转换矩阵的计算方法。针对三个坐标系A、B、C,当以A为当前坐标系时,已知B和C相对于A的转换矩阵Rab和Rac,推导了B到C的转换矩阵计算方法。关键区别在于变换参考坐标系的选择:左乘表示在固定坐标系下的变换,右乘表示在局部坐标系下的变换。文中通过4×4齐次变换矩阵的运算规则,解释了左乘(绕定系)和右乘(绕动系)的本质差异,并指出其计算方式与旋转系统一致。
2026-02-12 09:16:49
464
原创 高速测量中的实时数据处理
本文探讨了100帧/秒数据采集下的实时处理方法。首先量化各处理环节耗时,包括图像采集、处理、坐标对齐、三维重建等步骤;其次采用多级队列和线程分离策略,将不同处理阶段解耦;最后针对非关键环节实施降频处理。通过时间量化指导任务分配,在保证数据完整性的同时优化处理效率,实现结果显示的低延迟。该方法平衡了处理速度与实时性需求,为中等速率场景提供了可行的实时处理方案。
2026-01-27 11:09:16
287
原创 坐标系之间得相互转换
摘要:本文讨论了坐标系转换的基本概念和矩阵表示方法。当坐标系A为当前坐标系时,坐标系B的参数矩阵Rab表示从A到B的变换。对于坐标点,该矩阵可实现B到A的坐标转换。文章介绍了使用齐次矩阵进行坐标系转换的方法,并给出了坐标系类的接口设计示例,包括点坐标和坐标系之间的转换函数。通过将坐标系视为当前坐标系下的新坐标系,可以更好地理解这些转换函数的作用机制。
2025-12-05 15:35:11
311
原创 机械臂与相机的手眼标定
摘要:本文介绍了基于AX=XB手眼标定方程的相机与机械臂末端标定方法。针对库卡机械臂固定轴ZYX系统,提出通过相对运动变换求解位姿关系,即A=A₂⁻¹×A₁表示机械臂末端相对变换,B=B₂×B₁⁻¹表示相机观测相对变换。关键实现要点包括:1)数据组织需采用相邻位姿的相对变换;2)运动过程需包含足够的角度变化;3)OpenCV函数需输入绝对位姿。实验表明直接标定精度约1-2mm,采用空间位置补偿可将精度提升至0.2mm。(149字)
2025-10-31 11:35:34
568
原创 mfc工程中进度条样式
MFC开发中进度条样式不一致的解决方法:在stdafx.h文件中,默认的Common Controls版本6.0加载代码被_UNICODE宏条件编译限制。若使用多字节字符集(MBCS),只需注释掉#ifdef_UNICODE和#endif两行代码,使manifest依赖项在非Unicode项目中也生效,即可解决运行时控件样式与资源编辑器显示不一致的问题。这是最简单直接的修改方式,无需改动其他代码。
2025-10-17 09:43:09
249
原创 库卡机械臂的转角系统以及固定轴和欧拉角的计算方式
同一个旋转矩阵计算不同的转角系统的旋转角时,计算得到的欧拉角Rx Ry Rz 在数值上与固定轴的Rz Ry Rx对应的数值相同。当前坐标系为基坐标系时,abc为沿着基坐标系固定轴旋转的角度,分别对应为Rz Ry Rx。固定轴XYZ = 欧拉角ZYX R=Rz⋅Ry⋅Rx。欧拉角XYZ = 固定轴ZYX R=Rx⋅Ry⋅Rz。库卡机械臂的转角为abc。
2025-10-10 15:14:36
364
原创 CTreeCtrl 设置图标
但是注意有个坑,虽然图像位数没有限制,创建图像列表时,也有ILC_COLOR32类型可供选择,但是软件实际只能显示出24位效果。(也可能有其他原因导致,但是目前没找到原因)使用CTreeCtrl 进行设置导航视图时,有时候需要设置图标,一般使用如下代码。如果图标资源是PNG格式,也可以使用。如果使用了32位图像,效果看运气。所以最好添加时,直接使用24位。mfc界面修改真难受。
2025-02-05 16:29:28
323
原创 std::vector 删除指定位置元素
如果根据条件找到数组中一个数值,需要进行删除,无法直接对it进行删除,需要改为下面这个操作。使用的函数还是erase,但是需要有位置的索引,所以换成这种方式进行遍历,才可以。经常使用std::vector的都知道,我一般循环遍历时,都这样使用。
2024-10-11 17:06:39
1092
1
原创 C++11 字符串类std::string 使用
用法演示涵盖各种字符串常编程应用包括检查文件扩展名称、截取,查找字符串、拼接字符串、把这种其它类型数据转换为字符串std::tostring这个方法是万能的。
2024-02-02 14:35:11
908
原创 CString Fromat 按照指定位数格式化整型数据
示例,将整型变量以9位数字进行格式化,比如 1 -> 000000001strItem1.Format("%09i",nNum);
2022-01-06 17:33:40
400
原创 十进制转十六进制
输入一个十进制整数,将其转换成十六进制数输出,并提取每一字节所表示的十六进制数值逐一输出。测试数据如下:分析:从控制台输入一个十进制整数,将其转换成十六进制数输出,接着提取其4个字节。用到按位与运算符“&”、右移位运算符“>>”。ps:“0x”是十六进制数的前缀。位(bit):度量数据的最小单位,表示一位二进制信息;字节(byte):由八位二进制数字组成(1 byte = 8 bit)。1个字节表示2位十六进制数。新建一个Visual C 控制台程序#inclu.
2021-12-14 18:16:22
2760
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅