Converting RGB Image to Grayscale Intensity on arbitrary Colormap

조회 수: 46(최근 30일)
Matt Gaidica
Matt Gaidica 2021년 12월 1일
댓글: Matt Gaidica 2021년 12월 2일
We have some thermal videos that have a colorscale presented along the side. I would like to run some thermal analysis on video frame regions. If I extract the colorscale from the video, how could I apply that to the image such that the result would be grayscale based on the intensity of the colorscale?
I have obtained a cmap for the custom scale by reading in that area, taking the mean over each column, resulting in a 1601x3 double, but I don't know how to map that onto a grayscale image as intensity values.

채택된 답변

Image Analyst
Image Analyst 2021년 12월 2일
People ask this all the time. So much so that I have a canned demo for it. See attached.
Adapt as needed, like to specify where in the image your image and colorbar are located.

추가 답변(1개)

DGM
DGM 2021년 12월 1일
편집: DGM 2021년 12월 1일
Something like this might be a start:
% you already found a colormap
cmap = parula(64);
% generate false-color test image
A = imread('cameraman.tif');
Aind = gray2ind(A,size(cmap,1)); % uniform quantization
Afalse = ind2rgb(Aind,cmap); % apply colormap
imshow(Afalse)
% convert back to intensity image
Arecovered = double(rgb2ind(Afalse,cmap))/(size(cmap,1)-1);
figure; imshow(Arecovered)
immse(im2double(A),Arecovered) % not perfect, but pretty good
ans = 2.9731e-05
  댓글 수: 3

댓글을 달려면 로그인하십시오.

Community Treasure Hunt

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

Start Hunting!

Translated by