12人留言
电子DIY
3613
12
2023-12-19 20:58:11
基于小安派的萝莉摇摆件 
视频
https://www.bilibili.com/video/BV12C4y1Q7dD
最近迷上了萝莉摇,于是萌生了制作一个相关摆件的想法。
起初,由于微控制器单元(MCU)的内存限制
以及我误吧mjpeg编码器看成了解码器的原因,
我只实现了一个基础版本,https://www.bilibili.com/video/BV16e411k7Fc
这个版本没有视频压缩功能。
这个版本的图像分辨率相当低,仅为60x70像素。
之后周日在家研究了一天,写了一个基于RLE和帧间差分的视频压缩,
图像分辨率:150x175,RGB565
压缩前:19425000
压缩后:3296167(16.97%)
和7z、xz等无损压缩还有很大差距,但是胜在解压简单,执行快速,
只需要几行代码就可以解压缩。
github:
https://github.com/feilongfl/aipi-eyes-loli
最近没时间清理代码,比较乱...
做的过程中踩了几个坑:
1. LVGL在高速刷新图片上有些性能问题,直接使用lcd_draw_picture_blocking会好很多
2. 帧间差分是后一图像减去前一图像,反了的话图像会有残影,大概这样
因为是录了微信视频给朋友,所以截图上带了个播放按钮
这个差分算法还有一定的改进空间,比如为像素色彩加上一个阈值,过滤相似颜色,这样作为有损压缩,对于视频应该也是可以接受的。
3. 对于彩色图像,整体执行rle效果不佳,因为主体部分色彩连续相同的概率不大,但是对于背景纯色压缩效果极好,因此仅对于背景色进行rle压缩,
。
因为人物动作主要在中间部分,所以主体部分通过帧间差分后会产生较多的被删除区域,针对这些区域做rle也会有不错的效果。
目前算法针对背景色和帧间差分存储了16bit长的行程信息,后续采用varint可能会更优。
4. 这个芯片的flash是8M,但是bsp默认是4m
我找了很多资料,没找到这个芯片的具体型号(没仔细找)
翻了半天没找着这个芯片size的具体说明。
但是翻了下论坛,找到了https://bbs.ai-thinker.com/forum ... 003&highlight=flash
但是bsp默认的size是4m,于是应用下面patch修改。
这样可以存下更多视频
|
|