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

2023-11-12

系列文章目录

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


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


前言

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


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

简单来说就是一个图像Resize的过程,只不过在热成像这个领域避免不了,主要是因为传感器价格比较贵,例如一个2432像素的传感器就200块钱左右了,如果是要做一个分辨率高一点的,仅传感器的成本就承担不了。所以就需要插值运算来强行提升分辨率。
不过插值运算对于初入行的童鞋并不友好,更多会涉及数学方面的知识,插值的算法也很多:双线性插值法、三次多项式插值、先双线性插值再三次多项式插值、先三次多项式插值再双线性插值等等。如果没有一些参考,从0开始码这块的代码会比较麻烦。而且一般的插值的运算都是4倍的关系,比如现在像素是24
32,一次插值之后就是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,在这个过程中先进行灰度插值,再伪彩色编码比较好,还是先伪彩色编码,再进行插值?试验过了,对先伪彩色编码再插值的图像效果很差,连续性比较差。原因其实跟伪彩色编码的算法有关,因为伪彩色编码都不是线性的,而是分段的,这样原图像的差,经过非线性放大,再进行插值后,与原来就不再成比例了。


总结

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • OpenCV:处理每一帧

    我想使用 OpenCV 编写一个跨平台应用程序进行视频捕获 在所有示例中 我发现来自相机的帧是使用抓取功能进行处理并等待一段时间 我想处理序列中的每一帧 我想定义自己的回调函数 每次当一个新帧准备好处理时都会执行该函数 例如直播对于 Win
  • 如何使用 Python 3 在 OpenCV 3 上正确加载 cv2.KeyPoint 和描述符?

    有一天 我不得不恢复一个使用 OpenCV 3 和 Python 2 7 的旧项目 在此代码中 要加载 cv2 KeyPoint 我执行以下操作 import numpy as np import cPickle import cv2 ke
  • 使用 Azure 机器学习检测图像中的符号

    4年前我发帖这个问题 https stackoverflow com q 6999920 411094不幸的是 得到的一些答案超出了我的技能水平 我刚刚参加了一次构建巡演会议 他们在会上谈论了机器学习 这让我想到了使用 ML 来解决我的问题
  • 检测骰子的上侧

    是否可以检测骰子的上面 虽然从顶部看这将是一项简单的任务 但从许多角度来看 可以看到多个侧面 Here is an example of a dice feel free to take your own pictures 您通常想知道自己
  • OpenCV非旋转图像拼接

    我正在 OpenCV 中进行图像拼接 从不同位置拍摄平面场景的照片并尝试构图全景图 我修改了缝合示例以满足我的需要 openCV 拼接管道的问题是 它假设相机纯粹旋转 但对我来说情况并非如此 当拍摄的照片与场景完全正交时 没有相机旋转 只是
  • 从索贝尔确定图像梯度方向?

    我正在尝试使用 openCV 的 Sobel 方法的结果来确定图像梯度方向 我知道这应该是一个非常简单的任务 我从此处复制了许多资源和答案中的方法 但无论我做什么 所得方向始终在 0 57 度之间 我希望范围为 0 360 我相信所有的深度
  • 有没有办法检测图像是否模糊? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想知道是否有一种方法可以通过分析图像数据来确定图像是否模糊 估计图像清晰度的另一种非常简单的方法是使用拉普拉斯 或 LoG 滤波器并
  • `opencv.android.JavaCameraView` 和 `opencv.android.NativeCameraView` 有什么区别

    正如主题中所述 有什么区别opencv android JavaCameraView and opencv android NativeCameraView 与其他主要优点相比 有哪些优点可以提供更多选择 来自OpenCV 文档 http
  • Opencv - 找不到头文件

    我正在尝试使用 opencv 开始开发 问题是 到目前为止我几乎无法设置 opencv 因为我找不到它的头文件 我对此主题进行了一些研究 但没有一个真正有帮助 下面是一些链接 opencv2 包含文件在哪里 https stackoverf
  • 将线性数组转换为二维矩阵

    我有一个浮点指针 数组 它代表一个图像 它的元素计数和索引具有宽度 高度 图像不像矩阵 其原点位于左上角 相反 它的原点位于左下角 就像在笛卡尔坐标系中一样 达到最大宽度后 它从左侧开始下一行 所以我想有效地将 这个数组转换为二维矩阵 可选
  • 如何在 opencv 3.0 Beta 中从文件读取 UMat?

    我想用UMat所以我的代码可以使用 OpenCL OpenCV 3 0 0 Beta 在 GPU 和 CPU 上运行 但我找不到将图像文件读入的方法UMat或转换一个Mat to UMat 如何将图像读入UMat 样品用于Mat to UM
  • OpenCV 机器学习算法的 CSV 格式

    OpenCV 中的机器学习算法似乎使用以 CSV 格式读取的数据 参见示例这个 cpp文件 https code ros org trac opencv browser trunk opencv samples c tree engine
  • 使用 cv2 在 python 中创建多通道零垫

    我想用 cv2 opencv 包装器在 python 中创建一个多通道 mat 对象 我在网上找到了一些例子 其中 c Mat zeros 被 numpy zeros 替换 这看起来不错 但似乎没有多通道类型适合 看代码 import cv
  • OpenCV 旋转图像而不裁剪澄清

    我想扩展这个主题 参考用户 Lars Schillingmann 给出的这个 SO 问题和接受的答案 在 C 中的 OpenCV 中旋转图像而不裁剪 https stackoverflow com questions 22041699 ro
  • VideoCapture 未检测到 uEye 摄像头

    我的 uEye 相机遇到了一个问题 使用我的笔记本电脑摄像头 id 0 或 USB 上的网络摄像头 id 1 此行完美运行 TheVideoCapturer open 1 TheVideoCapturer 属于 VideoCapture 类
  • OpenCV 读取视频文件时内存不足

    此示例从文件中读取视频cv2 VideoCapture在 python OpenCV 中内存不足 import cv2 cap cv2 VideoCapture file mp4 while True ret frame cap read
  • Android API人脸检测与OpenCV/JavaCV人脸检测

    我在 Android 设备上使用了本地 Android 人脸检测 但它似乎很慢 而且我不太确定其可靠性 我还使用了 OpenCV 的人脸检测 但仅限于 PC 而不是 Android 设备 对于 Android 我猜我必须使用 JavaCV
  • 如何将 OpenCV 的测试框架与 CMake 结合使用?

    好像 OpenCV 有一个测试框架 https github com Itseez opencv tree ef91d7e8830c36785f0b6fdbf2045da48413dd76 modules ts include opencv
  • Opencv 运动检测与跟踪

    我需要在网络摄像头的视频帧中进行强大的运动检测和跟踪 背景总是一样的 目的是识别物体的位置 如果可能的话没有阴影 但并不急于去除阴影 我已经尝试过用于背景减法和阈值化的opencv算法 但这仅取决于一个图像作为背景 如果背景的亮度 或相机自
  • 将yuv420p原始数据转换为opencv图像

    我有来自 rtmp 服务器的原始数据 像素格式为 yuv420p 我使用管道来读取数据 但我不知道如何将原始数据解码为图像 command ffmpeg command extend loglevel fatal i rtmp localh

随机推荐

  • 2024年java面试--mysql(3)

    系列文章目录 2024年java面试 一 spring篇 2024年java面试 二 spring篇 2024年java面试 三 spring篇 2024年java面试 四 spring篇 2024年java面试 集合篇 2024年java
  • Photoshop 之利用 "调整边缘" 抠图

    目录 1 首先 看如下图像 人物图像包含很多头发 2 利用魔棒工具 选中选区 并选择 反向 选中人物图像 3 选择选项栏中的 调整边缘 或者菜单栏中的选择 调整边缘 4 利用调整边缘 修复毛发中的空白部分扣除 5 通过拷贝的图层 将图像抠出
  • 如何安装和使用Android夜神模拟器

    夜神模拟器 是全新一代的安卓模拟器 能够让你在电脑上畅玩手机游戏 与传统安卓模拟器相比 基于Android7 1内核 同时向下兼容Android5 1内核以及X86 AMD 具备极高的兼容性和稳定性 加上超高帧率模式 能够在电脑上运行高性能
  • Antd的Upload+fetch+FormData上传Excel文件请求方式?

    let formData new FormData formData append file fileList 0 fetch 接口名称 method POST headers Content Type multipart form dat
  • 平均年薪60.8万,程序员拿下这个证书有多吃香?!

    互联网行业竞争一年比一年严峻 随着互联网的发展和进步 很多人都是想要进军到编程行业中去 作为工程师的我们唯有不停地学习 不断的提升自己才能保证自己的核心竞争力 打破内卷 从而拿到更好的薪水 进入心仪的企业 前些天 我的程序员哥们和我说 他转
  • Pycharm关闭项目卡住怎么办?

    突然有一天创建新项目的时候 Pycharm卡在了关闭项目上 通过网上查阅资料 不断试探 我最终这样解决了 1 在设置中的自然语言中添加了中文 2 更新了Pycharm由2023 1到2023 4 3 在文件中关闭项目 然后等待了较长时间后
  • Sentinel分布式系统的流量防卫兵

    Sentinel 是什么 官网 https github com alibaba Sentinel wiki 介绍 随着微服务的流行 服务和服务之间的稳定性变得越来越重要 Sentinel 以流量为切入点 从流量控制 熔断降级 系统负载保护
  • ae2020不支持的视频驱动程序_AE 2020版本安装提示系统兼容性报告怎么解决?

    AE 2020版本安装提示系统兼容性报告怎么解决 很多设计师朋友会遇到这样的问题 安装完AE2020版本之后 打开软件 提示这样的信息显示系统兼容性报告可这样解决 快进来学习吧 系统是WIN10的 64位 点击不理会 可以打开软件 但是作为
  • ​LeetCode刷题实战26:删除排序数组中的重复项

    算法的重要性 我就不多说了吧 想去大厂 就必须要经过基础知识和业务逻辑面试 算法面试 所以 为了提高大家的算法能力 这个公众号后续每天带大家做一道算法题 题目就从LeetCode上面选 今天和大家聊的问题叫做 删除排序数组中的重复项 我们先
  • vite 配置自动补全文件的后缀名

    vite 不建议自动补全 文件的后缀名的 const Home gt import views Home vue 文件是必须要加上 vue 的后缀名的 如果 想要像 webpack 一样的不用写 可以在vite config js中配置如下
  • windows server 2012 R2 安装mysql(一)

    windows server 2012 R2 安装mysql 一 最近遇到一个要做app的朋友 朋友想要做一个简单的线上APP app 的功能久不介绍了 笔者决定采用windows server 2012 r2 做应用服务器 数据库采用my
  • 疫情防控数据可视化平台的设计与实现 计算机专业毕业设计源码87063

    摘要 信息化社会内需要与之针对性的信息获取途径 但是途径的扩展基本上为人们所努力的方向 由于站在的角度存在偏差 人们经常能够获得不同类型信息 这也是技术最为难以攻克的课题 针对疫情防控数据可视化平台等问题 对如何通过计算机疫情防控数据可视化
  • 在Qt创建的UI中放一个显示点云的窗口(PCL+QT5)

    1 首先在Qt Designer创建UI后 拖一个Widget窗口出来 2 在对象查看器中右击该Widget 选择提升窗口部件 如下操作 3 把UI转出来放在VS项目中 其中你的UI代码头文件会自带QVTKOpenGLNativeWidge
  • 非常实用: 2.4G天线设计指南(赛普拉斯工程师力作)

    前言 为了方便查看博客 特意申请了一个公众号 附上二维码 有兴趣的朋友可以关注 和我一起讨论学习 一起享受技术 一起成长 转载自 gt 非常实用 2 4G天线设计指南 赛普拉斯工程师力作 微信公众号 lt lt 射频百花潭 gt gt 本文
  • 分享 7 个 AI 优质开源项目!文本生成、自动化数据搜集...

    项目一 nanodet 超快速轻量级无锚物体检测模型 项目地址 https github com RangiLyu nanodet 项目特点 超轻量 模型文件只有 980KB INT8 或 1 8MB FP16 超快 在移动 ARM CPU
  • npm 实现原理

    输入 npm install 命令并敲下回车后 会经历如下几个阶段 以 npm 5 5 1 为例 1 执行工程自身 preinstall 当前 npm 工程如果定义了 preinstall 钩子此时会被执行 2 确定首层依赖模块 首先需要做
  • 基于STM32的脉搏心率检测仪(OLED可以实时显示脉冲波形)

    设计完整 功能可全部实现 有完整报告文档说明 程序以及pcb文件 可作为 课程设计 STM32实践学习 电子制作等 禁止转载 以及用于其他商业用途 B站对应讲解心率传感器项目链接 设计所实现的功能 利用STM32的AD采集功能实时采集心率传
  • 从零开始深度学习0521——keras基本知识+GAP理解

    Keras 中经常可以看到 K image data format channels first 深度学习中 Flatten层 的作用 lt GAP Flatten层的实现在Keras layers core Flatten 类中 作用 F
  • Version of Delve is too old for this version of Go【Goland Debug】报错

    最近升级了 Go 到 1 14 发现使用 Goland debug 程序的时候报错了 完整的报错信息如下 API server listening at 127 0 0 1 53951 Version of Delve is too old
  • 【EPS32S3学习笔记】OPENCV应用于热成像的插值运算

    系列文章目录 提示 这里可以添加系列文章的所有文章的目录 目录需要自己手动添加 例如 第一章 Python 机器学习入门之pandas的使用 提示 写完文章后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 系列文章目录 前言 一