方法比较直观,先将图像转化为灰度(强度)图,然后将原图像除以灰度图即为颜色图。下面是matlab代码和效果。
clear
I=im2double(imread('pflower.png'));
R=I(:,:,1);
G=I(:,:,2);
B=I(:,:,3);
eps=0.02;
%计算强度(灰度)图
Intensity=0.3*R+0.59*G+0.11*B;
%原图除以强度图为颜色图
color=(I+eps)./(repmat(Intensity,[1,1,3])+eps);
% figure;imshow(I);
% figure;imshow(Intensity);
% figure;imshow(color);
figure;imshow([I,repmat(Intensity,[1,1,3]),color]);