Clear Filters
Clear Filters

Heatmapping using temperature data from drone images/ Imfusing data is altering temperature values

3 views (last 30 days)
Hi, I am working on infrared (IR) drone images and my main objective is to attain heatmap as per road profile/ road layout. I have extracted pixel wise heat data (data1.mat and data2.mat) from the IR images (0001_JPG and 0002_JPG). The extracted data is in type 'double'.
To develop the road profile using heat data, I decided to use GPS data from IR images so I can find distance between two images center to center (c/c). All the steps have gone fine, but at moment when I 'imfuse' two heat data files as per road layout keeping GPS based c/c distance, the output file (AB.mat) changes the data type (to unit8), which alter the temperture values in pixels.
Kindly advise, what other functions or options I can use to combine two data files without alter pixel temperature values. I just want to retain temperture values pixel wise so on combining datasets I can display whole heatmap along road profile/ road layout. As few images are overlapping so I need to keep them as per GPS, as center, to get exact layout.
I hope I have clarified my query.
Please advise.
data1;
Picinfo1 = imfinfo('0001_T.JPG');
Xx1=Picinfo1.GPSInfo.GPSLatitude;
X1= dms2degrees(Xx1);
Yy1=Picinfo1.GPSInfo.GPSLongitude;
Y1= dms2degrees(Yy1);
data2;
Picinfo2 = imfinfo('0002_T.JPG');
Xx2=Picinfo2.GPSInfo.GPSLatitude;
X2= dms2degrees(Xx2);
Yy2=Picinfo2.GPSInfo.GPSLongitude;
Y2= dms2degrees(Yy2);
% distance between two images c/c
wgs84 = wgs84Ellipsoid("m");
Ds1 = distance(X2,Y2,X1,Y1,wgs84);
%determining pixel sizes w & h
% Pixel size factors
DD1=str2double(Picinfo1.XMPData.drone_dji.RelativeAltitude); % Altitude value is Character array
DD2=str2double(Picinfo2.XMPData.drone_dji.RelativeAltitude);
FOV=82.9; % from DJI website
%image 1
pixelsize1w=tan(FOV/2)*DD1/Picinfo1.Width; % meters
pixelsize1h=tan(FOV/2)*DD1/Picinfo1.Height; % meters
%image 2
pixelsize2w=tan(FOV/2)*DD2/Picinfo2.Width; % meters
pixelsize2h=tan(FOV/2)*DD2/Picinfo2.Height; % meters
% pixel box
R1 = imref2d(size(data1),pixelsize1w,pixelsize1h);
R2 = imref2d(size(data2),pixelsize2w,pixelsize2h);
%Referencing Images from each other (center to center)
R1.XWorldLimits = R1.XWorldLimits;
R1.YWorldLimits = R1.YWorldLimits;
R2.XWorldLimits = R2.XWorldLimits+Ds1;
R2.YWorldLimits = R2.YWorldLimits;
%Mapping Heat Data
AB=imfuse(data2,R2,data1,R1,'blend','Scaling','joint');
figure;
imshow(AB);
Please any suggestion or advise will be helpful. I want to follow the above mentioned strategy.

Answers (0)

Products


Release

R2023b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!