找回密码
 立即注册
查看: 668|回复: 2

传感器超分辨率算法分享

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:458
  • 最近打卡:2025-05-01 07:48:22
已绑定手机
已实名认证

110

主题

2219

回帖

5452

积分

版主

积分
5452
发表于 2024-5-22 11:41:47 | 显示全部楼层 |阅读模式
在使用位置上具有关联性的一排传感器时,如果直接使用二值化算法进行定位,往往只能获得比较低的分辨率。在控制性能上并不高。
但是分辨率其实不仅仅和横向分辨率有关,也可以和纵向分辨率(传感器分辨率位数)有关,下面就分享一个简单的超分辨率定位算法,常见的应用场景就是寻迹
  1. // 可以统计一段灰度图像中的数值峰值出现位置,返回更加精确的位置
  2. float F_Get_Image_Summit(u16 *img, u16 img_size)
  3. {
  4.         u32 add_sum = 0, add = 0; // 带有数值的累加
  5.         u8 img_cnt = 0;
  6.         for (img_cnt = 0; img_cnt < img_size; img_cnt++)
  7.         {
  8.                 add_sum += img_cnt * img[img_cnt];
  9.                 add += img[img_cnt];
  10.         }
  11.         if (add == 0)
  12.                 return (float)(img_size / 2);
  13.         return ((float)add_sum / (float)add);
  14. }
复制代码
这里给出一段示例代码,使用的数据是一串灰度图像,通过对每个数值乘以位置系数,并且累加后求均值,即可获得一个位置相关的精确定位点。
这里使用一个简单的测试代码来实验效果
  1. int test_dat[] = { 2,2,5,9,2,2 };
  2. int main()
  3. {
  4.         printf("数组返回的峰值位置为:%f", F_Get_Image_Summit(test_dat, 6));
  5. }
复制代码
截图202405221140491279.jpg

可以看到返回的位置为2.59左右,符合数组内的位置值(5和9之间且偏9的位置一些)
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:422
  • 最近打卡:2025-05-01 09:54:52
已绑定手机

19

主题

3190

回帖

4866

积分

论坛元老

积分
4866
发表于 2024-5-22 12:34:22 | 显示全部楼层
进来学习下
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:518
  • 最近打卡:2025-05-01 05:52:49
已绑定手机

46

主题

1694

回帖

2540

积分

金牌会员

积分
2540
发表于 2024-5-22 12:54:55 | 显示全部楼层
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 02:17 , Processed in 0.160471 second(s), 57 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表