Ⅰ imagesc不支持复数值
imagesc不支持复数值。
绝对值一个数在数轴上所对应点到原点的距离。而这个数轴上的数”很明显是实数。复数由实数和虚数共同组成,虚数是没有绝对值的,从而导致复数也不能有绝对值,更不能把它的模叫为绝对值。
1、反正切函数y=arctanx的值域是(-π/2,π/2),这是定义里的内容。
2、对于复数z=x+yi,x,y∈R,θ=arctan(y/x)只能是一个辐角,不一定是主值,因为主值的范围是[0,2π),与反正切的值域不一致。
3、若z在第一象限,则Arg(z)=arctan(y/x);若z在第二象限,则π/2<Arg(z)<π,而此时 -π/2<arctan(y/x)<0;从而Arg(z)=π+arctan(y/x)。
deltagx:
-0.1:0.01:0.1imagesc(detalgy,detalgx,pho1_rece1);用image系列绘图的坐标和普通绘图命令得到的坐标在纵轴方向是相反的,可以用axis命令手动设置坐标格式。axis xy就是普通的坐标格式。axis ij就是image系列的坐标格式。
imagesc缩放数据并显示图像对象。使用方法编辑本段回目录 imagesc函数放大图像数据以覆盖当前色图的整个范围,并显示图片。
Ⅱ matlab 中imagesc的用法
这个命令其实是整个的矩阵按照imagesc(x,y,C) ,其中的xy(行和列)坐标系画出来的,至于坐标是如何标注的,这要看你如何定义你的矩阵了!~一般程序是有两个for循环做成的矩阵时,格式是内循环对应的是Y坐标,外循环生成的数据则是X坐标!
例如下面是我做的程序:
detalgx=-0.1:0.01:0.1;
detalgy=-0.2:0.01:0.2;
for X=1:1:length(detalgx)
Dx=detalgx(:,X);
for Y=1:1:length(detalgy)
Dy=detalgy(:,Y);
% M=1*(1+Dy);
g=1;
N=3;
M=100;
v1=v*(1+Dx);
v2=v*(1+Dy);
v3=v;
g1=gm;
g2=gm;
g3=gm;
alpha=(v*sqrt(omega1^2-omega^2+N*omega^2))/sqrt(N*v^2+M*g^2);
t=pi/alpha;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[pho_t]=Fidelityexpfig3(t,g1,g2,g3,omega1,omega2,omega3,v1,v2,v3);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
C1_t=sqrt(pho_t(1,1));
pho1_rece1(X,Y)=(cos(theta/2))^4+pho_t(1,1)*(sin(theta/2))^4+...
(C1_t+conj(C1_t)+pho_t(3,3)+pho_t(4,4)+pho_t(5,5)+...
pho_t(6,6)+pho_t(7,7)+pho_t(8,8)+pho_t(9,9)+...
pho_t(10,10))*cos(theta/2)^2*sin(theta/2)^2;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
C7_t=pho_t(7,1)/sqrt(pho_t(1,1));
pho2_rece1(X,Y)=(cos(theta/2))^4+pho_t(7,7)*(sin(theta/2))^4+...
(C7_t+conj(C7_t)+pho_t(1,1)+pho_t(2,2)+pho_t(3,3)+...
pho_t(4,4)+pho_t(5,5)+pho_t(8,8)+pho_t(9,9)+...
pho_t(10,10))*cos(theta/2)^2*sin(theta/2)^2;
end
end
set(gca,'ydir','normal')
figure;
subplot(2,2,1);
%生成的图像的水平轴对应detalgy=-0.2:0.01:0.2;
%生成的图像的竖直轴对应detalgx=-0.1:0.01:0.1
imagesc(detalgy,detalgx,pho1_rece1);
用image系列绘图的坐标和普通绘图命令得到的坐标在纵轴方向是相反的,可以用axis命令手动设置坐标格式。
axis xy就是普通的坐标格式。
axis ij就是image系列的坐标格式。
imagesc
缩放数据并显示图像对象。
使用方法编辑本段回目录 imagesc函数放大图像数据以覆盖当前色图的整个范围,并显示图片。
1.imagesc(C)
将输入变量C显示为图像。C中的每一个元素对应着图像中的一个矩形局域。C中的元素值的对应与色图中的索引,色图决定了每一个补片的颜色。
2.imagesc(x,y,C)
将输入变量C显示为图像,并且使用x和y变量确定x轴和y轴的边界。如果x(1) > x(2) 或 y(1) > y(2),图像是左右或上下反转的。 《Simulink与信号处理》
3.imagesc(...,clims)
归一化C的值在clims所确定的范围内,并将C显示为图片。clims是两元素的向量,用来限定C中的数据的范围,这些值映射到当前色图的整个范围。 book.iLoveMatlab.cn
4.h = imagesc(...)
返回图像对象的句柄。
【注】
x 和 y 对C中的元素没有影响,它们仅仅影响坐标轴的标注。如果length(x) > 2 或 length(y) > 2, imagesc函数会忽略向量中除第一个和最后一个元素之外的元素的值。
Ⅲ matlab如何把imagesc处理的图片保存
可这样:在显示图片后,点工具条中的“文件”,在打开的界面中选保存或另存为,按提示就可以保存为文档。
Ⅳ MATLAB中如何将imagesc所显示的图像保存
你这个图的colormap应该是JET,你应该用的image或者imagesc显示的图像吧。比如你那个矩阵叫I,imshow(~I,[]);colormapgray;或者imagesc(~I);colormapgray;你试一下。
Ⅳ matlab画图出现一堆坐标数字,但保存figure则正常,请问怎么回事
只能是你的显卡的驱动可能和matlab版本不兼容的问题,现在的某些显卡厂家是极不负责的,普通驱动都或多或少有些问题,升级一下显卡驱动试试,或换一个matlab版本,没别的办法。有人也出现过类似问题,主要是有colorbar的时候产生。http://..com/question/1174554264413460699.html?oldq=1
Ⅵ 有关MATLAB和图像处理问题
21.MATLAB支持的几种图像文件格式:
⑴JPEG(Joint Photogyaphic Expeyts Group):一种称为联合图像专家组的图像压缩格式。
⑵BMP(Windows Bitmap):有1位、4位、8位、24位非压缩图像,8位RLE(Run length Encoded)的图像。文件内容包括文件头(一个BITMAP FILEHEADER数据结构)、位图信息数据块(位图信息头BITMAP INFOHEADER和一个颜色表)和图像数据。
⑶PCX(Windows Paintbrush):可处理1位、4位、8位、16位、24位等图像数据。文件内容包括文件头、图像数据和扩展色图数据。
⑷TIFF(Tagged Iamge File Format):处理1位、4位、8位、24位非压缩图像,1位、4位、8位、24位packbit压缩图像,1位CCITT压缩图像等。文件内容包括文件头、参数指针表与参数域、参数数据表和图像数据四部分。
⑸PNG(Portable Network Graphics):包括1位、2位、4位、8位和16位灰度图像,8位和16位索引图像,24位和48位真彩色图像。
⑹GIF(Graphics Interchange Format):任何1位到8位的可交换的图像。
⑺HDF(Hierarchial Data Format):有8位、24位光栅图像数据集。
⑻ICO(Windows Icon resource):有1位、4位、8位非压缩图像。
⑼CUR(Windows Cursor resource):有1位、4位、8位非压缩图像。
⑽XWD(X Windows Dump):包括1位、8位Zpixmaps,XYBitmaps,XYPixmmmaps。
⑾RAS(Sun Raster image):有1位bitmap、8位索引、24位真彩色和带有透明度的32位真彩色。
⑿PBM(Portable Bitmap)。
⒀PGM(Portable Graymap)。
⒁PPM(Portable Pixmap)。
2.MATLAB支持五种图像类型,即二值图像、索引图像、灰度图像、RGB图像和多帧图像阵列。
图像类型
Double数据
uint8和uint16数据
二值图像
图像为m×n的整数矩阵,元素值范围[0,1]
图像为m×n的整数矩阵,元素值范围[0,1]
索引图像
图像为m×n的整数矩阵,元素值范围[0,p]
图像为m×n的整数矩阵,元素值范围[0,p-1]
灰度图像
图像为m×n的浮点数矩阵,元素值范围[0,1]
图像为m×n的整数矩阵,元素值范围[0,255]或[0,65535]
RGB图像
图像为m×n×3的浮点数矩阵,元素值范围[0,1]
图像为m×n×3的整数矩阵,元素值范围[0,255]或[0,65535]
其中,多帧图像阵列是由多帧图像组成的,每一帧图像可以为前四种图像中的一种,但组成一个多帧图像阵列的图像必须为同一种。cat函数可以将具有相同尺寸的几个独立图像存成多帧文件。对于多帧图像也可以从中提取单帧。
2.2.2 图像类型判断及转换
1.在MATLAB中如果要判断一个图像文件的类型,可使用如下指令:
l isbw:若图像为二值图像,则返回真。
l isgray:若图像为灰度图像,则返回真。
l isind:若图像为索引图像,则返回真。
l isrgb:若图像为RGB图像,则返回真。
2.在MATLAB系统中,要将一个类型的图像文件转换成另一个类型的图像文件,只需将前一个文件的图像数据用imread读出,再用imwrite以适当的格式写到后一个图像文件中去即可。另外,要将灰度图像I转换成RGB图像,可运用cat指令。cat函数可以把一些单一的图像合并成图像序列。在图像序列中每个图像需有相同的大小,如果是索引图像,色图也要一致。
此外,MATLAB还提供了若干函数,用于图像类型的转换。这些函数有:
l dither:用抖动法(dithering)转换图像。该函数通过颜色抖动(颜色抖动即改变边沿像素的颜色,使像素周围的颜色近似于原始图像的颜色,从而以空间分辨率来换取颜色分辨率)来增强输出图像的颜色分辨率。该函数可以把RGB图像转换成索引图像或把灰度图像转换成二值图像。
l gray2ind:灰度图像或二值图像向索引图像转换。
l grayslice:设定阈值将灰度图像转换为索引图像。
l im2bw:设定阈值将灰度、索引、RGB图像转换为二值图像。
l im2double:将图像数组转换为double型。
l im2uint8:将图像数组转换为uint8型。
l im2uint16:将图像数组转换为uint16型。该函数不支持二值图像序列的转换。
l ind2gray:索引图像向灰度图像转换。
l ind2rgb:索引图像向RGB图像转换。
l mat2gray:将一个数据矩阵转换为灰度图像。
l rgb2gray:RGB图像向灰度图像转换或将彩色色图转换成灰度色图。
l rgb2ind:RGB图像向索引图像转换。包含三种不同方法:均衡量化、最小值量化、色图映射。
l im2java:一般图像向Java图像转换。
l label2rgb:标志图像向RGB图像转换。
2.2.3 图像的查询及读写
在MATLAB中要查询一个图像文件的信息,只要用imfinfo指令加上文件及其完整路径名即可。函数调用格式为:
info = imfinfo(filename,fmt)
info = imfinfo(filename)
参数fmt对应于所有图像处理工具箱中所有支持的图像文件格式。
MATLAB提供了两个重要的用于图像文件的读写的指令,分别是从图像文件中读取数据的imread,以及将数据写入到图像文件中的imwrite。
1.imread的常见调用格式为:
A = imread(filename,fmt)
其作用是将文件名用字符串filename表示的,扩展名用fmt表示的图像文件中的数据读到矩阵A中。如果filename所指的为灰度级图像,则A为一个二维矩阵;如果filename所指的为RGB图像,则A为一个m×n×3的三维矩阵。Filename表示的文件名必须在MATLAB的搜索路径范围内,否则需指出其完整路径。
imread的其他几种重要的调用格式为:
[X,map] = imread(filename.fmt)
[…] = imread(filename)
[…] = imread(URL,…)
[…] = imread(…,idx) (CUR,ICO and TIFF only)
[…] = imread(…,’frames’,idx) (GIF only)
[…] = imread(…,ref) (HDF only)
[…] = imread(…,’BackgroundColor’,BG) (PNG only)
[A,map,alpha] = imread(…) (ICO,CUR and PNG only)
上面一些参数的含义如下:idx是指读取图标(cur、ico、tiff)文件中第idx个图像,默认值为1。’frame’,idx是指读取gif文件中的图像帧,idx值可以是数量、向量或’all’。ref是指整数值。alpha是指透明度。
2.imwrite的常用调用格式为:
imwrite(A,filename,fmt)
imwrite(X,map,filename,fmt)
imwrite(…,filename)
imwrite(…,Param1,Val1,Param2,Val2…)
其中imwrite(…,Param1,Val1,Param2,Val2…)可以让用户控制HDF、JPEG、TIFF等一些图像文件格式的输出特性。
在MATLAB中,默认的保存类型是uint8。由于PNG和TIFF格式支持16位的图像,所以保存这类图像时,保存类型就是uint16。
2.2.4 图像的显示
显示图像的最基本的手段是使用image函数。该函数还产生了图像对象的句柄,并允许对对象的属性进行设置。此外,imagesc函数也具有image的功能,所不同的是imagesc函数还自动将输入数据比例化,以全色图的方式显示。
imshow函数比image和imagesc更常用,它能自动设置句柄图像的各种属性。imshow可用于显示各类图像。对于每类图像,调用方法如下:
l imshow filename:显示图像文件。
l imshow(BW):显示二值图像,BW为黑白二值图像矩阵。
l imshow(X,map):显示索引图像,X为索引图像矩阵,map为色彩图示。
l imshow(I):显示灰度图像,I为二值图像矩阵。
l imshow(RGB):显示RGB图像,RGB为RGB图像矩阵。
l imshow(I,[low high]):将非图像数据显示为图像,这需要考虑数据是否超出了所显示类型的最大允许范围,其中[low high]用于定义待显示数据的范围。
有关图像显示的函数或其辅助函数,除了上述的以外,MATLAB还提供了一些用于进行图像的特殊显示的函数。
l colorbar:为图像的显示增加一个颜色条,这一用法对于了解被显示图像的灰度级别特别有用。
l getimage:获取图像数据。
l immovie:将多帧索引图像制作成连续图像格式。其调用格式为:
mov = immovie(D,map)
不过这种功能只对索引图像有效,其中D为多帧索引图像阵列,map为索引图像的对应色阶。对于其他类型图像,则需要首先将其转换为索引图像。
l montage:多帧图像的一次显示。它能将每一帧分别显示在一幅图像的不同区域,所有子区的图像都用同一个色彩条。
l movie:播放多帧连续图像。
l subimage:在一个图形区域内显示多个图像。
l truesize:调整图像显示的尺寸。
l warp:显示图像的纹理表面图。前面提到的图像显示手段都只能在二维平面上显示,MATLAB6.5的一个强大功能是能将平面图像显示在空间三维曲面上。这是由warp函数的纹理成图功能来实现的,该功能能通过双线性插值将平面图像投影到三维曲面上。
l zoom:将图像或二维图形进行放大或缩小显示。zoom本身是是一个开关键,zoom on用于打开缩放模式,zoom off用于关闭该模式,zoom in用于放大局部图像,zoom out用于缩小图像。
至于多个图像的显示,则可分为两个方面:在不同的图形窗口显示不同的图像,可以用figure指令来实现;在同一个图形窗口显示多图,可以用subplot来实现。
第三章 图像运算
3.1 图像的点运算
点运算将输入图像映射为输出图像,输出图像每个像素点的灰度值仅由对应的输入像素点的值决定。它常用于改变图像的灰度范围及分布,是图像数字化及图像显示的重要工具。点运算因其作用性质,也被称为对比度增强、对比度拉伸或灰度变换。在真正进行图像处理之前,有时可以用点运算来克服图像数字化设备的局限性。
点运算实际上是灰度到灰度的映射过程。点运算不会改变图像内像素点之间的空间关系。设输入图像为A(x, y),输出图像为B(x, y),则点运算可表示为:
B(x, y) = f [A(x, y)] (3-1)
点运算可完全由灰度变换(gray-scale transformation)函数s=f (r)决定,后者描述了输入灰度级与输出灰度级之间的映射关系。图像的点运算分为线性点运算和非线性点运算两种。
3.1.1 线性点运算
线性点运算是指灰度变换函数f为线性函数时的运算。
如图3.1,当a>1时,输出图像对比度增大;当a<1时,输出图像对比度降低;当a=1,b=0时,输出图像就是输入图像的简单复制;当a=1,b≠0时,仅使输出图像的灰度值上移或下移,其效果是使整个图像更亮或更暗。如果a为负值,暗区域将变亮,亮区域将变暗,点运算完成了图像求补。
除了调节对比度以外,还有一种典型的线性点运算的应用就是灰度标准化。设灰度图像为I[W][H],其中W表示图像宽度,H表示图像的高度,那么灰度图像的平均灰度和方 图3.1 线性函数
差由如下计算公式得到:
平均灰度:
(3-2)
方差:
(3-3)
可以将其变换为具有相同均值和方差的变换函数(线性映射),其形式如下:
(3-4)
其中σ0和u 0为给定的变换参数。灰度标准化可以用来生成一些常用的平均模型。
3.1.2 非线性点运算
非线性点运算对应于非线性映射函数,典型的映射包括平方函数、对数函数、截取函数(窗口函数)、域值函数、多值量化函数等。
阈值化处理是最常用的一种非线性点运算,它的功能是选择一阈值,将图像二值化,然后使用生成的二进制图像进行图像分割及边缘跟踪等处理。
直方图均衡化也是一种非常常用的非线性点运算。它是指将一个已知灰度分布的图像使用某种非线性灰度变换函数进行计算,使运算结果变成一幅具有均匀灰度分布的新图像。经过直方图均衡化的点运算处理后,实际的直方图将呈现参差不齐的外形,这是由于灰度级的可能个数是限造成的。在一些灰度级处可能没有像素,在另外一些灰度级处则像素很拥挤。
点运算的MATLAB实现:
I=imread('rice.png');
rice=double(I);
rice2=rice*0.5+50;
J=uint8(rice2);
subplot(1,2,1),imshow(I);
subplot(1,2,2),imshow(J);
转载的地址忘啦。呵呵
Ⅶ matlab怎么把500帧imagesc叠加到一张图片上
您好, matlab可以做到像素级别的叠加, 但是500个相同点的像素值叠加后肯定没法显示成一个图像, 需要有相关的算法进行支持. 这样的算法需要到论文中进行确认!
Ⅷ matlab利用三列数据生成一个二维图像,前两个设为坐标x,y第三个数据表示图像颜色强度
首先将三列数据放到三个列向量X,Y,Z中
X,Y就是第一、二列数据,是坐标,Z表示强度,用颜色表示
把这样的数据图表示成二维的图像有两种办法
第一种,把不规则的散点数据插值计算到规则的二维网格,再画图
XI=linspace(min(X),max(X),m); %根据需要将X划分为m分
YI=linspace(min(Y),max(Y),n); %根据需要将Y划分为n分
ZI=griddata(X,Y,Z,XI,YI.'); %最后ZI是个nxm的矩阵
imagesc(XI,YI,ZI);colorbar; %使用imagesc将矩阵画成图像
这种办法,由于数据是规则的网格,所以图像比较漂亮
而得到的二维规则矩阵,很容易保存成图像
但是数据是插值出来的,所以失去原来散点的信息
第二种,将散点数据用划分为平面内多个互相连接三角形,再画图
tri=delaunay(X,Y); %将散点划分为平面三角形网格
patch('Faces',tri,'Vertices',[X,Y],'FaceVertexCData',Z,...
'FaceColor','interp','EdgeColor','none');
colorbar;
这种办法得到的图像完全保留散点的信息
还可以将最后的边颜色设置为黑色'EdgeColor','k'
这是显示三角形网格的划分
在原来散点的位置,X,Y,Z都是一一对应的
所以坐标点生成的像素点与颜色与坐标点含量值肯定一一对应
而其它地方的颜色是由这些值插值而得
这样图像边缘可能不规则