-
基于彩虹编码的伪彩色增强matlab代码
2011-03-21 15:25:42采用彩虹编码的伪彩色增强matlab代码,基于灰度映射方案,运行过没有问题。因为新学图像处理没有多久,入门作品。 -
【图像处理知识复习】05基于灰度变换的伪彩色方法matlab,C++实现
2018-05-09 18:02:59算法:通过三个不同函数(这里是三个分段线性函数),将一个灰度值... 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:如何将暗光环境下的成像可视化以及灰度图映射成彩色图像?
2020-03-10 20:23:55Matlab:如何将暗光环境下的成像可视化以及灰度图映射成彩色图像? 主题内容:将小鼠体内的放射性元素成像与小鼠图像进行融合。(原图的格式采用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彩色感知,形态美
2019-08-22 04:40:47matlab开发-MatplotiliB20彩色感知,形态美。Matplotlib 2.0默认颜色映射和线条颜色顺序映射(包括Viridis和Vega10) -
matlab开发-使用在线彩色地图的地形图
2019-08-24 08:43:13matlab开发-使用在线彩色地图的地形图。使用.xyz数据为立面图创建非线性颜色映射。 -
matlab开发-立方体超彩色发电机,美观多用
2019-08-22 12:32:05matlab开发-立方体超彩色发电机,美观多用。最通用的彩色地图生成器!生成适合灰度转换的颜色映射。 -
matlab图像伪彩色显示——使用colormapeditor工具
2020-12-09 21:50:29(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);
-
彩色图直方图均衡化matlab
2020-07-07 13:23:59均衡化指的是把一个分布(给定的直方图)映射到另一个分布(一个更宽更统一的强度值分布),所以强度值分布会在整个范围内展开。映射函数应该是一个累积分布函数。直方图均衡化是通过调整图像的灰阶分布,使得在0~255... -
matlab实现彩色图像的平移、旋转、缩放、镜像(双线性插值)
2020-04-28 12:27:02matlab双线性插值实现彩色图像的平移、旋转、缩放、镜像原理概述代码平移镜像缩放旋转结果原图平移(向X正方向、Y正方向50个距离单位)镜像(左右、上下)缩放(查看分辨率可知是否成功)旋转(45°) 原理概述 图像... -
matlab频谱分析实例-matlab频谱分析实例.rar
2019-08-12 20:50:45该法可对语音信号(或其他类似的似平稳信号)进行基于FFT的短时频谱分析,频谱图的伪彩色映射及显示。频谱图的类型有宽带和窄带两种,伪彩色显示的映射可按需求设置。文中介绍了基于FFT频谱分析与频谱图显示的原理,... -
matlab 渐变色
2020-02-27 16:04:50索引图像分别有两个分量:数据矩阵X和彩色映射矩阵map。colormap就是用来设定map的函数。 MATLAB中,每个figure都有(而且仅有)一个colormap,翻译过来就是色图。 colormap(map); %用MAP矩阵映射当前图形的色图。 ... -
基于Matlab系统的信号FFT频谱分析与显示-基于Matlab系统的信号FFT频谱分析与显示.rar
2019-08-12 19:27:53短时频谱分析,频谱图的伪彩色映射及显示.频谱图的类型有宽带和窄带两种,伪彩色显示的映射 可按需求设置.文中介绍了基于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:119.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() %设定图... -
数字图像处理matlab版第六章
2017-11-28 14:42:16图像处理工具箱将彩色图像当做索引图像或RGB...索引图像有两个分量,即整数的数据矩阵X和彩色映射矩阵map。 有时需要用较少的颜色来近似一幅索引图像,由函数imapprox实现。 RGB图像、索引图像和灰度图像之间转换。rgb_ -
matlab gif文件生成
2014-11-10 20:53:29frame包含RGB图像信息和颜色映射表 image只是RGB图像 indexed image: ...索引图像是一种把像素值直接作为...索引模式和灰度模式比较类似,它的每个象素点也可以有256种颜色容量,但它可以负载彩色。索引模式的图 -
Matlab绘图基础——colormap在数字图像处理及三维图形展示上的应用(分层设色)...
2019-09-28 16:14:16色图(color map)是MATLAB系统引入的概念。在MATLAB中,每个图形窗口只能有一个色图。... 色图代表的就是一个映射(彩色映射),它不是连续函数类型的映射,而是用一个有三列的矩阵来代表,这三列分别代表颜色的R、G... -
matlab-函数总结
2014-11-27 11:07:001.imadjust在数字图像处理中用于进行图像的灰度变换(调节灰度图像的亮度或彩色图像的颜色矩阵)。 J = imadjust(I) 将灰度图像 I 中的亮度值映射到 J 中的新值并使 1% 的数据是在低高强度和饱和,这增加了...
-
大数据下的CPS自适应路由服务
-
MySQL 性能优化(思路拓展及实操)
-
根据日期锁定,配合前边的config配置代码一起使用
-
人生游戏:康威的人生游戏-源码
-
【硬核】一线Python程序员实战经验分享(1)
-
ios快照测试用例期望:ios快照测试用例的预期匹配器-源码
-
物联网基础篇:快速玩转MQTT
-
MySQL 触发器
-
Qt 改变布局的页面边距
-
项目经理怎么进行绩效考核?
-
智能停车场云平台(附vue+SpringBoot前后端项目源码)
-
MySQL 事务和锁
-
Galera 高可用 MySQL 集群(PXC v5.6 + Ngin
-
c语言冒号的作用
-
教你如何正确选择过程控制调节阀?
-
基于Qt的LibVLC开发教程
-
Docker从入门到精通
-
【调试】Linux strace命令|跟踪进程系统调用和所接收的信号
-
Acrobat Pro DC2020安装教程+安装包
-
第四次CCF计算机软件能力认证 网络延时 (树形Dp)