关于ARM9视觉 有兴趣的同志们可以进来听听我的心声

tsy1988331 2011-06-18 03:05:10
历时数月 我完成了我坑爹的车载摄像头视觉的硬件和裸机程序 作为一个倒霉的实践者 我想谈谈我的感受 我的硬件部分是由我购买的核心板和我自己腐蚀的双层电机 舵机驱动板组成 电路是没有问题的 摄像头(MINI2440配套的那个)是架设在舵机上面 板子放在一小车车体上 之前看过几篇ARM视觉的论文 我当时的目标就是让摄像头可以扫出一封闭物体的边缘 然后和舵机得PWM信号和小车电机的转速信号做出一套数学联系 让舵机转动直到摄像头的中心点横坐标与该边缘物体的中心横坐标重合 然后电机差速让摄像头的Y线与车体中心线重合 之后电机前后推进 让摄像头的Y线再与物体中心Y坐标重合
这是最初步的构想
下面说实验结果

先说说我的CLK设置 因为事先分析过各类CLK(抱歉我说的这么直白)的关系 实际我要用到唯一需要改变的CLK部分(摄像头部分和友善之臂配套的裸机CAMCLK一致)只有舵机部分 因为要把基础时间弄到US级 所以改了MPLL 48M
/*upll*/ChangeUPllValue(56,2,1);//UPLL 96M
/*mpll*/ChangeMPllValue(56,2,2);//MPLL 48M
rCLKDIVN=1<<3; // UCLK=UPLL/2=48M HCLK=MPLL=PCLK=FCLK=48M
rTCFG0=(0x2f<<8)|(0x2f);// CLK FOR TIMER input=48M/(47+1)/100=10K HZ T=0.1US
rTCFG1=0;//all timer clk=input clk =5K T=0.2us
因为该改变并不影响CAMCLK 摄像头仍可以正常工作
好了 先不说CLK 因为CAMCLK 和 PWM的CLK都在我的容忍范围之内 每帧的扫描速度和舵机的反应速度都在我的预定之内
心情不太好 直接说问题吧 ARM9配套的摄像头是可以直接提取出RGB数据 光到色转换是已经完成不需在程序设置的 那么我是把摄像头的RGB地址和240*320液晶屏的地址做了重叠的 也就是说我所需要的数据范围压缩为240*320*16(RGB565)一帧 那么我首先做的并不是划分三基色域 而是只捕捉一帧图像的最亮点 因为三基色的最大值都为白 最小值都为0 所以我第一次实验就是将灯都关掉 然后将打火机在摄像头前点亮 然后看舵机是否能带摄像头转到与火焰最亮点的行值重合 因为火焰的颜色在漆黑背景下最接近三基色最大值 所以你只需要将SDRAM中转存的RGB按照液晶屏的地址顺序读出 每读一个与前一个数据进行对比 记录下一帧数据里最大的一个RGB值 那么该值肯定就是火焰最亮点 因为我只有一个舵机 摄像头架设在舵机上面 也就是摄像头只能水平转动 所以可以将行的像素点数据 和 舵机的转角和PWM控制转角的信号 做一个量化 舵机是0到180度 像素点是1到240号 PWM是1.5MS到2.5MS 将这三者进行一个量化 比如我火焰最亮点在地Y行第X个(240*320) 那么我只用保留X 也就是1到240个像素点这范围内的第X个 180度/240P 每个PIXEL对应舵机的0.75度 又因为舵机转角和PWM 2000US对应是 每度2000US/180度 所以可以算出每PIXEL对应PWM多少US 设这个值为Z 比如火焰亮点在X 那么只需用XZ就可以控制舵机带动摄像头转动 直到摄像头的中心点240/120与X点重合(有误差 且实际不能用0到180度做量化)

问题就出在每一帧数据的逐点比对找出最大值得时间上 我的摄像头是可以转动到火焰X方向 但是这仅仅是找出每帧数据的最大值的时间就超过了我的预期 还不包括色域判断这些更复杂的计算 从SDRAM里逐点比对一帧数据的最大值(同等RGB保留第一个采集到的)我没有计算过要花多少时间 但是至少是3到4秒 肉眼都能完全分辨出来帧间隔了 我承认我的主频不在最大频率 但是我的第一步实验仅仅是建立在找出一帧最大值一个 而且是裸奔都耗去这么长时间 我实在不知道写那些论文跑操作系统的哥们儿找出一帧数据的边缘 他们是否去算过这个计算量所需要的时间 更不用说还建立个环境判断公式了 320*240都花了那么长时间 我现在才发现我中套了 当然也不排除我没估计到的地方 有兴趣的朋友可以联系QQ774937617 讨论源码和电路图修正
...全文
184 1 打赏 收藏 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
actionwill 2011-06-22
  • 打赏
  • 举报
回复
光一个ARM9是搞不定视觉的事的吧
源码链接: https://pan.quark.cn/s/a376b5a3a265 在 Windows 操作系统中配置 GPU 的 CUDA 开发环境是一项具有高度必要性的工作,这对 GPU 计算效能与深度学习算法的达成具有决定性的作用。本文将详尽阐述在 Windows 系统中配置 CUDA 开发环境的操作流程,并且处理一些可能遭遇的挑战。 一、版本匹配的关键性 在配置 CUDA 开发环境之前,必须检查项目所应用的 TensorFlow 版本,并明晰 TensorFlow、Python、CUDA 以及 cuDNN 各组件之间的适配关系。这一环节极为关键,因为不同版本间存在一定的兼容性障碍。倘若版本不一致,可能会导致配置失败或引发其他并发症。 二、获取并配置 CUDA 在确认所需安装的版本之后,可从 NVIDIA 的官方网站获取对应的 CUDA 版本。下载完毕后,依照安装指引进行配置。在配置过程中,有几个重点环节需要留意: 1. CUDA 需要借助 C++ 编译器的支持,在 Windows 平台上必须安装 Visual Studio。若设备未预装 Visual Studio,在配置 CUDA 时会提示选择安装哪个版本。 2. CUDA 的路径应保持默认,以便于后续环境变量的配置。 三、配置完成后的验证 配置结束后,需要确认是否配置成功。主要运用 CUDA 自带的 deviceQuery.exe 和 bandwidthTest.exe 两个工具: 1. 通过 win+R 启动 cmd,切换至安装目录下的 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\extra...
文末附数据集可视化效果图。 【数据集概况】 · 检测类别(中文):[香烟(Cigarette)] · 训练集:636 张 · 验证集:182 张 · 测试集:91 张 · 总计:909 张 该数据集聚焦于多类人物在不同环境下的香烟使用行为,涵盖室内、室外、公共与私密等多种真实生活场景,具有高度的现实应用价值,可为公共场所吸烟行为识别、健康警示系统及社会行为研究提供高质量视觉样本支持。... 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 100 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.5645** mAP50-95 | 0.3009 Precision | 0.7024 Recall | 0.5510 train/box_loss | 1.1101 train/cls_loss | 0.6001 val/box_loss | 2.0088 val/cls_loss | 1.6177 【训练过程分析】 100 轮训练后 mAP50 仅 0.5645,模型收敛不充分。Loss 曲线前期下降后进入平台期,mAP 提升缓慢。mAP50-95 为 0.3009,定位精度同样偏低。 【模型性能评估】 Precision 0.7024、Recall 0.5510,精度高于召回,存在一定漏检。 【预测效果展示】 验证集预测效果偏弱,漏检和误检较多,小目标和边缘场景的检出能力不足。 【改进建议】 1. 丰富场景多样性:补充不同光照、背景和遮挡条件下的样本。 2. 提升输入分辨率:640 对定位精度支撑不足,尝试 800 或 1024 改善 mAP50-95。...

1,076

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧