- Chen
-
im=imread("7.jpg");
im=rgb2gray(im);
imm=double(im);
figure,imagesc(imm),colormap(gray)
hist(imm);figure(gcf);
im1=imm<=180;
figure,imagesc(im1),colormap(gray);
im2=im1.*imm;
figure,imagesc(im2),colormap(gray)
相关推荐
matlab colourmap怎么用
先用imshow或者image把图片显示出来,再用colormap设置图像的颜色;常用的配色有jet、hot、gray等等。用法:colormap xxx1.colormap(map)设置颜色图为矩阵map。如果map中的任何值在区间[0,1]之外,MATLAB返回错误:Colormap must have values in [0,1]。2.colormap("default")将当前的颜色图设置为默认的颜色图。3.cmap=colormap返回当前的颜色图。返回的值都在区间[0,1]内。 指定色图 在color目录中的M文件产生多种色图。每一个M文件将颜色图的大小作为一个变量。例如:colormap(hsv(128))创建一个hsv颜色图,具有128种颜色。如果用户不指定大小,MATLAB创建与当前色图大小相同的色图。 支持的色图 下面将举例描述MATLAB内建的色图。用户除了可以编程指定MATLAB内建的色图,还可以使用Plot Tools图形用具界面的Figure Properties面板中的Colormap菜单来选择一种色图。2023-07-04 16:03:203
matlab中colormap函数没有效果怎么解决?
matlab中colormap函数没有效果怎么解决?由于从2016a以后,colormap在bar()函数中的作用就弱化了。我们可以通过修改颜色来达到其目的,其"b" 蓝色;"r" 红色;"g" 绿色;"c" 青蓝色;"m" 品红色;"y" 黄色;"k" 黑色;"w" 白色。实现方法:A=[170,120,180,200,190,220]";B=[120,100,110,180,170,180]";C=[70,50,80,100,95,120]";x=1:1:6;bar(x,A,"r"),hold onbar(x,B,"g"),hold onbar(x,C,"y")legend("A","B","C","Location","northwest")运行后的效果。也可以自行调整颜色代号。2023-07-04 16:03:352
Matlab里的colormap什么意思
colormap 是用于控制曲面图的颜色。例如: colormap(gray) 输出一个灰色系的曲面图当然你也可以选择其他色系。比如:autumn spring summer winter jet(默认) bone colorcube cool flag 等等可以自己help colormap2023-07-04 16:05:221
MATLAB中colormap(gray)什么意思? dirac函数怎么用
colormap 是一种颜色映射,1-gray是颜色列表,函数的调用形式为:colormap(map)其中map是由m个三原色向量构成,相应的参数还有:hot暖色 cool冷色 jet hsv spring 等等。2023-07-04 16:05:311
MATLAB中colormap(gray)什么意思? dirac函数怎么用
展开全部colormap是一种颜色映射,1-gray是颜色列表,函数的调用形式为:colormap(map)其中map是由m个三原色向量构成,相应的参数还有:hot暖色cool冷色jethsvspring等等。2023-07-04 16:05:401
matlab中“colormap(map) map”为什么没被定义?
1、colormap函数:获取当前色图2、用法说明:colormap(map)函数设置或获取当前图像的色图。参量map为一个m×3的、元素在[0,1]之间的实数矩阵,每一行是定义一种颜色的一个RGB向量。颜色图的第k行定义第k种颜色,其中map(k,:)=[r(k) g(k) b(k)]定义红绿蓝的亮度。3、实例(1)源码(2)运行结果如下:a、输入surf(x,y,z),显示图如下2023-07-04 16:05:501
matlab colormap什么作用
imshow和image: 图像的显示是最为重要的,用imshow和image都可以显示图像,但是有一定的区别。用的不对,就会象我最初一样,老是出错,或者得到一张空白图或者是彩色图显示成颗粒状、反相黑白图等等。image是用来显示附标图像,即显示的图像上有x,y坐标轴的显示,可以看到图像的像素大小。imshow只是显示图像。它们都可以用subplot来定位图像显示的位置,用colormap来定义图像显示用的颜色查找表,比如用colormap(pink),可以把黑白图像显示成带粉红色的图像,很有趣的。在这里最值得注意的是要显示的图像像素矩阵的数据类型。显示真彩色图像像素三维矩阵X,如果是uint8 类型,要求矩阵的数据范围为0-255,如果是double型,则其数据范围为0-1,要不就会出错或者出现空白页。类型转换很简单,如果你原来的数值是 uint8,在运算中转换为double后,实际要显示的数值没有改变的话,只要用uint8(X)就可转换为uint8型,如果不想转换频繁,也可在显示时用X/255来转换为符合0-1double类型范围要求的数值显示。如果显示索引图像(二维矩阵),因为不同数据类型对应颜色查找表colormap的基点不同,会有所区别,如果不对的话,会出现很多意外的显示效果的。如果索引图像像素数值是double型,则它的取值范围为1-length(colormap),数值起点为1,则矩阵中数值为1的对应colormap中第一行数据,如果索引图像像素数值是uint8,则取值范围为0-255,数值起点为0,则矩阵中数值为0的对应colormap中第一行数据,所以索引图像这两个数据类型之间的转换,要考虑到+1或-1。直接用uint8或double转换则会查找移位,产生失真情况。uint16数据类型与uint8类似,取值范围为0-65536。2023-07-04 16:06:383
matlab colormap( )的问题
colormap是一种特殊的彩色显示方法。一般我们熟知的彩色表示是rgb三通道,需要24bit/像素。但为了压缩文件大小,比如我们规定只能只用512种颜色,把这512种颜色做成一个表(就是colormap),然后图像中每像素只需要9bit(0-511)就可以表示colormap中的某一种颜色了。因此,在读入这类文件的时候,要把colormap也读进来,就是上面程序中的map变量。在matlab中,设置colormap用的函数就是colormap。因此不适当的设置会使图片颜色异常。2023-07-04 16:06:461
matlab 的gui设计中figure属性中的colormap的值怎么确定?
可以设成colormap("default"),还有很多的选择如:autumn,bone ,colorcube,cool,copper,flag,gray ,hot ,hsv,jet,lines ,pink,prism,spring ,summer,white,winter!你可以自己试试!我的QQ3821013652023-07-04 16:06:532
colormap后图像调用
numpy和matplotlib。根据查询博客园得知,colormap后图像调用numpy和matplotlib,colormap是MATLAB里面用来设定和获取当前色图的函数。2023-07-04 16:07:181
matlab 如何自定义颜色
matlab画平面分布图时colorbar的设置是非常重要的,好的colorbar不仅使图像更美观,而且能够使人更容易捕捉图上传递的信息。用过matlab的同学都知道matlab默认的colormap是jet, 也就是你画完图后输入“colorbar” 它所显示出来的颜色。此外,matlab还自带了很多colormap, 如hsv, autumn, bone, colorcube等等。我们直接在命令窗口输入例如"colormap(hsv)" 就可以是平面图的颜色显示相应的colormap。下面教大家如何自定义自己想要的colormap,方法十分简单。以中国海的海面温度图为例:这是一张有m_pcolor画出来的图,之后colormap是matlab默认的jet(即直接输入命令‘colorbar"显示的colormap)。如果我们这是在命令窗口输入‘colormap(hsv)",则会变成下面这张图:如果我们这是想定义一种新的colormap,颜色从赤,橙,白,蓝,紫依次传递的话(如下图),应该怎么做?这就要用到matlab的colormap Editor了。如下图:点击figrue窗口的Edit-colormap出现colormap Editor窗口:我们可以利用这个窗口直接设置自定义colormap。colormap Editor中有是一个色标尺,色标尺下方有一些滑块,其中两端的矩形滑块是固定的,不能删除;而中间的矩形+三角形滑块是可以添加,删除,或滑动的。在色标尺低端单击鼠标左键添加,选择某块滑块按Deletei键删除,鼠标按住某个滑块可左右滑动。为了达到上述所说的“颜色从赤,橙,白,蓝,紫依次传递”的效果,我们先把中间的两个矩形+三角形滑块删除,如下图:由于上一张图colormap的两端都是红色,所以中间两块滑块删除后整个colormap只剩下红色一种颜色了。我们先从白色添加起,标尺上一共有64个格,为了左右平衡,我们先挑中间两格添加白色,具体步骤为:1、点击标尺中间色格的下方,出现滑块(如下图)。2、双击出现的滑块,出现颜色选择窗口,选择白色(如下图)。选完后图像就变成下面这样了:相同的方法选择“赤,橙,蓝,紫”,如下图:但这时我们发现colormap并不能如我们所愿,因为中间出现了黄色跟绿色。我们注意在colormap Editor中有个Interpolating colorspace选项,由于刚刚我们是以colormap(hsv)为根本的,所以这里的颜色插值方式是hsv的,我们这是应该选择RGB。如下图:MATLAB 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。2023-07-04 16:07:251
matlab--colormap里面矩阵每行每列表示什么意义
colormap的每行表示一种颜色,三个元素分别是其RGB(红绿蓝)分量。所有行就构成了颜色表,所谓的索引色,就是图像数据每个像素是一个整数,该整数对应于colormap中的一行,也就对应了那个颜色。2023-07-04 16:08:381
matlab 如何指定颜色变化colormap
matlab 指定颜色变化colormap 图片是三维矩阵的颜色指定的,所以只需修改对应的颜色就好了。以下以100*100像素的红图为例,将第4-6行,第4-6列的元素变成黄色。只需将第4-6行,第4-6列的绿色成分从0变成1即可以下为代码举例:>> R=ones(100);>> G=zeros(100);>> B=zeros(100);>> F(:,:,1)=R;F(:,:,2)=G;F(:,:,3)=B;>> imshow(F)%以上生成了红色图片,下面修改成黄色。>> F(4:6,4:6,2)=ones(3);>> imshow(F)2023-07-04 16:08:463
matlab gui的colormap问题
AlgorithmEach figure has its own Colormap property.colormap is an M-file that sets and gets this property.这是我刚刚在MATLAB HELP里面找到的有关于colormap的一句话。colormap属于图形窗口对象figure的属性,而axes只是figure的一个子对象,axes所具有的关于颜色的属性只有Color和ColorOrder,所以楼上说的是正确的2023-07-04 16:09:093
matlab如何把黑白图转colormap
那要看你的用imread函数读出的img是什么类型的数据如果得到的img是个三维的int8矩阵,表示img是用rgb三通道表示的矩阵需要转为灰度图再画图,并更改colormap,如下I = rgb2gray(img);imagesc(I);colormap(jet);如果得到的图像就是二维的int8,或者是二维的0到1之间的浮点数直接用imagesc(img);colormap(jet);2023-07-04 16:09:161
如何自定义MATLAB中colormap函数的颜色
通过以下语句设置颜色映射的最大最小值set(gca,"Clim",[minvmaxv]);最后[minvmaxv]是一个有两个值的向量,分别对应最小和最大值2023-07-04 16:09:241
MATLAB中有关 colormap与subplot的疑问
colormap每次改变所有图都会变的。 你去下载一个freezeColors.m参考资料给了你链接每次画完一个就用freezeColors然后你已经设定好的colormap就会保留。2023-07-04 16:09:323
matlab的colormap(jet)作图
mycmap = get(fig,"Colormap"); save("MyColormaps","mycmap") 这样就可以保存到一个数据文件了。用的时候直接调用 load("MyColormaps") colormap(mycmap)2023-07-04 16:09:381
如何在一个窗口采用两个色图矩阵
一个函数,叫freezeColors。可以把colormap给freeze住。这样,只要之前画图的时候设置好colormap,再用freezeColors将colormapfreeze住,再hold on 继续画下一个图就可以另外设置colormap了!freezeColors函数可以在http://www.mathworks.cn上面下载到。2023-07-04 16:09:581
colormap怎么不起作用?
colormap通常用来修饰三维图形,对于二维线图不起作用。2023-07-04 16:10:051
MATLAB中colormap下CData是什么意思
CData 是MATLAB里存放图像数据的一个矩阵 你可以使用get语句去得到他的句柄,然后做相应的图像处理http://www.ilovematlab.cn/thread-13305-1-1.html 很详细介绍。2023-07-04 16:10:131
matlab 为什么不显示图片??
是不是LZ的matlab哪出现问题了,我将上面的程序复制到我的matlab上可以显示图片,LZ可以把matlab关闭重新打开试试,以下是我运行出的图片(所用的是256*256的lena灰度图片):2023-07-04 16:10:232
在MATLAB中,画一条曲线,用什么命令?
在MATLAB中画一条曲线,可用plot命令,当然还可以用line命令。1、用plot命令。例如:绘制y=sin(x)+cos(x)figurex = linspace(0,10);y = sin(x)+cos(x);plot(x,y)2、用line命令figurex = linspace(0,10);y = sin(x)+cos(x);line(x,y)运行上述两组代码后的结果2023-07-04 16:10:442
请教matlab里如何不同的子图设置不同的colormap
请教matlab里如何不同的子图设置不同的colormap不好意思,colormap好像在同一个figure里只能为一种,因此无法在两个axes里设置不同的colormap。2023-07-04 16:11:111
matlab中Colormap Editor中Color data min的值怎么通过命令来改变?
通过以下语句设置颜色映射的最大最小值,set(gca,"Clim",[minv maxv]);最后[minv maxv]是一个有两个值的向量,分别对应最小和最大值MATLAB是一个包含大量计算算法的集合。其拥有600多个工程中要用到的数学运算函数,可以方便的实现用户所需的各种计算功能。函数中所使用的算法都是科研和工程计算中的最新研究成果,而且经过了各种优化和容错处理。在通常情况下,可以用它来代替底层编程语言,如C和C++ 。在计算要求相同的情况下,使用MATLAB的编程工作量会大大减少。MATLAB的这些函数集包括从最简单最基本的函数到诸如矩阵,特征向量、快速傅立叶变换的复杂函数。函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅立叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数学运算、多维数组操作以及建模动态仿真等。20世纪70年代,美国新墨西哥大学计算机科学系主任Cleve Moler为了减轻学生编程的负担,用FORTRAN编写了最早的MATLAB。1984年由Little、Moler、Steve Bangert合作成立了的MathWorks公司正式把MATLAB推向市场。到20世纪90年代,MATLAB已成为国际控制界的标准计算软件。MATLAB:统一了用于一维、二维与三维数值积分的函数并提升了基本数学和内插函数的性能MATLAB Compiler:可以下载 MATLAB Compiler Runtime (MCR),简化编译后的程序和组件的分发Image Processing Toolbox:通过亮度指标优化进行自动图像配准Statistics Toolbox:增强了使用线性、广义线性和非线性回归进行拟合、预测和绘图的界面System Identification Toolbox:识别连续时间传递函数2023-07-04 16:11:191
matlab作图时调colormap editor 的设置可以保存吗?
mycmap = get(fig,"Colormap");save("MyColormaps","mycmap")这样就可以保存到一个数据文件了。用的时候直接调用load("MyColormaps") colormap(mycmap)2023-07-04 16:11:341
MATLAB中的colormap有个bone方式,是将颜色从黑渐变到白,请问有办法反过来从白到黑吗?
>>p = imread("000.jpg");gray = rgb2gray(p);%imshow(gray); colormap bone; % 正常显示rp = 255 - gray;imshow(rp);colormap bone; % 反色显示2023-07-04 16:11:431
在MATLAB定义2*2的元胞数组,放入相应的数据
MATLAB图像处理工具箱支持四种基本图像类型:索引图像、灰度图像、二进制图像和RGB图像。MATLAB直接从图像文件中读取的图像为RGB图像。它存储在三维数组中。这个三维数组有三个面,依次对应于红(Red)、绿(Green)、蓝(Blue)三种颜色,而面中的数据则分别是这三种颜色的强度值,面中的元素对应于图像中的像素点。设所得矩阵为X三维矩阵(256,256,3) ,X(:,:,1)代表红颜色的2维矩阵 X(:,:,2)代表绿颜色的2维矩阵, X(:,:,3)代表兰颜色的2维矩阵。[X, map]=imread("34.bmp");r=double(X(:,:,1)); %r是256 x 256的红色信息矩阵g=double(X(:,:,2)); %g是256 x 256的绿色信息矩阵b=double(X(:,:,3)); %b是256 x 256的兰色信息矩阵索引图像数据包括图像矩阵X与颜色图数组map,其中颜色图map是按图像中颜色值进行排序后的数组。对于每个像素,图像矩阵X包含一个值,这个值就是颜色图数组map中的索引。颜色图map为m×3双精度矩阵,各行分别指定红、绿、蓝(R、G、B)单色值,map=[RGB],R、G、B为值域为[0,1]的实数值,m为索引图像包含的像素个数。对于相同的数据,采用uint8格式比双精度格式节省内存空间,从而更经济。在MATLAB中如果索引图像的颜色图小于256行,则它的图像矩阵以uint8格式存储,否则以双精度格式存储。一:imread:从图像文件夹中读取图像。A = imread(FILENAME,FMT) 读取图像到A,如果文件是包含一灰度图像,A是一二维矩阵,如果文件是包含一真彩色图像(RGB),A是一三维矩阵(M-by-N-by-3)。FILENAME :图像文件名;FMT:图像文件格式;文件必须在当前目录下,或在Matlab的一路径上。如果 imread不能够找到一名称为FILENAME的文件,那么它将找一名为FILENAME.FMT的文件[X,MAP] = imread(FILENAME,FMT) 把图像FILENAME读入与它相关的图像色彩信息写入MAP,图像色彩信息值在范围[0,1]中自动地重新调整. [...] = imread(FILENAME)这种方式是试图得到文件的格式从文件所包含的信息。 [...] = imread(URL,...)从一Internet URL上读图像 URL 必须包含协议(即: "").1.2数据类型: TIFF的特殊语法: [...] = imread(...,IDX) 从很多图像TIFF文件中读一个图像;IDX是一个整数值,它显示了所读图像在文件中的顺序,例如:如果 IDX是 3, imread将读文件中的第三个图像。 如果省略了这个变量, imread将读文件中的第一个图像. IMREAD支持的图像文件格式:JPEG TIFF GIF BMP PNG HDF PCX XWD ICO CUR RAS PBM PGM PPM 相关信息也可在Matlab中查看: imfinfo, imwrite, imformats, fread,二:imwrite输出图像imwrite(A,FILENAME,FMT) 把图像 A 写入图像文件 FILENAME.imwrite(X,MAP,FILENAME,FMT) 把 X和它的相关色彩信息MAP写入FILENAME. imwrite(...,FILENAME) 把图像 写入图像文件FILENAME,并推测可能的格式用来做filename的扩展名。扩展名必须是FMT中一合法名.imwrite(...,PARAM1,VAL1,PARAM2,VAL2,...) 不同的参数控制输出文件的各种不同特征。参数要是当前所支持的HDF,JPEG, TIFF, PNG, PBM, PGM, 和PPM 文件三:image 显示图像.image(C) 把矩阵 C 转成一图像. C 可以是一MxN 或 MxNx3维的矩阵,且可以是包含 double, uint8,或 uint16 数据.image是用来显示附标图像,即显示的图像上有x,y坐标轴的显示,可以看到图像的像素大小。但可以加上axis off命令即可把坐标去掉。imshow只是显示图像。用colormap来定义图像显示用的颜色查找表,比如用colormap(pink),可以把黑白图像显示成带粉红色的图像。图像像素矩阵的数据类型:(1)显示真彩色图像像素三维矩阵X,如果是uint8类型,要求矩阵的数据范围为0-255,(2)如果是double型,则其数据范围为0-1,要不就会出错或者出现空白页。类型转换:(1)如果你原来的数值是uint8,在运算中转换为double后,实际要显示的数值没有改变的话,只要用uint8(X)就可转换为uint8型,如果不想转换频繁,也可在显示时用X/255来转换为符合0-1double类型范围要求的数值显示。(2)如果显示索引图像(二维矩阵),如果索引图像像素数值是double型,则它的取值范围为1-length(colormap),数值起点为1,则矩阵中数值为1的对应colormap中第一行数据,如果索引图像像素数值是uint8,则取值范围为0-255,数值起点为0,则矩阵中数值为0的对应colormap中第一行数据,所以索引图像这两个数据类型之间的转换,要考虑到+1或-1。直接用uint8或double转换则会查找移位,产生失真情况。uint16数据类型与uint8类似,取值范围为0-65536。四:其它常用图像操作:图像显示于屏幕有imshow( ), image( )函数;图像进行裁剪imcrop( );图像的插值缩放imresize( )函数实现;旋转用 imrotate( )实现。五:具体的操作下面通过运用图像处理工具箱中的有关函数对下图(nice.bmp)进行一些变换。见后面的transfer.m内容!变换前图片:(nice.bmp)变换后所得图片:newpic.bmp例,在电脑Fpicture下有一彩色图像文件nice.bmp,则可由下述语句读取:下面是对图像 nice.bmp以y轴为对称轴所做的一个对称变换。% Transfer1.mclear allfigure[x,map]=imread("F:picture ice.bmp");% 所得x为一375x420x3的矩阵[w1,w2,w3]=size(x); % 375 X 420w22=floor(w2/2);image(x); %显示出图像title("HELLO! @This is the first pose of me")%则显示出图像nice.bmpaxis off; % 去掉图像中的坐标colormap(map); % colormap(),图像查找表函数。函数结构为colormap(map),设置当前的图像查找表到map。imwrite(x,map,"nice.bmp")for i=1:w1for j=1:w22 % 图像关于y轴对折t=x(i,j);x(i,j)=x(i,w2-j+1);x(i,w2-j+1)=t;endendfigureimage(x); axis offtitle("HELLO!!@@ Can you find any difference of my two picture! ") colormap(map);imwrite(x,map,"newpic.bmp") %把x写到nepic2.bmpz中去% Transfer1.m文件中包含了最基本也是最常用的对读像处理的命令。在对图像处理的整个过程中,实质上是对[x,map]=2023-07-04 16:12:252
southmap变颜色
先用map=colormap得到颜色矩阵的值。修改map后用colormap(map)设定新的颜色矩阵值。用选区工具把你要的每个地区勾选出来然后进行色彩改变就行了,很简单的,就是勾先区域费时些。2023-07-04 16:12:311
Colormap图中怎么会有这么多‘诡异’的阶次线
一般常用的声学采集仪器如lms、bbm等都可以采集阶次噪声的,可以拉出各阶次噪声的曲线或是从colormap图上直接读取~ 从overall是很难判断到底是哪个阶次是主要贡献的,如2000rpm有个peak2023-07-04 16:12:391
matlab 如何设置colorbar的值,使得全部表现为红色渐变。不要其他的颜色?
这个是通过给colormap赋值实现的,给你举个例子clear;clc;Len=64;[X,Y]=meshgrid(-2:.2:2,-2:.2:2);Z=X.*exp(-X.^2-Y.^2);surf(X,Y,Z);cb=[ [linspace(0,1,Len)]",zeros(Len,1),ones(Len,1)];colorbar;set(gcf,"colormap",cb);当然,数组大小Len可以由你指定;2023-07-04 16:12:482
如何将tecplot中的colormap调成水平的
云图菜单下的legend可以设置。2023-07-04 16:12:561
matlab伯德图改颜色
matlab画平面分布图时colorbar的设置是非常重要的,好的colorbar不仅使图像更美观,而且能够使人更容易捕捉图上传递的信息。用过matlab的同学都知道matlab默认的colormap是jet, 也就是你画完图后输入“colorbar” 它所显示出来的颜色。此外,matlab还自带了很多colormap, 如hsv, autumn, bone, colorcube等等。我们直接在命令窗口输入例如"colormap(hsv)" 就可以是平面图的颜色显示相应的colormap2023-07-04 16:13:052
ansoft/maxwell画出来的场量云图,旁边的colormap能不能变小一点啊?
点住colormap的右下角边缘可以拖大拖小2023-07-04 16:13:136
matlab中画多张图如何使用同一的colorbar
matlab中画多张图使用同一的colorbar是有条件的,即如果两图的函数是同一个范围,可以用caxis限定。caxis([色标的最小值,色标的最大值]) 如果没有用caxis限定,那就只能保存当前的colormap完成连续多图作画。参考信息:图一:mapsave=colormap;图二:colormap(mapsave)2023-07-04 16:13:293
在16色模式下显示256色及全彩色
在编写有关图像显示的软件时,有时为了软件的兼容性和通用性,不得不采用VGA标准的图形模式,这就涉及到如何在16色图形模式下显示256色及全彩色图像的问题。解决这一问题有两种方法。一种是采用色彩近似的方法,即根据需要显示的全部颜色,经过寻优来选择16种代表性的颜色,每一种颜色都用这16种颜色中最接近的一种来代替。《计算机世界月刊》的《用集群方法进行颜色选择》一文详细描述了该方法。但事实上,该方法仅对于某些理想的情况适用,而对于更普遍的情况,该方法无论从运算速度还是从处理效果来讲,都不可能令人感到满意,因而不宜在实际中运用。另一种方法是被众多商品化软件所广泛采用的抖动技术,其原理是利用多种可见颜色的组合来模拟一种不可见的颜色。目前,关于彩色图像抖动算法的资料不多。笔者通过对灰度图像处理算法及Windows环境下一些图像处理软件的剖析,得出了抖动算法的一般原理和实现方法。 一、抖动算法原理 我们知道,在256色及全彩色图像中,每一种颜色均由R、G、B三个颜色分量组成,而每一个分量又一般由一个字节表示。这样,每一个颜色分量可有256级亮度变化。 本算法的关键在于引入亮度矩阵的概念,即采用一个16×16的矩阵来表示每一个颜色分量的亮度值,不同亮度值对应着矩阵的不同排列。矩阵全为0时对应亮度0,全为255时对应亮度255。 当亮度值为L时,亮度矩阵中将有[L255×256]个255及[(1-L255)×256]个0,此时,矩阵的平均亮度值为 L"={[L/255×256]×255+[(1-L/255)×256]×0}/256=L 这就是说,矩阵的平均亮度正好为颜色分量的实际亮度。 假设某一颜色C的R、G、B三个颜色分量的亮度矩阵分别为: @@01A04600.GIF;公式一@@ 其中rmn、gmn、bmn(0≤m, n≤15)取值为0或15。 将上述三个矩阵作叠加运算,得 @@01A04601.GIF;公式二@@ 其中的Cmn为表1中由rmn、gmn、bmn所确定的颜色值。表1为VGA16色图形模式下的标准调色板(并非设置模式后的缺省调色板)。显然,Cmn只可能为0及9~15之中的一个。由此方法得到的矩阵Mc即可视为颜色C的模拟矩阵。由于颜色C的R、G、B三个颜色分量与亮度矩阵MR、MG、MB有着相等的亮度值,所以矩阵MC从视觉效果上来讲能很好地模拟颜色C。但在显示时,不可能用整个这样的矩阵来替代一个像素点,那将导致整幅图像长宽均变成原图的16倍。实际的做法是:若该像素点距离图像原点的座标为(X,Y),则令: m=Y mod 16 n=X mod 16 (1) 此时,可用MC中的颜色Cmn来显示该像素。 @@01A04602.GIF;表1 16色图形模式标准调色板@@ 二、算法实现 1.亮度矩阵的表示 算法中要用到257个16×16的亮度矩阵,如果对每一个都分别表示的话,将占用很大的内存空间(大于64K)。由于亮度矩阵的排列及增长均有一定的规律性,我们只需要采用一个16×16的矩阵即可。该矩阵中256个元素的取值分别为0~255,按一定规律排列。令其为: @@01A04603.GIF;公式三@@ 亮度为L时的矩阵可由H变化而来,其中 @@01A04604.GIF;公式四@@ 2.颜色查找表算法中只用到了颜色0及9~15,我们可以忽略其他项并将有用部分表示为一个三维数组形式的颜色查找表,如表2所示。此时,r, g, b值作为数组下标,取值为0或1。 与之相应,我们将(2)式变为 @@01A04605.GIF;公式三@@ 3.每一像素的显示步骤 ①对256色图像,由颜色索引值查颜色映射表获取R、G、B值;对全彩色图像,直接读取R、G、B值; ②根据像素座标(X,Y),由(1)式求得m, n; ③根据R、G、B值,由(3)式求得rmn、gmn、bmn; ④由rmn、gmn、bmn查表2得颜色值C; ⑤将像素以颜色C显示于(X,Y)处。 本文所附程序用于在16色图形模式下显示256色及全彩色BitMap图像。 关于BitMap图像的格式及读取方法,许多资料均有介绍,这里不再赘述。 该程序由Turbo C 2.0及Borland C 3.1编译,运行通过。运行方法为: show文件名.BMP @@01A04606.GIF;公式三表2 颜色查找表@@ 事实证明,采用本文所描述的算法,可以得到与许多商品化软件相似的处理速度和处理效果。 源程序: #include #include #include #include #define NoError 0 #define ErrorFileOpen1 #define ErrorFileType 2 #define ErrorImageColor 3 typedef struct tagBITMAPFILEHEADER { unsigned int bfType; unsigned longbfSize; unsigned intbfReserved1; unsigned intbfReserved2; unsigned longbfoffBits; } BITMAPFILEHEADER; typedef struct tagBITMAPINFOHEADER { unsigned longbiSize; unsigned long biWidth; unsigned longbiHeight; unsigned intbiPlanes; unsigned intbiBitCount; unsigned long biCompression; unsigned long biSizeImage; unsigned long biXPelsPerMeter; unsigned long biYPelsPerMeter; unsigned long biClrUsed; unsigned long biClrImportant; } BITMAPINFOHEADER; typedef struct tagRGBQUAD { unsigned char rgbBlue; unsigned char rgbGreen; unsigned charrgbRed; unsigned char rgbReserved; } RGBQUAD; void main(int argc,char *argv[]); int ShowBmp(char *FileName); int GetColor(unsigned char R,unsigned char G, unsigned char B,int X,int Y); void SetVideoMode(unsigned char Mode); void SetPalReg(unsigned char *palReg); void SetDacReg(unsigned char *DacReg, int Color, int Count); void PutPixel(int X, int Y,unsigned char Color); unsigned char PalReg[17]= { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0}; unsigned char StandardPal[48]= { 0, 0, 0, 32, 0, 0, 0,32, 0, 32,32, 0, 0, 0,32, 32, 0,32, 0,32,32, 32,32, 32, 48,48,48, 63, 0, 0, 0,63, 0, 63,63, 0, 0, 0,63, 63, 0,63, 0,63,63, 63,6 3,63,}; unsigned char LightnessMatrix [16][16]= { { 0,235,59,219,15,231,55,215,2,232,56,217,12,229,52,213}, {128,64,187,123,143,79,183,119,130,66,184,120,140,76,180,116}, {33,192,16,251,47,207,31,247,34,194,18,248,44,204,28,244}, {161,97,144,80,175,111,159,95,162,98,146,82,172,108,156,92}, {8,225,48,208,5,239,63,223,10,226,50,210,6,236,60,220}, {136,72,176,112,133,69,191,127,138,74,178,114,134,70,188,124}, {41,200,24,240,36,197,20,255,42,202,26,242,38,198,22,252}, {169,105,152,88,164,100,148,84,170,106,154,90,166,102,150,86}, {3,233,57,216,13,228,53,212,1,234,58,218,14,230,54,214}, {131,67,185,121,141,77,181,117,129,65,186,122,142,78,182,118}, {35,195,19,249,45,205,29,245,32,193,17,250,46,206,30,246}, {163,99,147,83,173,109,157,93,160,96,145,81,174,110,158,94}, {11,227,51,211,7,237,61,221,9,224,49,209,4,238,62,222}, {139,75,179,115,135,71,189,125,137,73,177,113,132,68,190,126}, {43,203,27,243,39,199,23,253,40,201,25,241,37,196,21,254}, {171,107,155,91,167,103,151,87,168,104,153,89,165,101,149,85}, }; unsigned char ColorTable[2][2][2]= { {{0,12},{10,14}},{{9,13},{11,15}}}; unsigned char ColorMap[256][3]; void main (int argc, char *argv[]) { if(argc!=2) { printf("Usage: SHOW Filename.BMP "); exit(1); } ShowBmp(argv[1]); } int ShowBmp(char *FileName) { FILE *Fp; BITMAPFILEHEADER FileHead; BITMAPINFOHEADER InfoHead; RGBQUAD RGB; int N, W,Y,X,C,Color; unsigned char Buffer[4096]; if (!(Fp=fopen(FileName,"rb"))) return(ErrorFileOpen); fread(&FileHead,siazeof(BITMAPFILEHEADER),1,Fp); if(FileHead.bfType!="BM") return(ErrorFileType); fread(&InfoHead,sizeof(BITMAPFILEHEADER),1,Fp); if(InfoHead.biBitcount!=8 && InfoHead.biBitCount!=24) { fclose(Fp); return(ErrorImageColor); } SetVideoMode(0x12); SetPalReg(PalReg); SetDacReg(StandardPa1,0,16); if(InfoHead.biBitcount==8) { for (N=0;N<256;N++) { fread(&RGB, sizeof(RGBQUAD),1,Fp); ColorMap[N][0]=RGB.rgbRed; ColorMap[N][1]=RGB.rgbGreen; ColorMap[N][2]=RGB.rgbBlue; } W=(InfoHead.biwidth+3)/4*4; for(Y=InfoHead.biHeight-1;Y>=480;Y--) fread(Buffer,sizeof(unsigned char),W,Fp); for(;Y>0;Y--) { fread(Buffer, sizeof(unsigned char),w,FP); for (X=0;X<infohead.biwidth {<br="" x C=Buffer[X]; Color=GetColor(ColorMap[C][0],ColorMap[C][1],ColorMap[C][2],X,Y); PutPixel (X,Y,color); } } } else { W=(infoHead.biWidth*3+3)/4*4; for(Y=InfoHead.biHeight-1;Y>639;Y--) fread(Buffer,sizeof(unsigned char),W,Fp); for(;Y>=0;Y--) { fread(Buffer,sizeof(unsigned char),W,Fp); for (X=0;X<infohead.biwidth {<br="" x C=X*3; Color=GetColor(Buffer[C+2],Buffer[C+1],Buffer[C],X,Y); PutPixel(X,Y,color); } } } getch(); fclose(Fp); SetVideoMode(0x03); return(NoError); } int GetColor(unsigned char R, unsigned char G,unsigned char B, int X,int Y){ unsigned int L=LightnessMatrix[Y & 0x0F][X & 0x0F]; return(colorTable[( unsigned int)R*256/255>L][( unsigned int)G*256/255>L][( unsigned int)B*256/255>L]);} void SetVideoMode(unsigned char Mode){ -H=0x00; -AL=Mode; geninterrupt(0x10); } voidSetPalReg(unsigned char *PalReg){ -ES=FP-SEG((unsigned char far*)PalReg); -DX=FP-OFF((unsigned char far*)PalReg; -AX=0x1002; geninterrupt(0x10); } void SetDacReg(unsigned char *DacReg,int Color,int Count){ -ES=FP-SEG((unsigned char far*)DacReg); -DX=FP-OFF((unsigned char far*)DacReg); -AX=0x1012; -BX=Color; -CX=Count; geninterrupt(0x10); } void PutPixel(int X, int Y, unsigned charColor){ -AH=0x0C; -AL=Color; -CX=X; -DX=Y; geninterrupt(0x10); } }2023-07-04 16:13:362
请问matlab的colourbar 怎么设置间隔不均匀的,而且每个颜色不是渐变的,谢谢!
%创造colormap,第一个颜色是蓝色,下面十个颜色是渐变的橙色aa = othercolor("BuOr_8",20);aa(1:8,:) = [];aa(2,:) = [];然后就按照thukd35的方法将矩阵的值设置成你想要画的几个间隔%将原始数据处理成11个色bcc_dis(find(bcc_dis<0)) = -0.5;bcc_dis(find(bcc_dis>=0&bcc_dis<0.1)) = 0.5;bcc_dis(find(bcc_dis>=0.1&bcc_dis<0.2)) =1.5;bcc_dis(find(bcc_dis>=0.2&bcc_dis<0.3)) = 2.5;bcc_dis(find(bcc_dis>=0.3&bcc_dis<0.4)) = 3.5;bcc_dis(find(bcc_dis>=0.4&bcc_dis<0.5)) = 4.5;bcc_dis(find(bcc_dis>=0.5&bcc_dis<0.6)) = 5.5;bcc_dis(find(bcc_dis>=0.6&bcc_dis<0.7)) = 6.5;bcc_dis(find(bcc_dis>=0.7&bcc_dis<0.8)) = 7.5;bcc_dis(find(bcc_dis>=0.8&bcc_dis<0.9)) = 8.5;bcc_dis(find(bcc_dis>=0.9&bcc_dis<1)) = 9.5;在这里为了方便起见,所有小于0的数设置成-0.5,0-0.1之间的设置成0.5,确定区间画颜色更明了一些最后就是更改colorbar的tick%修改colorbarcolormap(aa)h = colorbar;caxis([-1,10]);h.Ticks = -1:10;h.TickLabels = [-1,0,.1,.2,.3,.4,.5,.6,.7,.8,.9,1];set(h,"location","southoutside")这样设置就保证了所有小于0的数都变成了-0.5,且落在区间[-1,0],其标签对应了-1-0;所有0-0.1之间的数变成了0.5,落在区间[0,1],其标签对应了0-0.12023-07-04 16:14:021
colormap颜色栏取值范围
colormap颜色栏取值范围在[0,1]内。根据查询相关公开信息:其中map中的值取值范围在[0,1]内,超出这个范围将会报错。2023-07-04 16:14:291
matlab中colormap(1-gray)是什么意思的
colormap 是一种颜色映射,1-gray是颜色列表,函数的调用形式为:colormap(map)其中map是由m个三原色向量构成,相应的参数还有:hot暖色 cool冷色 jet hsv spring 等等。2023-07-04 16:14:381
pythoncolormap配置气泡图颜色
pythoncolormap配置气泡图颜色如下:1、从.xlsx文件中读出制图所要的的数据。2、使用matplotlib库绘图并保存。3、输入对应的代码即可。2023-07-04 16:14:451
如何自定义MATLAB中colormap函数的颜色
map = [0, 0, 0.30, 0, 0.40, 0, 0.50, 0, 0.60, 0, 0.80, 0, 1.0];colormap(map);这样用RGB定义多组颜色值。2023-07-04 16:14:521
如何自定义MATLAB中colormap函数的颜色
matlab 指定颜色变化colormap 图片是三维矩阵的颜色指定的,所以只需修改对应的颜色就好了。以下以100*100像素的红图为例,将第4-6行,第4-6列的元素变成黄色。只需将第4-6行,第4-6列的绿色成分从0变成1即可以下为代码举例:>> R=ones(100);>> G=zeros(100);>> B=zeros(100);>> F(:,:,1)=R;F(:,:,2)=G;F(:,:,3)=B;>> imshow(F)%以上生成了红色图片,下面修改成黄色。>> F(4:6,4:6,2)=ones(3);>> imshow(F)2023-07-04 16:15:011
colormap图像是黄色怎么回事
matlab 指定颜色变化colormap图片是三维矩阵的颜色指定的,所以只需修改对应的颜色就好了。以下以100*100像素的红图为例,将第4-6行,第4-6列的元素变成黄色。只需将第4-6行,第4-6列的绿色成分从0变成1即可以下为代码举例:>> R=ones(100);>> G=zeros(100);>> B=zeros(100);>> F(:,:,1)=R;F(:,:,2)=G;F(:,:,3)=B;>> imshow(F)%以上生成了红色图片,下面修改成黄色。>> F(4:6,4:6,2)=ones(3);>> imshow(F)2023-07-04 16:15:081
matlab 如何自定义颜色
matlab画平面分布图时colorbar的设置是非常重要的,好的colorbar不仅使图像更美观,而且能够使人更容易捕捉图上传递的信息。用过matlab的同学都知道matlab默认的colormap是jet,也就是你画完图后输入“colorbar”它所显示出来的颜色。此外,matlab还自带了很多colormap,如hsv,autumn,bone,colorcube等等。我们直接在命令窗口输入例如"colormap(hsv)"就可以是平面图的颜色显示相应的colormap。下面教大家如何自定义自己想要的colormap,方法十分简单。以中国海的海面温度图为例:这是一张有m_pcolor画出来的图,之后colormap是matlab默认的jet(即直接输入命令‘colorbar"显示的colormap)。如果我们这是在命令窗口输入‘colormap(hsv)",则会变成下面这张图:如果我们这是想定义一种新的colormap,颜色从赤,橙,白,蓝,紫依次传递的话(如下图),应该怎么做?这就要用到matlab的colormapEditor了。如下图:点击figrue窗口的Edit-colormap出现colormapEditor窗口:我们可以利用这个窗口直接设置自定义colormap。colormapEditor中有是一个色标尺,色标尺下方有一些滑块,其中两端的矩形滑块是固定的,不能删除;而中间的矩形+三角形滑块是可以添加,删除,或滑动的。在色标尺低端单击鼠标左键添加,选择某块滑块按Deletei键删除,鼠标按住某个滑块可左右滑动。为了达到上述所说的“颜色从赤,橙,白,蓝,紫依次传递”的效果,我们先把中间的两个矩形+三角形滑块删除,如下图:由于上一张图colormap的两端都是红色,所以中间两块滑块删除后整个colormap只剩下红色一种颜色了。我们先从白色添加起,标尺上一共有64个格,为了左右平衡,我们先挑中间两格添加白色,具体步骤为:1、点击标尺中间色格的下方,出现滑块(如下图)。2、双击出现的滑块,出现颜色选择窗口,选择白色(如下图)。选完后图像就变成下面这样了:相同的方法选择“赤,橙,蓝,紫”,如下图:但这时我们发现colormap并不能如我们所愿,因为中间出现了黄色跟绿色。我们注意在colormapEditor中有个Interpolatingcolorspace选项,由于刚刚我们是以colormap(hsv)为根本的,所以这里的颜色插值方式是hsv的,我们这是应该选择RGB。如下图:2023-07-04 16:15:171
matlabmapshow改变颜色
1.色图颜色调配命令在MATLAB中,控制及实现颜色调配的主要命令为colormap,它的使用格式如下:调用格式 说明colormap([R G B]) 设置当前色图为由矩阵[R G B]所调配出的颜色colormap("default") 设置当前色图为默认色cmap = colormap 获取当前色的调配矩阵2023-07-04 16:15:231
fluent云图左侧colormap变成黑白
在图的图的标题栏上右键,先在page setup中选择color,然后选copy to clipboard 就可以了 ,不用截图。2023-07-04 16:15:301
Matlab里用colormap画图最后都没法显示图片?
是不是LZ的matlab哪出现问题了,我将上面的程序复制到我的matlab上可以显示图片,LZ可以把matlab关闭重新打开试试,以下是我运行出的图片(所用的是256*256的lena灰度图片):2023-07-04 16:15:491
matlab中 Colormap Editor中的Color data min的值怎么通过命令来改变?如图所示
通过以下语句设置颜色映射的最大最小值set(gca,"Clim",[minvmaxv]);最后[minvmaxv]是一个有两个值的向量,分别对应最小和最大值2023-07-04 16:16:091
matlab中的alpha是什么意思
alpha函数,设置在当前坐标轴上设置对象的透明度属性。 使用格式: alpha(v) v可取0~1之间的数值。0为完全透明,1为不透明,0.5为半透明。 举例说明: subplot(1,3,1),surf(peaks),alpha(0),title("完全透明"),colormap(summer); subplot(1,3,2),surf(peaks),alpha(0.5),title("半透明"),colormap(summer); subplot(1,3,3),surf(peaks),alpha(1),title("完全不透明"),colormap(summer);2023-07-04 16:16:171
Matlab 中怎么在同一张图中使用不同的颜色
可以采用holdon(等待)命令,也可这样:plot(x1,y;x2,y)。楼主试下,想学matlab的话建议看下《matlab科学与计算》这本书,也可在百度文库里直接搜索“matlab概论”,祝楼主好运。2023-07-04 16:16:252