传感器超分辨率算法分享
在使用位置上具有关联性的一排传感器时,如果直接使用二值化算法进行定位,往往只能获得比较低的分辨率。在控制性能上并不高。但是分辨率其实不仅仅和横向分辨率有关,也可以和纵向分辨率(传感器分辨率位数)有关,下面就分享一个简单的超分辨率定位算法,常见的应用场景就是寻迹
// 可以统计一段灰度图像中的数值峰值出现位置,返回更加精确的位置
float F_Get_Image_Summit(u16 *img, u16 img_size)
{
u32 add_sum = 0, add = 0; // 带有数值的累加
u8 img_cnt = 0;
for (img_cnt = 0; img_cnt < img_size; img_cnt++)
{
add_sum += img_cnt * img;
add += img;
}
if (add == 0)
return (float)(img_size / 2);
return ((float)add_sum / (float)add);
}这里给出一段示例代码,使用的数据是一串灰度图像,通过对每个数值乘以位置系数,并且累加后求均值,即可获得一个位置相关的精确定位点。
这里使用一个简单的测试代码来实验效果
int test_dat[] = { 2,2,5,9,2,2 };
int main()
{
printf("数组返回的峰值位置为:%f", F_Get_Image_Summit(test_dat, 6));
}
可以看到返回的位置为2.59左右,符合数组内的位置值(5和9之间且偏9的位置一些)
进来学习下 {:4_174:}
页:
[1]