Converting RGB Image to Grayscale Intensity on arbitrary Colormap
조회 수: 18 (최근 30일)
이전 댓글 표시
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.
댓글 수: 0
채택된 답변
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
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
댓글 수: 3
DGM
2021년 12월 2일
All you need is the second part. The first part is just generating a falsecolor test image, in concept like the one you already have. Your image would be Afalse, and your colormap should be cmap.
참고 항목
카테고리
Help Center 및 File Exchange에서 Red에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!