I have some thermal images and i need to find the maximum temperature each images and locate that pixel in the image
1 回表示 (過去 30 日間)
古いコメントを表示
I have some thermal images and i need to find the maximum temperature each images and locate that pixel in the image and to highlight the poistion of that area/ pixel in each image by giving some identification symbols or circles and store each image .
Kindly please help to solve this problem'
Thanks in advance
Jinu
0 件のコメント
回答 (1 件)
DGM
2023 年 3 月 31 日
編集済み: DGM
2023 年 3 月 31 日
There are a number of demos for how to do this. I'm pretty sure you've seen some, so I'm assuming that you know the limitations.
I'm assuming that this is an example of the images you have:
If so, then:
N = 256; % number of quant levels
% the extracted colortable representation
CT0 = [1 0.0431 0; 1 0.0745 0; 1 0.106 0; 1 0.153 0; 1 0.184 0; 1 0.216 0; 1 0.263 0; 1 0.294 0;
1 0.325 0; 1 0.373 0; 1 0.404 0; 1 0.435 0; 1 0.482 0; 1 0.514 0; 1 0.545 0; 1 0.592 0;
1 0.624 0; 1 0.655 0; 1 0.702 0; 1 0.733 0; 1 0.765 0; 1 0.812 0; 1 0.843 0; 1 0.875 0;
1 0.922 0; 1 0.953 0; 1 0.984 0; 0.969 1 0; 0.937 1 0; 0.906 1 0; 0.859 1 0; 0.827 1 0;
0.796 1 0; 0.749 1 0; 0.718 1 0; 0.686 1 0; 0.639 1 0; 0.608 1 0; 0.576 1 0; 0.529 1 0;
0.498 1 0; 0.467 1 0; 0.42 1 0; 0.388 1 0; 0.357 1 0; 0.31 1 0; 0.278 1 0; 0.247 1 0;
0.2 1 0; 0.169 1 0; 0.137 1 0; 0.0902 1 0; 0.0588 1 0; 0.0275 1 0; 0 1 0; 0 1 0.0431;
0 1 0.0745; 0 1 0.106; 0 1 0.153; 0 1 0.184; 0 1 0.216; 0 1 0.263; 0 1 0.294; 0 1 0.325;
0 1 0.373; 0 1 0.404; 0 1 0.435; 0 1 0.482; 0 1 0.514; 0 1 0.545; 0 1 0.592; 0 1 0.624;
0 1 0.655; 0 1 0.702; 0 1 0.733; 0 1 0.765; 0 1 0.812; 0 1 0.843; 0 1 0.875; 0 1 0.922;
0 1 0.953; 0 1 0.984; 0 0.969 1; 0 0.937 1; 0 0.906 1; 0 0.859 1; 0 0.827 1; 0 0.796 1;
0 0.749 1; 0 0.718 1; 0 0.686 1; 0 0.639 1; 0 0.608 1; 0 0.576 1; 0 0.529 1; 0 0.498 1;
0 0.467 1; 0 0.42 1; 0 0.388 1; 0 0.357 1; 0 0.31 1; 0 0.278 1; 0 0.247 1; 0 0.2 1; 0 0.169 1;
0 0.137 1; 0 0.0902 1; 0 0.0588 1; 0 0.0275 1; 0 0 1];
x0 = linspace(0,1,110);
xf = linspace(0,1,N);
CT = interp1(x0,flipud(CT0),xf); % interpolate to form new CT
% this is the approximate nonlinear temperature scale from the image
% there's no ticks, and the labels don't line up uniformly
% so there's no way to know where they're actually supposed to be
% this is just a guess.
t0 = [30 51.2 60.6 68.8 75];
xt0 = (0:4)/4; % guess that they're supposed to be uniformly spaced
xt = linspace(0,1,N);
t = interp1(xt0,t0,xt,'pchip'); % interpolate to form new temp scale
plot(xt,t)
% crop the data region from composite image
inpict = imread('80-2_1922.png');
inpict = imcrop(inpict,[2 2 639 119]);
imshow(inpict)
% convert the pseudocolor image into an index array
T = rgb2ind(inpict,CT,'nodither');
% convert the indexes into estimated temperature values
T = t(double(T)+1);
imshow(T,[])
% find the max temperature in the image
maxT = max(T(:));
% since there is no one pixel of maximum temperature
% create a mask that describes the regions with that temperature
mask = T == maxT;
% create a colored overlay for visualization
alpha = 0.8; % overlay opacity
fgcolor = [1 0.5 0.3]; % overlay color
alpha = mask*alpha;
outpict = alpha.*permute(fgcolor,[3 1 2]) + (1-alpha).*mat2gray(T);
imshow(outpict)
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Image Processing Toolbox についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!