[活动专区] 【AT-START-F435测评】DVP+I2C 7725摄像头+90640热成像双光融合

[复制链接]
3364|17
 楼主| goodjob 发表于 2023-1-7 16:07 | 显示全部楼层 |阅读模式
本帖最后由 goodjob 于 2023-1-7 16:16 编辑

拿到AT_START435开发板以后,先测试了硬件I2C读取90640热成像(见评测贴【AT-START-F435测评】硬件I2C读取MLX90640热成像https://bbs.21ic.com/icview-3276692-1-1.html)。现在接下来测试下DVP性能。
热成像有一个缺点,在图像中能看到热源,但如果热源周围没有特别的温度标志物的话,很难精确看出热源的位置。所以使用一个可见光摄像头获取图像,再和热成像叠加,就能突出热源位置,方便定位。此时AT32F435 DVP功能派上用场了,可以获取摄像头图像,再和I2C获取的热成像数据进行图像叠加,一台双光融合热成像仪就完成了。
我使用的是OV7725摄像头,输出为640x480,显示屏是ST7789的,分辨率320*240,直接使用大SRAM双帧缓冲,320*240*2一帧,双帧正好300K。剩下的212K用于缓冲32*24的热成像数据和图像放大计算绰绰有余。得益于288MHz的高主频,在进行8倍图像线性放大和双光融合图像计算以后,仍可实现较高的帧率。
由于测试板的摄像头和热成像传感器位置错开了,成像叠加有较大位差,只做示意。实际使用中,可以通过修改DVP截取窗口的位置来进行校正。
7725_90640.jpg

AT32的DVP例程很详细,稍微修改直接可用。
这里赞一下DVP的图像截取功能,可以从收到的摄像头图像中直接截取指定大小的图像,非常方便:
  1. //DVP图像截取
  2. dvp_window_crop_enable(TRUE);
  3. dvp_window_crop_set(100, 100, 320, 240, 2);
OV7725使用的正点原子的驱动,直接改IO软件驱动SCCB。


先初始化和配置OV7725,然后配置DVP。此处使用了DMA双帧缓冲。官方的驱动代码很方便,如果不想使用双帧,直接把第二项(uint32_t)&GRAM[1][0][0]改成0即可。
  1. dvp_dma_init((uint32_t)&GRAM[0][0][0],(uint32_t)&GRAM[1][0][0], 38400);

  1. void DVP_run(void)
  2. {
  3.         if(OV7725_Init()!=0)return;
  4.         
  5.         //注意VGA输出模式需要配合DVP的裁剪功能!在dvp_config()中
  6. OV7725_Window_Set(640,480,1);//VGA模式输出
  7.         
  8.         
  9.         //OV7725_Window_Set(320,240,0);//QVGA模式输出        
  10.         OV7725_Contrast(0);//-4到+4
  11.         
  12.         //OV7725功能设置
  13. //白平衡设置
  14. //0:自动模式
  15. //1:晴天
  16. //2,多云
  17. //3,办公室
  18. //4,家里
  19. //5,夜晚
  20.         OV7725_Light_Mode(0);
  21.         
  22.         OV7725_Brightness(0);//亮度-4到+4
  23.         
  24.         //特效设置
  25. //0:普通模式   
  26. //1,负片
  27. //2,黑白   
  28. //3,偏红色
  29. //4,偏绿色
  30. //5,偏蓝色
  31. //6,复古            
  32. OV7725_Special_Effects(0);
  33.         
  34.         
  35.   dvp_config();

  36.   dvp_dma_init((uint32_t)&GRAM[0][0][0],(uint32_t)&GRAM[1][0][0], 38400);

  37.   delay_ms(100);

  38.   dvp_start();
  39. }
因图像算法涉及本人项目,分享的代码中不含相关内容,仅提供OV7725及DVP初始化相关代码。需要按下图将官方库文件放到一起才能使用。
微信截图_20230105221222.png
AT_START_435_NOUI_7725.rar (9.64 MB, 下载次数: 25)

评论

很好的资源,学习啦~~  发表于 2023-9-17 08:32
everyrobin 发表于 2023-1-9 12:22 | 显示全部楼层
MLX90640的价格不便宜呢。
wengh2016 发表于 2023-1-9 15:24 | 显示全部楼层
是否能够实现测温的功能?              
rosemoore 发表于 2023-1-9 16:34 | 显示全部楼层
比较先进的设计 ,综合性非常高。
sheflynn 发表于 2023-1-9 18:05 | 显示全部楼层
这个设计的有点高端了。              
 楼主| goodjob 发表于 2023-1-9 19:14 | 显示全部楼层
wengh2016 发表于 2023-1-9 15:24
是否能够实现测温的功能?

可以测温啊,-40到300度测量范围。不过精度不是特别高,可能有1到2度的误差
 楼主| goodjob 发表于 2023-1-9 19:24 | 显示全部楼层
everyrobin 发表于 2023-1-9 12:22
MLX90640的价格不便宜呢。

热成像现在便宜很多了啊,我记得十多年前都是好几万一台。。。
abotomson 发表于 2023-1-10 19:09 | 显示全部楼层
可以做红外图像吗?              
 楼主| goodjob 发表于 2023-1-11 00:25 | 显示全部楼层
abotomson 发表于 2023-1-10 19:09
可以做红外图像吗?

可以的,我前面那个测试I2C和MLX90640的评测帖里面就是纯红外热成像啊
bestwell 发表于 2023-2-2 14:35 | 显示全部楼层
这个图像叠加速度怎么样              
kkzz 发表于 2023-2-2 14:44 | 显示全部楼层
这个可以通过红外测试实现的吗              
everyrobin 发表于 2023-2-2 16:10 | 显示全部楼层
可以通过k210实现热成像的功能。
qiufengsd 发表于 2023-2-4 09:41 | 显示全部楼层
90640热成像的价格太贵了。              
pl202 发表于 2023-2-4 11:04 | 显示全部楼层
摄像头的图片大小和90640热成像大小不一样的吧。
pl202 发表于 2023-2-4 14:01 | 显示全部楼层
这个数据是怎么实现融合的              
 楼主| goodjob 发表于 2023-2-5 11:31 | 显示全部楼层
pl202 发表于 2023-2-4 11:04
摄像头的图片大小和90640热成像大小不一样的吧。

你可以找一个图像大小尽量接近的摄像头啊。。。摄像头可以通过换不同焦距的镜头调节图像大小,也可以用OV2640带的ISP进行缩放。另外热成像图像是放大几倍的,可以通过调整放大倍率来适配摄像头图像啊
Bowclad 发表于 2023-2-7 18:37 | 显示全部楼层
kkzz 发表于 2023-2-2 14:44
这个可以通过红外测试实现的吗

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

本版积分规则

9

主题

58

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部