怎样根据灰度阈值的不同给不同区域上不同的颜色?

各位朋友,我看到其他朋友提的这个问题,对我现在的困惑帮助有非常非常大的帮助,但是我一直没找到这个算法,请大家帮助我一下!

img

img

要精确控制可以这样:
截的图试了试,第一档没用50做阈值而是用的150:效果这样

img


截的图:

img

代码

% demo gray2rgb

pic=imread('test.jpg');
if size(pic,3)>1
    pic=rgb2gray(pic);
end

newPicR=zeros(size(pic));
newPicG=zeros(size(pic));
newPicB=zeros(size(pic));
%
newPicB(pic<=150)=255;
%
newPicR(pic>150&pic<=240)=255;
newPicG(pic>150&pic<=240)=255;
%
newPicR(pic>240)=255;
%
newPic(:,:,1)=newPicR;
newPic(:,:,2)=newPicG;
newPic(:,:,3)=newPicB;
imshow(uint8(newPic))

当然要想要渐变且区分度明显的,建议自己构造渐变colormap

这个可以参考MATLAB里面的颜色

参考这个:https://blog.csdn.net/qq_60088512/article/details/121164338


这里面的RGB除以255就可以

img


function color_map = gray2color(heat_map)
%将灰度图像转换为彩色图像
cmap = jet;
sz  = size(heat_map);
color_map = zeros(sz(1), sz(2), 3);
for i = 1:256
    ind = find(heat_map == i-1);
    [r,c] = ind2sub(sz, ind);
    for j = 1:3
        color_map(sub2ind([sz(1), sz(2), 3], r, c, j+zeros(size(r)))) = cmap(i, j);
    end 
end
end

————————————————
版权声明:本文为CSDN博主「脉望虫」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_36763031/article/details/120325368