首页 > 技术支持 > 应用与案例 > 正文
使用RA8889芯片实现双线性插值法图片缩放 作者:Harchy   发表日期:2022-11-24   来源:菱致电子   浏览:

本文介绍如何使用RAIO控制芯片(RA8889等)对图片进行缩放,其中介绍两种方法:
(1)隔行插值法
(2)双线性插值法

第一种方法基本操作方式是隔一行(或者隔一列)复制或者直接丢弃,这种方式在进行缩小时效果尚可,运行速度也很快,但在放大时,新行(或者新列)是取值相邻行(或者相邻列),因此放大后显示效果会有较明显的锯齿。

第二种方法,则是相邻行(或者相邻列)按比例取值,算法在此就不展开说明,大家可自行在网上搜索研究。在缩小图片时“双线性插值法”和“隔行插值法”效果相近,下图进行对比:


但在放大图片时,“双线性插值法”的新行(或者新列)是通过前后相邻行(或者相邻列)进行相关运算,从而像素色彩就会产生过渡效果,因此锯齿问题可得到不错的改善,下图进行对比:


以上是实际显示效果说明,那么如何实现?在瑞佑的液晶控制芯片比如RA8889上,我们可以很容易做到这些。这里分别提供两个函数:
void Pic_Resize(unsigned long src_Addr,unsigned int src_Width,unsigned int src_Height,unsigned int src_x,unsigned int src_y,unsigned long des_Addr,unsigned int des_Width,unsigned int des_Height,unsigned int des_x,unsigned int des_y);

void Pic_Resize_Bilinear(unsigned long src_Addr,unsigned int src_Width,unsigned int src_Height,unsigned int src_x,unsigned int src_y,unsigned long des_Addr,unsigned int des_Width,unsigned int des_Height,unsigned int des_x,unsigned int des_y);
图片要先放到显存中,然后MCU从显存读取像素点的颜色,进行相应的运算后再将结果写进显存,指定好源地址和目的地址,以及坐标、图片宽高。再简单举几个放大的效果:




以上两张原图在液晶屏左下角,都是50*30点的大小,这里使用“双线性插值法”将它们分别放大到800*480的大小,可以看出图片均匀过渡效果很好,并且不会出现锯齿问题。

但使用该方法最大的缺点就是会消耗MCU的资源,实现方法是先读取像素值然后再进行运算,再将运算结果写回显存,故速度较慢。


客户可以根据实际需求选用适当的方法进行缩放。如需更详细代码,请联络我司销售人员获取技术支持。



分享到:

相关热词搜索:RA8889 图片缩放 双线性插值法

上一篇:RA8889开发板如何通过外部烧录器进行更新FLASH内容
下一篇:如何验证MCU和RA8889等芯片的通信