MATLAB实现灰度图像的伪彩色增强

伪彩色增强

伪彩色增强的好处:人对图像灰度的分辨能力比较低,而对色彩的辨别能力却非常强,通过伪彩色增强,可以更有效地提取图形信息,使原图像细节更易辨认,目标更容易识别。

   伪彩色增强即将灰度图像的各个不同灰度级按照线性或非线性的映射函数变换成不同的彩色,从而得到彩色图像。主要方法有密度分割法、灰度级一彩色变换和频率域伪彩色增强三种。
   下面主要讲的是灰度级-彩色变换法,先根据映射函数得到R、G、B三色分量,再将RGB三色分量合成彩色图像。具体变换规则如下:(其中L为灰度级,I(i,j)为某个像素对应的灰度值,R、G、B为对应的颜色分量)

灰度值范围 R G B
0-L/4 0 4I(i,j) L
L/4-L/2 0 L -4I(i,j)+2L
0-L/4 4I(i,j)-2L L 0
0-L/4 L -4I(i,j)+4L 0

实现效果

在这里插入图片描述

参考代码

im=imread('D:\Fig0419(b).tif');
figure('name','灰度级-彩色变换法');
subplot(1,2,1);
imshow(im);
%将灰度值先转换为double类型便于后续处理
im=double(im);
[M,N]=size(im);
%初始化R,G,B,RGB
R=ones(M,N);
G=ones(M,N);
B=ones(M,N);
RGB=ones(M,N,3);
%灰度值范围
L=256;
for i=1:M
    for j=1:N
        if im(i,j)<=L/4
            R(i,j)=0;
            G(i,j)=4*im(i,j);
            B(i,j)=L;
        else
            if im(i,j)<=L/2
                R(i,j)=0;
                G(i,j)=L;
                B(i,j)=-4*im(i,j)+2*L;
            else
                if im(i,j)<=3*L/4
                    R(i,j)=4*im(i,j)-2*L;
                    G(i,j)=L;
                    B(i,j)=0;
                else
                    R(i,j)=L;
                    G(i,j)=-4*im(i,j)+4*L;
                    B(i,j)=0;
                end
            end
        end
    end
end
%合成伪彩色图像
for i=1:M
    for j=1:N
        RGB(i,j,1)=R(i,j);
        RGB(i,j,2)=G(i,j);
        RGB(i,j,3)=B(i,j);
    end
end
%把大于255的数全部转化为255,而小于255的部分则保持原样不变。
RGB=uint8(RGB);
subplot(1,2,2);
imshow(RGB);
发布了18 篇原创文章 · 获赞 40 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/seawaysyyy/article/details/105228690