远程红外热成像app
码云地址
8.实时识别并标记算法
1.调试演示所用传感器为8×8像素(IR64)
本次红外传感器比较小只有64个像素,无法准备描绘出物体轮廓,所以才需要插值提升像素。
2.mqtt实时将数据转发给移动端
传感器数据直接通过mqtt发送给移动端或者服务器通过mqtt中转给移动端,都可以做到无刷新实时显示热成像画面。
本次测试使用的是5Hz,传感器每秒发送5次数据,移动端每秒渲染5次热成像画面。实时度高的场景可以增加次数。
3.温度数组转为温度矩阵算法
由于红外传感器上报给服务器的数据是一维数组,要想显示图像就需要将数据转为二维数组矩阵 //传感器横轴像素
int sourcePixelRowCount = 8;
int len = temperatureList.length;
//传感器纵轴像素
int lineNum = len % sourcePixelRowCount == 0? (len ~/ sourcePixelRowCount).toInt(): ((len / sourcePixelRowCount) + 1).floor();
for (var i = 0; i < lineNum; i++) {int startIndex = i * sourcePixelRowCount;//截取数组指定长度后生成新数组Iterable<double> range = temperatureList.getRange(startIndex ,startIndex + sourcePixelRowCount);temperature.add(range.toList());
}
4.画面镜像翻转,二维数组重新排序
如果不进行镜像翻转,显示的画面将和实际的画面是相反的,左右相反
5.双三次多项式插值提升像素算法
插值提升像素,锐化边缘后,提升后像素为32×32,看下图片基本可以看到物体轮廓了。 //计算权重static dynamic getCubicWeight(double v) {double a = -0.5;// 取整int nv = v.floor();// 坐标差值集合List<double> xList = new List(4);// 坐标集合List<int> xs = new List(4);// 最近的4个坐标差值xList[0] = nv - v - 1;xList[1] = nv - v;xList[2] = nv - v + 1;xList[3] = nv - v + 2;//xs[0] = nv - 1;xs[1] = nv;xs[2] = nv + 1;xs[3] = nv + 2;// 计算权重List<double> ws = List(4);for (int i = 0; i < 4; i++) {double val = xList[i].abs();double w = 0;// 基于BiCubic基函数的双三次插值if (val <= 1) {w = (a + 2) * val * val * val - (a + 3) * val * val + 1;} else if (val < 2) {w = a * val * val * val - 5 * a * val * val + 8 * a * val - 4 * a;}ws[i] = w;}return {'weight': ws, 'coordinate': xs};}
6.温度数值转为RGB色彩编码算法,想要色阶越多可以用255/色阶数,我用的4
//将温度转为RGB,用64将颜色分为4个区间,可以分为更多区间比如51RGB grayToPseColor(int grayValue) {if (grayValue > 255) {return RGB(255, 0, 0);}if (grayValue < 0) {return RGB(0, 0, 0);}if ((grayValue >= 0) && (grayValue <= 63)) {return RGB(0, 0, (grayValue / 64 * 255).round());} else if ((grayValue >= 64) && (grayValue <= 127)) {return RGB(0, ((grayValue - 64) / 64 * 255).round(),((127 - grayValue) / 64 * 255).round());} else if ((grayValue >= 128) && (grayValue <= 191)) {return RGB(((grayValue - 128) / 64 * 255).round(), 255, 0);} else if ((grayValue >= 192) && (grayValue <= 255)) {return RGB(255, ((255 - grayValue) / 64 * 255).round(), 0);}return RGB(0, 0, 0);}
7.屏幕实时显示热成像画面算法,优化像素增大后渲染卡顿算法流畅丝滑
//二维温度数组List<List<double>> temperatureScale;//每个像素点大小final static double pixel;//最低温度static double temperatureMin = 10;//最高温度static double temperatureMax = 38;//计算最大温度差double difference = temperatureMax - temperatureMin;@overridevoid paint(Canvas canvas, Size size) {//创建画笔,默认颜色就是填充模式Paint paint = Paint();//画笔x轴位置,默认坐标为容器的左上角double top = 0;//画笔y轴位置double left = 0;//循环二维数组for (var i = 0; i < temperatureScale.length; i++) {for (var j = 0; j < temperatureScale[0].length; j++) {double value = temperatureScale[i][j];//计算温度系数double scale = (value - temperatureMin) / difference;//将温度转为rgb颜色值RGB rbg = grayToPseColor((255 * scale).round());//调整画笔的颜色paint.color = Color.fromARGB(255, rbg.R, rbg.G, rbg.B);//创建一个矩形Rect rrect = Rect.fromLTWH(left, top, pixel, pixel);//画一个矩形到屏幕canvas.drawRect(rrect, paint);//画笔向右移动一个像素left = left + pixel;}left = 0;//画笔向下移动一个像素top = top + pixel;}}
9.移动端效果8×8图示例(优化前画面像素->优化中项画面像素->优化后画面像素)
远程红外热成像app相关推荐
- 霍尼韦尔2020年度10大创新科技:口罩、红外热成像测温技术等
2020年是非同寻常的一年,席卷全球的新冠疫情在带来挑战的同时也激发了创新.为响应抗疫需求带来的市场变化,霍尼韦尔迅速改造了制造设施,生产了数以百万计的N95口罩,帮助医护人员和政府机构抗击疫情.在为 ...
- 为什么说红外热成像测温设备是2020年最火的弱电设备?
新型冠状病毒肆虐,体温检测是疫情防控的重要环节,但传统体温测量耗时较多,在人流较密集的场合大规模的体温检测容易造成大面积人员滞留,同时存在人员聚集造成交叉感染的隐患. 5G 红外测温"服务有 ...
- 红外热成像拥抱无人机 迸发安防救援新活力
经过几十年的发展,红外热成像技术已经广泛应用于军事.医疗.工业生产.消防等领域,更是在近几年开启了民用化的发展趋势.对于安防而言,热成像技术的出现,为视频监控在光线不足时增加了夜视和透视的功能,在整个 ...
- 动物行为检测计算机视觉_基于红外热成像和计算机视觉的动物行为研究系统便是其中一例...
工业领域的某些技术手段因其成熟的体系和强大的适应能力,常常被引入到科研领域.引入后往往能给学者莫大的惊喜,给他们的课题带来惊人的突破.本文介绍的基于红外热成像和计算机视觉的动物行为研究系统便是其中一例 ...
- 动物行为检测计算机视觉_当动物行为研究遇见机器视觉——“红外热成像+计算机视觉”动物行为研究系统...
当动物行为研究遇见机器视觉 --"红外热成像+计算机视觉"动物行为研究系统 工业领域的某些技术手段因其成熟的体系和强大的适应能力,常常被引入到科研领域.引入后往往能给学者莫大的惊喜 ...
- stm32单片机+amg8833+红外热成像/单片机红外测温成像/stm32 amg8833红外热成像
基于stm32单片机的amg8833红外热成像/单片机红外测温成像,测温模块用的是AMG8833 IR 8x8红外热像传感器. 具体功能:可红外热成像,可以设置报警阈值,可以语音播报温度异常,单片机s ...
- 基于ARM RK3568的红外热成像体温检测系统
得益于我国政府有力的新冠疫情防控手段,人民群众的生产和生活没有受到过多影响.而放眼全球,疫情防控形势依旧严峻,这提醒着我们仍不能掉以轻心,除做好个人防护之外,公共场所的体温检测成为基础但重要的疫情防控 ...
- 【红外技术】红外热成像在雨雾天的能看多远?
创作日期:2020-02-12 1. 用户会经常问 热成像能看多远? 答:作用距离取决于很多因素.包括:镜头,探测器是否制冷,灵敏度,探测的目标大小,目标与背景的温差.当然,在这所有的因素的之前,还有 ...
- 国内从事红外热成像的公司
1.上海巨哥电子科技有限公司 http://www.magnity.com.cn/ 安防红外机芯.手持测温.无人机载红外相机 2.深圳保千里电子有限公司 http://www.bqlnv.com.c ...
最新文章
- mysql timestamp 转型_MySQL的timestamp类型自动更新问题【转】
- 雅安职业技术学院有计算机专业吗,雅安职业技术学院2020开设专业设置
- UVA - 673 (括号的匹配)
- NYOJ 589 糖果
- 3.定义一个有10个元素的数组,用其代表10个学生的考试成绩,从键盘输入10个成绩,统计平均成绩。
- 通过代理上网 固定ip_浅析局部代理IP与全局代理IP的使用说明
- IDEA如何像Eclipse打开多个项目?
- 独家分享| 2019年校招大厂算法自己经历和好友经验(大疆,百度,腾讯……)
- inception_Inception团队在Red Hat推出DevOps
- 记一次newCachedThreadPool造成的导入导出事故
- 开始把一些东西放到博客上
- Android新建一个activty
- java httpurlconnection 设置编码_java – 通过HttpURLConnection发送UTF-8字符失败
- 详解舵机的基本原理以及控制方法
- swift 图片压缩
- opencv studay3
- 计算机误删恢复软件,电脑误删文件恢复软件_手机数据恢复工具-万能数据恢复大师...
- 我不是蓝牙大神,但还是斗胆对蓝牙学习路线给点建议!
- bash忽略错误继续执行_shell 执行命令失败则中断执行 类似断言
- Struts2学习之------Struts2的详细的复习讲解
热门文章
- Linux搭建YUM仓库
- Python调用winrar.exe进行文件压缩
- linux 8e,有关linux下 安装openssl-0.9.8e问题?
- python 召回率_召回率与精确率
- 量化择时:基于经验模态分解的希尔伯特-黄变换(二)算法
- 亚马逊云服务器aws配置ssl https证书
- 解决xxx by CORS policy: No ‘Access-Control-Allow-Origin‘ header is present on the requested resource问题
- 机器学习-37-GAN-04-Unsupervised Condition GAN(无监督有条件GAN:Direct Transformation,Projection to Comon Space)
- 原生js插件(超详细)
- Oracle 9i与MS SQL Server 2000之比较连载五.zz