我正在尝试完成一段我开始编写的代码。我有一张.BMP图像,我把它转成了热像仪。
我还将输出的方向从图片的中心点改为r和theta。
我正在尝试做的是获取热、r和θ信息,并输出整个图像中最高热特征的r和theta值。
有人知道怎么做这件事吗?
clc
close all
clear all
[img,cmap] = imread('test_thermal.bmp');
img = img(:,:,1);
[ny,nx] = size(img)
% Since there are an even number of rows and columns
y1d = -ny/2 + 1/2:- 1/2 + ny/2
x1d = -nx/2 + 1/2:- 1/2 + nx/2
[X2D,Y2D] = meshgrid(x1d,y1d);
figure()
imagesc(x1d,y1d,img);
[theta2D, radius2D] = cart2pol(X2D,Y2D);
theta2Ddeg = rad2deg(theta2D);
1条答案
按热度按时间txu3uszq1#
1.要获得峰值热值,您必须校准:您需要2个温度基准,例如,您需要知道给定的2个像素等于2(°C/°F/K)温度。
然后,您可以通过将img中的值范围Map到2温度测量的刻度来判断整个图像的每个像素的温度。
这两个基准之间的温度距离应尽可能宽,但不能大于图片中的最小(T)和最大(T),以避免丢失分辨率。
如果可能,在
img
上寻找皮肤温度时,尝试使用一个测量了皮肤温度的输入参考图像:这是第一个参考点。对于此输入参考图像,还要测量房间温度,这将是输入图像的背景:第二个参考点。
如果您能以某种方式将室温测量添加到每个输入图像中,作为与灰度级输入图像分开的输入,则整体温度测量的精度将大大提高,因为背景温度可能会有很大差异。
1.利用上述Map关系,求出峰值温度只需将
max(max(img))
转化为温度。1.至少不需要
cart2pol
就可以找到这里询问的最高温度值。1.如果你提供这样的测量,即使只是模拟的,我也可以向你展示如何为你提供的2个参考点制作这样的Map。
如果您觉得有用,请考虑将其标记为正确答案。感谢您阅读我的回复。