目录

一、问题描述

二、算法原理

双线性内插法

双线性内插法参数计算

三、算法效果

四、算法代码


一、问题描述

我们在处理图像的时候常常会遇到图像放大的问题,那么选择什么样的图像放大算法,能有什么样的效果,就是我们比较关心的问题了。最近(其实是很久以前),我根据网上大神们,关于双线性内插算法的资料,总结了一个用于图像缩放的算法的代码,我把它总结在博客里,希望能够方便自己和大家随时的使用。

二、算法原理

首先要介绍一下双线性内插算法的基本原理,这部分转载自 GoldBeetle 大佬的博客

https://www.cnblogs.com/GoldBeetle/archive/2018/09/17/9662871.html

双线性内插法

v(x,y) = ax + by + cxy + d

双线性内插法参数计算

已知Q11, Q12, Q21, Q22,要插值的点为P点,首先在x轴上,对R1,R2两个点进行插值

然后根据R1和R2对P点进行插值

化简得

对于边界值的处理,若x1 < 0 ,则直接令f(Q11), f(Q12) = 0

三、算法效果

这个算法期初被我用在了Qt的图像处理中,后来被我移植到了ESP8266的LCD屏幕驱动中,还是比较好用的,下面我先展示一下再Qt中放大的效果。

基于此算法,我为了方便只使用了灰度值进行数据处理,效果就是如图所示,当然也可以分为多个通道处理彩色图像。

后来我又修改此算法处理二值图像,用在ESP8266中作为文字的放大函数,使用小字库就可以在LCD屏幕上显示任意大的字体,也是非常方便的,节省了超大字体的字符所占用的空间。

四、算法代码

接下来我将代码展示一下,

输入参数分别是 输入图像的数组指针,输入图像的大小,输出图像指针,输出图像大小。

int offset_x=0,offset_y=0;#define gray_to_RGB(gray) qRgb(gray,gray,gray)
void Bilinear(uint8_t* inpBmpBuf, int src_x,int src_y,uint8_t* outpBmpBuf,int dstWidth,int dstHeight)
{double lx=1,ly=1;//缩小倍数if(src_x/dstWidth>1) {lx=src_x/(double)dstWidth;} else{lx=src_x/(double)dstWidth;}if(src_y/dstHeight>1){ly=src_y/(double)dstHeight;}else{ly=src_y/(double)dstHeight;}int x1, x2, y1, y2, Fq11, Fq12, Fq21, Fq22;double x, y, r1, Fr1, Fr2, Fp;for (int i = 0; i < dstHeight; ++i){for (int j = 0; j < dstWidth; ++j){x = lx*j; // 原图像坐标y = ly*i;// 四个坐标值x1 = floor(x); x2 = x1 + 1;// 取整ceil向上,floor向下y1 = floor(y); y2 = y1 + 1;// 四个坐标对应的灰度值Fq11 = inpBmpBuf[x1*src_y+y1] ;Fq12 = inpBmpBuf[x1*src_y+y2];Fq21 = inpBmpBuf[x2*src_y+y1];Fq22 = inpBmpBuf[x2*src_y+y2];// x方向插值和y方向插值Fr1 = 0; Fr2 = 0;Fr1 = (x2 - x) / (x2 - x1)*Fq11 + (x - x1) / (x2 - x1)*Fq21;Fr2 = (x2 - x) / (x2 - x1)*Fq12 + (x - x1) / (x2 - x1)*Fq22;Fp = (y2 - y) / (y2 - y1)*Fr1 + (y - y1) / (y2 - y1)*Fr2;// 新图像灰度值赋值if (Fp >= 0 && Fp <= 255){outpBmpBuf[i+j*dstHeight]=round(Fp); // 新图像}}}//将计算得到的像素值放入图像画布for(int i=0;i<dstWidth && i<Show_image.size().width();i++){for(int j=0;j<dstHeight && j<Show_image.size().height();j++){Show_image.setPixel(i,j,gray_to_RGB(outpBmpBuf[(i+offset_x)*dstHeight+(j+offset_y)]));}}}

今天的总结就到这里啦,欢迎大家给我点赞关注、与我交流讨论呀。O(∩_∩)O哈哈~

双线性内插法--图像缩放算法相关推荐

  1. [图像]图像缩放算法-双线性内插法

    原创文章,欢迎转载.转载请注明:转载自 祥的博客 原文链接:http://blog.csdn.net/humanking7/article/details/45014879 简介: 图像缩放算法–双线 ...

  2. 几个图像缩放算法的比较

    几个图像缩放算法的比较 前段时间由于项目的需求,需要实现图像的缩放功能,期间查找了不少关于图像缩放算法的资料,现把自己的心得整理一下. 由于研究生期间没有选修过图像处理方面的课程,所以对图像缩放的原理 ...

  3. 图像缩放算法(中篇)

    图像缩放算法(中篇) ================================= 转载别人的,但是这篇文章写得确实太好了,所以想分享出来. 原文地址:http://blog.chinaunix ...

  4. 图形图像处理 —— 图像缩放算法

    转自:http://blog.chinaunix.net/space.php?uid=22915173&do=blog&id=2185545 摘要:首先给出一个基本的图像缩放算法,然后 ...

  5. 计算机视觉-图像缩放算法-cuda实现

    一.CUDA CUDA是显卡厂商NVIDIA(英伟达)推出的运算平台,能够将数据数据复制到GPU,在GPU中进行计算,然后再返回给CPU端.CUDA将GPU称为设备侧或者Device,将CPU称为Ho ...

  6. 图像缩放算法及速度优化

    原文来自:博客园 小欣子 图像缩放算法及速度优化--(一)最近邻插值 图像缩放算法及速度优化--(二)双线性插值 --------------------以下为原文------------------ ...

  7. 基于FPGA 的图像缩放算法设计

    介绍双线性插值算法来实现图像缩放,FPGA 硬件实现方法,包括图像数据缓冲单元.插值系数生成单元以及插值计算单元等. 图像是人类感知世界的视觉基础,是人类获取信息.表达信息的重要手段.现在研究较多的是 ...

  8. 图像缩放算法(下篇)

    图像缩放算法(下篇) ================================= 转载别人的,但是这篇文章写得确实太好了,所以想分享出来. 原文地址:http://blog.chinaunix ...

  9. 图像缩放算法_opencv缩放算法

    1.opencv插值介绍 opencv提供resize函数用来做图像缩放,该函数有6个参数: (1)输入图像,Mat型 (2)输出图像,Mat型 (3)输出图像大小,可用cv::Size(out_im ...

最新文章

  1. 一文看懂机器学习中的常用损失函数
  2. 还没掌握Linux文件权限与目录配置命令?就这还不点进来看看干货
  3. eclipse 搭建Android 开发环境(ADT安装和sdk下载,选择)
  4. 技术和赚钱真的冲突吗?
  5. 使用kubeadm安装kubernetes高可用集群
  6. 南加州大学等开源元学习研究库learn2learn
  7. iOS 下如果存在UIScrollerView 使用UIScreenEdgePanGestureRecognizer实现侧滑效果失效的问题...
  8. hashmap删除指定key_Java集合之HashMap源码解析(JDK8)
  9. php 安装redis 扩展
  10. Atitit if else 选择决策流程ast对比 sql java 表达式类型 binaryExpression hase left and rit expr 目录 1.1. Sql 1
  11. 自动驾驶 6-1: 横向车辆控制介绍 Lesson 1: Introduction to Lateral Vehicle Control
  12. Comsol With Matlab启动失败解决
  13. 苹果数据线突然不能充电了_苹果8p突然不能充电了,充不进电!
  14. vscode使用注意事项
  15. 考研数学 之 汤家凤老师来校讲座摘记 (拉格朗日定理等干货 )
  16. 2022年新消费趋势洞察(护肤篇):时下大热的美妆成分全面复盘
  17. rsa算法php,简化版(小素数版)RSA算法的PHP实现
  18. 无线网络优化和软件测试哪个好,你了解你的网络吗——7款网络测试工具简介,帮你优化家庭组网...
  19. 创客短视频拓客软件一天能增长300-1000个活跃粉
  20. Springboot疫情防控学生自助申报系统 毕业设计-附源码260839

热门文章

  1. iOS Matter 操作证书签发方案
  2. java---内存分析
  3. B/S架构的EMR系统
  4. ANSYS Maxwell 2D螺线管磁场分析
  5. 关于聚合支付的十大关键词,你认识几个?
  6. vivo X20的USB调试模式在哪里,打开vivo X20USB调试模式的方法
  7. 17岁开始创业,26岁就成亿万富豪,无名小贩如何成功的?
  8. 大学生学完python靠几个接单网站兼职,实现经济独立,1年可开设自己的工作室!
  9. dymola汇总学习篇-控件-Modelica-Mechanics-20200722更新
  10. 【图像处理】自动报靶系统【含GUI Matlab源码 814期】