firelab-general/matlab-version/ratio-pyrometry.m

54 lines
1.7 KiB
Matlab
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

B = imread("/Users/michael/Projects/firelab-general/examples/01-0001-cropped.png");
nrows = height(B);
ncolumns = width(B);
rdc = 7.7; % This, and the next 2 terms, are dark current values.
gdc = 11.5; % Theyre representative for a single camera orientation,
bdc = 4.4; % but theyre negligible in general.
GSdc = (rdc+gdc+bdc)/3;
iso = 64;
t = 0.5;
f = 2.4;
rawred = double(B(:,:,1));
rawgreen = double(B(:,:,2));
rawblue = double(B(:,:,3));
rawblue(rawblue > 65534) = 0;
rawGS = double(rgb2gray(B));
normred = ((rawred-rdc)*(f^2))/(iso*t);
normgreen = ((rawgreen-gdc)*(f^2))/(iso*t);
normblue = ((rawblue-bdc)*(f^2))/(iso*t);
GR = normgreen./normred; % Green-to-Red normalized pixel ratio
GR2 = log10(GR); % Log-base-10 of above ratio
GR2(imag(GR2) > 0) = 0; % Removes any imaginary entries
logGR = GR2; % Redefinition for calculations
%% Application of ratio pyrometry curve fit
RT = (362.73.*(logGR.^3) + 2186.7.*(logGR.^2) + 4466.5.*(logGR) + 3753.5); % New Camera Ratio Temp
%% Removal of 600-1200 range (Ratio)
RT(RT < 600 | RT > 1200) = 0; % BB Calibration Temperature range
%% 50% rule (Ratio)
RT2 = RT; % This section and below apply a noise reduction algorithm
% - if 50% of pixels around each pixel are 0, set that pixel to 0 as well
for i = 4:(nrows-4)
for j = 4:(ncolumns-4)
if nnz(RT(i-3:i+3,j-3:j+3)) < 25
RT2(i,j) = 0;
else
RT2(i,j) = RT(i,j);
end
end
end
%% MATLAB display
RT3=RT2; % Left in b/c some images need to be flipped for proper
% display - to do this, the command would instead be "RT3 = flip(RT2)
RatioAverageTemp = mean(nonzeros(RT3)); % Average surface temperature
Pixel = nnz(RT3); % Temp pixel count, to contextualize