精华内容
下载资源
问答
  • 采用彩虹编码的伪彩色增强matlab代码,基于灰度映射方案,运行过没有问题。因为新学图像处理没有多久,入门作品。
  • 算法:通过三个不同函数(这里是三个分段线性函数),将一个灰度值... matlab代码:%题目:基于灰度变换的伪彩色方法 %意义:将亮度低的映射为蓝色(冷色),亮度高的映射为红色(暖色)。 %方法:分别用三个矩阵保存...

    算法:通过三个不同函数(这里是三个分段线性函数),将一个灰度值映射三个不同灰度值,分别保存在三个不同的矩阵中,

    再把三个矩阵的值分别赋值到一个新矩阵的三个通道中,这个新矩阵就是伪彩色图像矩阵,这样就由一张灰度图,得到一张伪彩色图片。

    三个映射函数如下:


    1. matlab代码:

    %题目:基于灰度变换的伪彩色方法
    %意义:将亮度低的映射为蓝色(冷色),亮度高的映射为红色(暖色)。
    %方法:分别用三个矩阵保存,三个通道的灰度值。每个通道的灰度值,有不同的映射函数。
    % 输入灰度级        输出彩色
    % 0~63  1/4         蓝色
    % 64~127 2/4        紫色
    % 128~191 3/4       黄色
    % 192~255  4/4      红色
    clc;
    clear;
    grayImage=rgb2gray(imread('D:\Code\Image\girl.jpg'));
    figure,imshow(grayImage);
    [row,col]=size(grayImage);
    range=255;%每个通道的最大灰度值
    
    R = zeros(row,col);
    G = zeros(row,col);
    B = zeros(row,col);
    for i=1:row
         for j=1:col
            if grayImage(i,j)<=range/4% [0,64]偏蓝
                R(i,j)=0;
                G(i,j)=4*grayImage(i,j);
                B(i,j)=range;
                else if grayImage(i,j)<=range/2% (64,128] 偏紫
                     R(i,j)=0;
                     G(i,j)=range;
                     B(i,j)=-4*grayImage(i,j)+2*range;
                    else if grayImage(i,j)<=3*range/4% (128, 192]
                            R(i,j)=4*grayImage(i,j)-2*range;
                            G(i,j)=range;
                            B(i,j)=0;
                         else
                            R(i,j)=range;
                            G(i,j)=4*(range-grayImage(i,j));
                            B(i,j)=0;
                        end
                    end
            end
        end
    end
    
    out = zeros(row,col);
    for i=1:row
        for j=1:col
                  out(i,j,1)=R(i,j);
                  out(i,j,2)=G(i,j);
                  out(i,j,3)=B(i,j);
        end
    end
    
    out=out/256;
    figure,imshow(out);

    2. C++实现:

    #include <opencv2/opencv.hpp>
    using namespace cv;
    
    int main()
    {
    	Mat grayImg = imread("D:/Code/Image/girl.jpg", 0);
    	imshow("原图", grayImg);
    
    	Mat R = grayImg.clone();
    	Mat G = grayImg.clone();
    	Mat B = grayImg.clone();
    
    	int rows = grayImg.rows;
    	int cols = grayImg.cols;
    	for (int i = 0; i < rows; i++)
    	{
    		for (int j = 0; j < cols; j++)
    		{
    			int current = grayImg.at<uchar>(i, j);
    			if (0 < current && current <= 64)
    			{
    				R.at<uchar>(i, j) = 0;
    				G.at<uchar>(i, j) = 4 * current;
    				B.at<uchar>(i, j) = 255;
    			}
    			else if (64 < current && current <= 128)
    			{
    				R.at<uchar>(i, j) = 0;
    				G.at<uchar>(i, j) = 255;
    				B.at<uchar>(i, j) = -4 * (current - 64) + 255;
    			}
    			else if (128 < current && current <= 192)
    			{
    				R.at<uchar>(i, j) = 4 * (current - 128);
    				G.at<uchar>(i, j) = 255;
    				B.at<uchar>(i, j) = 0;
    			}
    			else
    			{
    				R.at<uchar>(i, j) = 255;
    				G.at<uchar>(i, j) = -4 * (current - 255);
    				B.at<uchar>(i, j) = 0;
    			}
    
    
    		}
    	}
    
    	Mat channels[3];  //定义对象数组,分别存储三个通道
    	Mat pseuMat;      //融合三个通道,存储在一个Mat里
    	channels[0] = B;
    	channels[1] = G;
    	channels[2] = R;
    
    	merge(channels, 3, pseuMat);
    	imshow("效果图", pseuMat);
    
    	waitKey(0);
    	return 0;
    }

    效果如下


    展开全文
  • Matlab:如何将暗光环境下的成像可视化以及灰度图映射彩色图像? 主题内容:将小鼠体内的放射性元素成像与小鼠图像进行融合。(原图的格式采用tiff格式,本文涉及的素材均已上传(提取码: sxf4)) 一:将暗光...

    Matlab:如何将暗光环境下的成像可视化以及灰度图映射成彩色图像?

    主题内容:将暗光环境下的小鼠体内的放射性元素成像与小鼠图像进行融合。(原图的格式采用tiff格式,本文涉及的素材及代码均已上传(提取码: sxf4))

    在这里插入图片描述

    一:将暗光环境下的成像可视化?

    • 采用矩阵的点称对原图像素值进行可视化变换。
    pet=imread('E:/photograph.tif');%小鼠图像
    pet=double(pet);%将像素转换成double类型
    pet1=pet.^(0.4+0.05*6);
    imshow(uint8(pet1));%显示可视化图像,这里将类型还原成整数类型显示
    
    tumor=imread('E:/tumors.tif');%放射扫描图像
    tumor=double(tumor);
    imshow(uint8(tumor.^(0.4+0.05*5)));
    

    在这里插入图片描述

    二:如何进行灰度图的颜色映射?

    • 由于小鼠图像的通道为1(灰度图通道数为1),首先将通道数转换成3

      tumor_dyed_color(:,:,1)=pet1(:,:,1);%其余2个通道的颜色值均与1通道保持一致
      tumor_dyed_color(:,:,2)=pet1(:,:,1);
      tumor_dyed_color(:,:,3)=pet1(:,:,1);
      
    • 设定ROI(Region Of Interest),而不是把将放射元素成像全部映射为彩色。

      lower_tensity=1000; %选取灰度值大于1000,小于1300的像素点进行颜色映射。
      upper_tensity=1300;
      

      采用map.txt进行颜色映射,map内有从0255种颜色值,通过不同的灰度值映射成不同的0255颜色值。

      在这里插入图片描述

      对应的转换关系为:

    在这里插入图片描述

    map=round(255*load('E:/map.txt'));%将map转换为整数类型
    >>
    level_num=(range/len);%计算level_num
    ind=round((tumor(i,j)-lower_tensity)/level_num);%将ROI范围内像素对应的灰度值映射到map的对应颜色值
    >>
    tumor_dyed_color(i,j,1)=map(ind,1);%进行3个颜色通道的映射
    tumor_dyed_color(i,j,2)=map(ind,2);
    tumor_dyed_color(i,j,3)=map(ind,3);
    

    三:代码的整合:

    pet=imread('E:/photograph.tif');
    pet=double(pet);
    pet1=pet.^(0.4+0.05*6);
    si=size(pet1);
    pet=zeros(si(1),si(2),3);
    tumor_dyed_color=zeros(si(1),si(2),3);%设置空图
    
    tumor_dyed_color(:,:,1)=pet1(:,:,1);%通道数转换
    tumor_dyed_color(:,:,2)=pet1(:,:,1);
    tumor_dyed_color(:,:,3)=pet1(:,:,1);
    
    tumor=imread('E:/tumors.tif');
    tumor=double(tumor);
    tumor=tumor.^(0.4+0.05*5);
    size_tumor=size(tumor);
    
    lower_tensity=1000; %设定ROI
    upper_tensity=1300;
    
    map=round(255*load('E:/map.txt'));
    s=size(map);
    len=s(1);
    range=upper_tensity-lower_tensity+1;
    level_num=(range/len);
    
    for i=1:size_tumor(1)%扫描图像
        for j=1:size_tumor(2) %感兴趣像素检测
            if tumor(i,j)>lower_tensity&&tumor(i,j)<upper_tensity
                ind=round((tumor(i,j)-lower_tensity)/level_num);
                               if ind==0 %colormap中的色彩行标
                                         ind=1;
                               end
    			tumor_dyed_color(i,j,1)=map(ind,1);%map投影到显示图
    			tumor_dyed_color(i,j,2)=map(ind,2);
    			tumor_dyed_color(i,j,3)=map(ind,3);
            end
        end
    end
    imshow(uint8(tumor_dyed_color));
    pause(0)
    
    

    四:最终的效果展示:

    在这里插入图片描述

    展开全文
  • matlab开发-MatplotiliB20彩色感知,形态美。Matplotlib 2.0默认颜色映射和线条颜色顺序映射(包括Viridis和Vega10)
  • matlab开发-使用在线彩色地图的地形图。使用.xyz数据为立面图创建非线性颜色映射
  • matlab开发-立方体超彩色发电机,美观多用。最通用的彩色地图生成器!生成适合灰度转换的颜色映射
  • (1)默认的一些颜色映射 matlab colormap https://blog.csdn.net/qq_20823641/article/details/51711618 (2)使用colormapeditor工具进行修改 (1) clear all; clc; % 读取影像 filename1 = 'a.tif'; filename2 ...

    (1)默认的一些颜色映射
    matlab colormap
    https://blog.csdn.net/qq_20823641/article/details/51711618
    在这里插入图片描述
    (2)使用colormapeditor工具进行修改

    (1)
    clear all; clc;
    % 读取影像
    filename1 = 'a.tif';
    filename2 = 'b.tif';
    img1      = geotiffread(filename1);
    img2      = geotiffread(filename2);
    
    (2)
    %% 编辑colormap
    figure(1)
    colormap jet
    colormapeditor
    imagesc(img)
    
    (3)
    %% 保存colormap,并在第二张图像上使用
    
    % gca表示当前的图,因为现在matlab中的colormap不再与figure关联,而是和axes关联,因此要使用mycmap =
    % colormap(gca),而不是 mycmap = get(figure(1),'Colormap'); 
    mycmap = colormap(gca);  
    save('MyColormaps','mycmap');
    load('MyColormaps','mycmap');
    figure(2)
    set(figure(2),'Colormap',mycmap);
    imagesc(img_R);
    
    (4)
    %%
    load('MyColormaps','mycmap');
    figure(1)
    set(figure(1),'Colormap',mycmap);
    imagesc(img1)
    
    figure(2)
    set(figure(2),'Colormap',mycmap);
    imagesc(img2)
    

    分节运行
    首先运行第一节:读取影像
    运行第二节:使用colormapeditor工具,在默认colormap基础上编辑修改
    在这里插入图片描述

    然后运行第三节:读取并保存mycmap,并在第二张图像上使用
    在这里插入图片描述
    保存mycmap以后,再次使用mycmap只需运行(1)(4)节,设定修改后的colormap
    在这里插入图片描述

    展开全文
  • MATLAB实现灰度图像的伪彩色增强

    千次阅读 2020-03-31 18:48:02
    彩色增强即将灰度图像的各个不同灰度级按照线性或非线性的映射函数变换成不同的彩色,从而得到彩色图像。主要方法有密度分割法、灰度级一彩色变换和频率域伪彩色增强三种。    下面主要...

    伪彩色增强

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

       伪彩色增强即将灰度图像的各个不同灰度级按照线性或非线性的映射函数变换成不同的彩色,从而得到彩色图像。主要方法有密度分割法、灰度级一彩色变换和频率域伪彩色增强三种。
       下面主要讲的是灰度级-彩色变换法,先根据映射函数得到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);
    
    展开全文
  • 均衡化指的是把一个分布(给定的直方图)映射到另一个分布(一个更宽更统一的强度值分布),所以强度值分布会在整个范围内展开。映射函数应该是一个累积分布函数。直方图均衡化是通过调整图像的灰阶分布,使得在0~255...
  • matlab双线性插值实现彩色图像的平移、旋转、缩放、镜像原理概述代码平移镜像缩放旋转结果原图平移(向X正方向、Y正方向50个距离单位)镜像(左右、上下)缩放(查看分辨率可知是否成功)旋转(45°) 原理概述 图像...
  • 该法可对语音信号(或其他类似的似平稳信号)进行基于FFT的短时频谱分析,频谱图的伪彩色映射及显示。频谱图的类型有宽带和窄带两种,伪彩色显示的映射可按需求设置。文中介绍了基于FFT频谱分析与频谱图显示的原理,...
  • matlab 渐变色

    2020-02-27 16:04:50
    索引图像分别有两个分量:数据矩阵X和彩色映射矩阵map。colormap就是用来设定map的函数。 MATLAB中,每个figure都有(而且仅有)一个colormap,翻译过来就是色图。 colormap(map); %用MAP矩阵映射当前图形的色图。 ...
  • 短时频谱分析,频谱图的伪彩色映射及显示.频谱图的类型有宽带和窄带两种,伪彩色显示的映射 可按需求设置.文中介绍了基于FFT频谱分析与频谱图显示的原理,Matlab的相关功能函数,并 给出了一个程序实例及其实验结果....
  • MATLAB中colormap函数

    万次阅读 多人点赞 2017-09-06 09:37:02
    我们知道索引图像有两个分量,一个是数据矩阵X,一个是彩色映射矩阵map,colormap就是用来设定map的函数。MATLAB中默认自带了18中colormap,图像如下 按照主题可分为: 季节(summer,autumn,winter,spring) ...
  • matlab分帧程序

    2018-05-05 16:08:56
    首先,编写一个频谱分析的函数,其中Winsiz: 定义帧长, 一般应取2 的幂次, 其目的是适合FFT 的要求。通过对Winsiz 的选值可实现宽带频谱或窄带频谱的选择。Shift: 定义帧移值。...1 伪彩色映射, 0 为灰度映射
  • MATLAB图形图像处理

    热门讨论 2011-01-03 12:20:11
    9.3 纹理映射 9.4 图像颜色 9.4.1 图像的退色处理 9.4.2 MATLAB 的颜色模型 9.4.3 MATLAB 颜色模型的转换 9.4.4 色彩处理 第十章 MATLAB 图像正交变换 10.1 正交变换通用算子 10.2 傅立叶变换 10.2.1 傅立...
  • Matlab函数解释:colormap

    万次阅读 2018-05-17 16:43:09
    本文档内容在matlab2016a 上运行通过。 colormap:查看并设置当前颜色图。 配色:通过将一个颜色方案,分配给一张图,使得一张黑白图彩色化。例如,画油画,首先是素描出物体的轮廓,接着是给画出的物体涂上适宜的...
  • matlab——imadjust函数

    2020-02-26 20:16:32
    对进行图像的灰度变换,即调节灰度图像的亮度或彩色图像的颜色矩阵。 格式: g = imadjust(f,[low_in; high_in],[low_out; high_out]) 将图像I中的亮度值映射到J中的新值。即将low_in至high_in之间的值映射到low_...
  • Matlab图像处理相关

    2019-10-06 04:25:51
    相关函数:  读取:imread() %参数为文件名(路径)或url,格式等  写入:imwrite() %参数为写入数据矩阵,写入... image() %彩色显示(相关函数:colormap()%改变颜色映射表)  truesize() %设定图...
  • 图像处理工具箱将彩色图像当做索引图像或RGB...索引图像有两个分量,即整数的数据矩阵X和彩色映射矩阵map。 有时需要用较少的颜色来近似一幅索引图像,由函数imapprox实现。 RGB图像、索引图像和灰度图像之间转换。rgb_
  • matlab gif文件生成

    千次阅读 2014-11-10 20:53:29
    frame包含RGB图像信息和颜色映射表 image只是RGB图像 indexed image: ...索引图像是一种把像素值直接作为...索引模式和灰度模式比较类似,它的每个象素点也可以有256种颜色容量,但它可以负载彩色。索引模式的图
  • 色图(color map)是MATLAB系统引入的概念。在MATLAB中,每个图形窗口只能有一个色图。... 色图代表的就是一个映射(彩色映射),它不是连续函数类型的映射,而是用一个有三列的矩阵来代表,这三列分别代表颜色的R、G...
  • matlab-函数总结

    2014-11-27 11:07:00
    1.imadjust在数字图像处理中用于进行图像的灰度变换(调节灰度图像的亮度或彩色图像的颜色矩阵)。 J = imadjust(I) 将灰度图像 I 中的亮度值映射到 J 中的新值并使 1% 的数据是在低高强度和饱和,这增加了...

空空如也

空空如也

1 2 3 4
收藏数 61
精华内容 24
关键字:

彩色映射matlab

matlab 订阅