【数字图像处理】Matlab实现-图像增强-彩色图像增强(彩虹编码,热金属编码)

  • Post author:
  • Post category:其他




伪彩色处理

伪彩色增强:把一幅黑白域图像的不同灰度级映射为一幅彩色图像的技术手段。

伪彩色增强有很多种方法,而下面的增强方法则是使用的空间域灰度级-彩色变换法。

空间域灰度级-彩色变换法:可以将灰度图像变为具有多种颜色渐变的连续彩色图像,变换后的图像视觉效果较好,主要色相是将灰度图像f(x,y)送入具有不同变换性质的红、绿、蓝3个变换器,相对应的产生3个不同的输入fR(x,y),fG(x,y),fB(x,y)将它们对应地作为彩色图像的红绿蓝三个色彩分量合成一副彩色图像。

彩虹编码和热金属编码是其中的两种变化函数。

彩虹编码

Image1=imread('lotus.bmp');
    
%转换为灰度
gray=rgb2gray(Image1);
[h,w]=size(gray);
%新图像的矩阵
NewImage3=zeros(h,w,3);
for x=1:h
    for y=1:w
        if gray(x,y)<96
        NewImage3(x,y,1)=0;
        elseif gray(x,y)<128
        NewImage3(x,y,1)=255*(gray(x,y)-96)/32;
        else
        NewImage3(x,y,1)=255;
        end
    end
end
for x=1:h
    for y=1:w
        if gray(x,y)<32
        NewImage3(x,y,2)=0;
        elseif gray(x,y)<64
        NewImage3(x,y,2)=255*(gray(x,y)-32)/32;
        elseif gray(x,y)<128
        NewImage3(x,y,2)=255;
        elseif gray(x,y)<192
        NewImage3(x,y,2)=255*(192-gray(x,y))/64;
        else
        NewImage3(x,y,2)=255*(gray(x,y)-192)/64;
        end
    end
end
for x=1:h
    for y=1:w
        if gray(x,y)<32
        NewImage3(x,y,3)=255*gray(x,y)/32;
        elseif gray(x,y)<64
        NewImage3(x,y,3)=255;
        elseif gray(x,y)<96
        NewImage3(x,y,3)=255*(96-gray(x,y))/32;
        elseif gray(x,y)<192 
        NewImage3(x,y,3)=0;
        else
        NewImage3(x,y,3)=255*(gray(x,y)-192)/64;
        end
    end
end
imshow(NewImage3),title('彩虹编码')

处理结果

在这里插入图片描述

热金属编码

Image1=imread('lotus.bmp');
    
%转换为灰度
gray=rgb2gray(Image1);
[h,w]=size(gray);
%新图像的矩阵
NewImage4=zeros(h,w,3);
for x=1:h
    for y=1:w
        if gray(x,y)<64
        NewImage4(x,y,1)=0;
        elseif gray(x,y)<128
        NewImage4(x,y,1)=255*(gray(x,y)-64)/64;
        else
        NewImage4(x,y,1)=255;
        end
    end
end
for x=1:h
    for y=1:w
        if gray(x,y)<128
        NewImage4(x,y,2)=0;
        elseif gray(x,y)<192
        NewImage4(x,y,2)=255*(gray(x,y)-128)/64;
        else
        NewImage4(x,y,2)=255;
        end
    end
end
for x=1:h
    for y=1:w
        if gray(x,y)<64
        NewImage4(x,y,3)=255*gray(x,y)/64;
        elseif gray(x,y)<96
        NewImage4(x,y,3)=255;
        elseif gray(x,y)<128
        NewImage4(x,y,3)=255*(128-gray(x,y))/32;
        elseif gray(x,y)<192 
        NewImage4(x,y,3)=0;
        else
        NewImage4(x,y,3)=255*(gray(x,y)-192)/64;
        end
    end
end
imshow(NewImage4),title('热金属编码')

处理结果

在这里插入图片描述



版权声明:本文为SUMMER_RAINOW原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。