【EPS32S3学习笔记】OPENCV应用于热成像的插值运算 您所在的位置:网站首页 marlinfw 【EPS32S3学习笔记】OPENCV应用于热成像的插值运算

【EPS32S3学习笔记】OPENCV应用于热成像的插值运算

2023-06-08 16:09| 来源: 网络整理| 查看: 265

系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用

提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录 系列文章目录前言一、热成像应用的插值运算二、热成像的插值运算过程总结

前言

之前解锁了在ESP32上布置OPENCV及一些人脸识别的应用,后面看看还有哪些应用可以尝试。 当然可能每个点都不是很大,更多的是记录一些过程。

一、热成像应用的插值运算

简单来说就是一个图像Resize的过程,只不过在热成像这个领域避免不了,主要是因为传感器价格比较贵,例如一个2432像素的传感器就200块钱左右了,如果是要做一个分辨率高一点的,仅传感器的成本就承担不了。所以就需要插值运算来强行提升分辨率。 不过插值运算对于初入行的童鞋并不友好,更多会涉及数学方面的知识,插值的算法也很多:双线性插值法、三次多项式插值、先双线性插值再三次多项式插值、先三次多项式插值再双线性插值等等。如果没有一些参考,从0开始码这块的代码会比较麻烦。而且一般的插值的运算都是4倍的关系,比如现在像素是2432,一次插值之后就是24324。如果是一些非4次幂的变换,还要额外考虑。所以会比较麻烦,而对于底层的嵌入式应用来说,相关的参考并不是很好找,所以这个时候就用到OPENCV提供的功能了。

二、热成像的插值运算过程

以2432变换到240320为例,步骤如下:。 1、从热成像传感器获取的数据,经过运算转成温度; 2、将温度数据转换为8位的灰度值,简单的计算方法就是取温度的最大值,最小值,按比例*255。 3、之后利用这些灰度值,创建MAT对象,再调用resize进行像素的变换。 4、之后再将转换后的灰度数据,转换成对应格式的RGB数据,也就是红外图像的伪彩色编码过程。

static Mat dstImage; Mat inputImage(srcHeight, srcWidth, CV_8UC1, pSrcBuf); resize(inputImage,dstImage,Size(dstWidth,dstHeight),0,0,INTER_LANCZOS4 );

resize可以选择的插值算法也有很多: INTER_NEAREST 最近邻插值 INTER_LINEAR 双线性插值,默认值 INTER_CUBIC 双三次插值 INTER_AREA 使用像素面积关系重采样。图像变化时的首选方法 INTER_LANCZOS4 8x8 邻域的 Lanczos 插值 INTER_MAX 插值代码的掩码 WARP_FILL_OUTLIERS 标志,填充所有目标图像像素。如果其中一些对应于源图像中的异常值,则将它们设置为零 WARP_INVERSE_MAP 标志,逆变换

这些算法都可以尝试下,看看效果差别。按照官方的推荐要缩小图像,通常使用 INTER_AREA 插值看起来效果最好,而使用放大图像,通常使用 INTER_CUBIC或 INTER_LINEAR 。

小TIPS,在这个过程中先进行灰度插值,再伪彩色编码比较好,还是先伪彩色编码,再进行插值?试验过了,对先伪彩色编码再插值的图像效果很差,连续性比较差。原因其实跟伪彩色编码的算法有关,因为伪彩色编码都不是线性的,而是分段的,这样原图像的差,经过非线性放大,再进行插值后,与原来就不再成比例了。

总结


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有