深度图伪彩色处理(matlab)+gray2color

深度图

深度图衡量场景中的深度信息,每一个像素点的像素值代表该采样点对应的场景点到相机的距离,因此深度图是单通道的,从图像的视觉效果来看即灰度图。
判断深度图的质量我们可以通过观察和数据分析两种方法,通常最后的输出图在直观上有比较好得效果:如边界清晰,灰度直观分布均匀,无明显的分层现象,进而再拿结果去跟真值进行比对。

深度图的伪彩处理

在观察深度图的时候由于单通道的灰度图在像素值发生细微的变化却在视觉效果上体现不出来,于是我们可以将灰度空间映射到彩虹图空间,借由彩色的高对比度和来提升深度图的视觉效果。这种方式叫深度图的伪彩色处理。示意图如下:
在这里插入图片描述归一化像素的伪彩映射。

应用

在做立体匹配获取深度图的仿真实验中我得到如下的深度图
在这里插入图片描述
对应的伪彩色图像为:
在这里插入图片描述

结果

在直观感受上伪彩图能够更加轻易的观察出匹配误差,便于进一步进行算法优化。

function gray_to_color(img)
z=3;
[x ,y]=size(img);
imshow(img);
img=double(img);
img_cai=zeros(x,y,z);
Max=max(max(img));
Min=min(min(img));
img=(255/(Max-Min))*img-(255*Min)/(Max-Min);
figure,imshow(uint8(img));
r=1;
g=2;
b=3;

for i=1:x
    for j=1:y
        temp=(2*pi/(Max-Min))*img(i,j)-(2*pi*Min)/(Max-Min);       
       
        if temp<=pi/2
            img_cai(i,j,r)=0;
            img_cai(i,j,g)=0;
            img_cai(i,j,b)=255*(sin(temp));
        end    
        if temp>pi/2 && temp<=pi
            img_cai(i,g,r)=0;
            img_cai(i,j,g)=255*(-cos(temp));
            img_cai(i,j,b)=255*(sin(temp));
        end   
        if temp>pi && temp<=pi*3/2
            img_cai(i,j,r)=255*(-sin(temp));
            img_cai(i,j,g)=255*(-cos(temp));
            img_cai(i,j,b)=0;
        end    
        if temp>pi*3/2
            img_cai(i,j,r)=255*(-sin(temp));
            img_cai(i,j,g)=0;
            img_cai(i,j,b)=0;     
        end
    end
end

figure,imshow(uint8(img_cai));
end

本文代码引用自博客
https://www.cnblogs.com/tiandsp/archive/2012/03/04/2379220.html
matlab练习程序(彩虹编码伪彩色化)
引用仅为交流学习

后续添加内容

之前的的代码只有一种彩色映射方案,而且保存的图片只能以绘图布的结果的形式保存,不能生成跟原来灰度图片同等大小的彩色矩阵,因此后面的代码可以帮你解决这个问题:

map = colormap(parula(256))
res = gray2color(gray,map2,0,1)

这两个代码可以理解为:
1、利用colormap生成3*255的伪彩色映射矩阵map
2、将灰度图像gray按照map的映射方案进行映射得到伪彩色图
其中,map2为归一化到0到1之间的浮点数矩阵,grs2gray()脚本的代码如下:

function color = gray2color(gray,map,min,max)
gray(gray<min) = min;
gray(gray>max) = max;
gray_img = show(gray,min,max);
[w,h] = size(gray);
gray_img(gray_img == 0) = 1;
color = zeros(w,h,3);
for i = 1:w
    for j = 1:h
        color(i,j,:) = map(gray_img(i,j),:);
    end
end

end

应用代码部分中的伪彩色方案可以通过matlab彩色图关键字来更改,比如,下图给出了原始灰度图,‘parula’,‘summer’,‘hot’,‘spring’,'jet’这一些类型的伪彩色方案。具体的可以在源码中的

map = colormap(parula(256))
res = grs2rgb(gray,map2,0,1)

colormap函数中更改参数,其中256表示的伪彩带量化的范围
在这里插入图片描述ps中的一些伪彩色的方案的基本原理就是这些。

  • 5
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值