matlab图像输出设置
Matlab课设_图像的输入输出及格式转换
课程设计任务书学生姓名:专业班级:指导教师:工作单位:信息工程学院题目:利用MATLAB仿真软件进行图像的输入、输出和格式变换要求完成的主要任务:读取、保存和显示不同格式的图像,并进行图像格式的相互变换如索引图像、灰度图像、RGB图像和二值图像的相互转换课程设计的目的:1.理论目的课程设计的目的之一是为了巩固课堂理论学习,并能用所学理论知识正确分析信号处理的基本问题和解释信号处理的基本现象。
2.实践目的课程设计的目的之二是通过设计具体的图像信号变换掌握图像和信号处理的方法和步骤。
课程设计的要求:每个学生单独完成课程设计内容,并写出课程设计说明书、给出程序清单,最后通过课程设计答辩。
时间安排:指导教师签名:年月日系主任(或责任教师)签字:年月日目录摘要 (I)Abstract (II)1设计项目要求与说明 (1)1.1设计项目要求 (1)1.2Matlab简介及其在图像处理与分析的应用 (1)1.2.1Matlab简介 (1)1.2.2数字图像及其处理 (1)1.2.3Matlab在图像处理与分析的应用 (3)2软件流程分析 (6)2.1图像的读取 (6)2.2图像的显示 (6)2.2.1以图像形式输出(图像的显示) (6)2.2.2索引图像的显示 (7)2.2.3灰度图像的显示 (7)2.2.4二值图像的显示 (7)2.2.5RGB图像的显示 (7)2.2.6以图像文件的形式输出(图像文件形式之间的转换) (7)2.3图像的保存 (8)2.4图像类型的相互转换 (9)2.4.1RGB图像→灰度图像 (9)2.4.2RGB图像→索引图像 (9)2.4.3RGB图像→二值图像 (9)2.4.4索引图像→RGB图像 (9)2.4.5索引图像→灰度图像 (10)2.4.6灰度图像→索引图像 (10)2.4.7灰度图像→二值图像 (10)3调试分析 (11)3.1图像读取 (11)3.2图像显示 (12)3.2.1索引图像显示 (12)3.2.2灰度图像显示 (12)3.2.3二值图像显示 (13)3.2.4RGB图像显示 (13)3.3图像类型的相互转换 (14)3.3.1RGB图像→灰度图像 (14)3.3.2RGB图像→索引图像 (14)3.3.3RGB图像→二值图像 (15)3.3.4索引图像→灰度图像 (15)3.3.5灰度图像→索引图像 (16)3.3.6灰度图像→二值图像 (16)4附录(程序清单及使用图像) (17)4.1图像的读取 (17)4.2图像的显示 (17)4.2.1索引图像显示 (17)4.2.2灰度图像显示 (17)4.2.3二值图像显示 (17)4.2.4RGB图像显示 (17)4.3以图像文件的形式输出(图像文件形式之间的转换) (18)4.4图像类型的相互转换 (18)4.4.1RGB图像→灰度图像 (18)4.4.2RGB图像→索引图像 (18)4.4.3RGB图像→二值图像 (18)4.4.4索引图像→灰度图像 (18)4.4.5灰度图像→索引图像 (19)4.4.6灰度图像→二值图像 (19)4.5原图像 (19)5课程设计总结 (22)6参考资料 (23)摘要MATLAB语言是由美国MathWorks公司推出的计算机软件,经过多年的逐步发展与不断完善,现已成为国际公认的最优秀的科学计算与数学应用软件之一,是近几年来在国内外广泛流行的一种可视化科学计算软件。
matlab图像输出设置
返回根对象的句柄和所有子对象
3.h = findobj('PropertyName',PropertyValue,...)
返回所有属性名为‘PropertyName’,属性值为'PropertyValue'的图形对象的句柄。可以指定多个属性/值对。
4.h = findobj('PropertyName',PropertyValue,'-logicaloperator', PropertyName',PropertyValue,...)
$<name>引用名叫name的被捕获字符串
(?(name) s1 | s2)我想您应该知道是什么意思
nargin是用来判断输入变量个数的函数,这样就可以针对不同的情况执行不同的功能。通常可以用他来设定一些默认值,如下面的函数。
例子,函数test1的功能是输出a和b的和。如果只输入一个变量,则认为另一个变量为0,如果两个变量都没有输入,则默认两者均为0。
findobj
findobj:特殊属性的图形对象
语法:
1.findobj:
findobj返回根对象的句柄和所有子对象(findobj returns handles of the root object and all its descendants without assigning the result to a variable.)
பைடு நூலகம்例子:
在当前坐标下查找所有直线对象:
h = findobj(gca,'Type','line') %gca为当前坐标的句柄
查找Label属性设为'foo'和String设为'bar'的所有对象:
matlab中仿真的scope图像的设置
如何设置显示matlab中的scope 图像1、我们使用Matlab绘制出数据的各种图形需要保存的时候,不少同学是直接用屏幕截图的办法来做的,但这样出来的图并不清晰,不便于后续应用和处理,并且往往不符合发表论文的要求,很多论文是要求用.eps 格式的图片的。
实际上,我们可以有下面两种更好的处理方法:(1)在论文里插入图片在Matlab的Figure窗口,点击菜单栏的Edit,选择Copy Figure,然后转到你的文档界面,把光标放到需要插入图片的位置,然后Ctrl+C,你就可以得到比较清晰的图片了。
需要注意的是,这时候的图片有相当一部分空白区域,你可以用word图片工具栏的‘裁剪’功能把图片空白区域消除掉。
另外,如果需要对图片的大小进行拉伸,最好不要直接用鼠标拖拉,这样容易导致图中的点线分布变形,可以右键点击图片,选择‘设置图片格式’,在‘大小’标签的‘缩放’栏里,设置图片的大小。
(2)直接保存Figure为了便于后续处理和应用,建议大家形成一个良好习惯,即把绘制所得的Figure窗口直接保存为.fig文件,以后你就可以多次打开它,对图像进行修改处理,例如加注标签(label)等,也可以打开.fig文件把所显示的图像转存为其它格式的文件,例如.eps、.jpg等。
2、在做Simulink仿真时,使用的Scope波形显示模块实际上也是一种Figure窗口,不过Matlab把Scope的菜单栏隐藏起来,只提供了几个有限的参数设置。
如果需要对Scope中的图加上坐标、更改界面背景色等,没有菜单栏就基本上无从下手了。
可以在打开你的mdl文件之后,在Matlab的命令行输入以下指令来恢复显示Scope的Figure 菜单栏:>> set(0,'ShowHiddenHandles','on');>> set(gcf,'menubar','figure');这样Scope窗口就如下所示:然后点击菜单栏的Edit ,可以选择Copy Figure 来保持波形图,也可以选择Figure Properties 来调整Scope 的各种图形属性,包括添加xlabel、ylabel、title,更改背景颜色,调整波形曲线的线型、粗细等等:P.S.:除了上面说的那两行指令外,在网上还找到一段相似的程序,不过我使用时Matlab提示第4行代码出现Error,不知是何原因,也贴在这里大家分析下吧,呵呵。
matlab图像输出设置
matlab图像输出设置核心方法:通过图像设置命令,直接指定图片的大小。
具体操作:(1) 完成画图及相关设置(字体大小、线宽、图例大小也是正常尺寸),(2) 此时WindowStyle is 'docked',要改为normal,有两种操作:1)在Figure properties——more properties 中找到Windowstyle,然后用鼠标改为normal;2)或者直接用命令:set (gcf,'windowstyle','normal')(3) 根据排版要求,确定图片的宽高,例如320*320 像素,然后使用命令set (gcf,'Position',[500,300,320,320]) set(gcf,'Units','centimeters','Position', [100 100 9 8]);% figure的position中的[left bottom width height] 是指figure的可画图的部分的左下角的坐标以及宽度和高度。
(4) 使用copy figure将图片输出到Word1.f igure;2.h old on;3.s et(gca, 'YTick', [0 : 0.2 : 1]);4.b ox off;5.s et(gca, 'YTickLabel', {'matlab1', 'matlab2', 'matlab3',...6. 'matlab4', 'matlab5','matlab6'})1.h old on2.x L=xlim;3.y L=ylim;4.p lot(xL,[yL(2),yL(2)],'k',[xL(2),x L(2)],[yL(1),yL(2)],'k')5.b ox off6.a xis([xL yL])1.t=linspace(0,8,100);%%% linspace(X1, X2) generates a row vector of 100 linearly equally spaced points between X1 and X2.linspace(X1, X2, N) generates N points between X1 and X2.2.a1=axes;1.f igure2.a2=axes('Position',p+[0,p(4)/2,0,-p(4)/2]); % 确定坐标位置,p为上述3.x lim(xL); %定义x轴坐标4.b ox off;5.s et(gca,'XTick',xt,'Color','None','YTick',[]);简单点儿说吧:xtick是刻度(小竖线);xticklabel 刻度值(竖线下面的数值)。
(完整版)数字图像处理MATLAB程序【完整版】
第一部分数字图像处理实验一图像的点运算实验1.1 直方图一.实验目的1.熟悉matlab图像处理工具箱及直方图函数的使用;2.理解和掌握直方图原理和方法;二.实验设备1.PC机一台;2.软件matlab。
三.程序设计在matlab环境中,程序首先读取图像,然后调用直方图函数,设置相关参数,再输出处理后的图像。
I=imread('cameraman.tif');%读取图像subplot(1,2,1),imshow(I) %输出图像title('原始图像') %在原始图像中加标题subplot(1,2,2),imhist(I) %输出原图直方图title('原始图像直方图') %在原图直方图上加标题四.实验步骤1. 启动matlab双击桌面matlab图标启动matlab环境;2. 在matlab命令窗口中输入相应程序。
书写程序时,首先读取图像,一般调用matlab自带的图像,如:cameraman图像;再调用相应的直方图函数,设置参数;最后输出处理后的图像;3.浏览源程序并理解含义;4.运行,观察显示结果;5.结束运行,退出;五.实验结果观察图像matlab环境下的直方图分布。
(a)原始图像 (b)原始图像直方图六.实验报告要求1、给出实验原理过程及实现代码;2、输入一幅灰度图像,给出其灰度直方图结果,并进行灰度直方图分布原理分析。
实验1.2 灰度均衡一.实验目的1.熟悉matlab图像处理工具箱中灰度均衡函数的使用;2.理解和掌握灰度均衡原理和实现方法;二.实验设备1.PC机一台;2.软件matlab;三.程序设计在matlab环境中,程序首先读取图像,然后调用灰度均衡函数,设置相关参数,再输出处理后的图像。
I=imread('cameraman.tif');%读取图像subplot(2,2,1),imshow(I) %输出图像title('原始图像') %在原始图像中加标题subplot(2,2,3),imhist(I) %输出原图直方图title('原始图像直方图') %在原图直方图上加标题a=histeq(I,256); %直方图均衡化,灰度级为256subplot(2,2,2),imshow(a) %输出均衡化后图像title('均衡化后图像') %在均衡化后图像中加标题subplot(2,2,4),imhist(a) %输出均衡化后直方图title('均衡化后图像直方图') %在均衡化后直方图上加标题四.实验步骤1. 启动matlab双击桌面matlab图标启动matlab环境;2. 在matlab命令窗口中输入相应程序。
matlab图形操作
matlab图形操作本⽂对matlab中利⽤图形句柄对图⽚属性进⾏设置的操作进⾏简单的总结说明:(1)对图窗和坐标轴属性进⾏整体设置可以通过gcf和gca语句获取当前图窗句柄和坐标轴句柄,通过该句柄可以对图窗和坐标轴的各项属性进⾏操作。
图窗和坐标轴分别包含如下属性:% 图窗属性... ...Children: [1×1 Axes] Color: [0.9400 0.9400 0.9400]Colormap: [256×3 double] CurrentAxes: [1×1 Axes]... ...InnerPosition: [680 558 560 420] PaperUnits: 'centimeters'OuterPosition: [672 550 576 514] Position: [680 558 560 420]Units: 'pixels'% 坐标轴属性... ...Box: 'on' BoxStyle: 'back'Children: [1×1 Line] Color: [1 1 1]FontAngle: 'normal' FontName: 'Helvetica'FontSize: 10 FontSizeMode: 'auto'FontSmoothing: 'on' FontUnits: 'points'FontWeight: 'normal' GridColor: [0.1500 0.1500 0.1500]GridLineStyle: '-' Legend: [0×0 GraphicsPlaceholder]LineWidth: 0.5000 OuterPosition: [0 0 1 1]Parent: [1×1 Figure] Position: [0.1300 0.1100 0.7750 0.8150]Title: [1×1 Text] TitleFontWeight: 'normal'Units: 'normalized' UserData: []View: [0 90] Visible: 'on'... ...XAxis: [1×1 NumericRuler] XAxisLocation: 'bottom'XColor: [0.1500 0.1500 0.1500] XColorMode: 'auto'XDir: 'normal' XGrid: 'off'XLabel: [1×1 Text] XLim: [0 100]XScale: 'linear' XTick: [0 10 20 30 40 50 60 70 80 90 100]XTickLabel: {11×1 cell} XTickLabelRotation: 0YAxis: [1×1 NumericRuler] YColor: [0.1500 0.1500 0.1500]YGrid: 'off' YLabel: [1×1 Text]YLim: [0 100] YScale: 'linear'YTick: [0 10 20 30 40 50 60 70 80 90 100] YTickLabel: {11×1 cell}YTickLabelRotation: 0 ZLabel: [1×1 Text]ZLim: [-1 1] ZScale: 'linear'ZTick: [-1 0 1] ZTickLabel: ''ZTickLabelRotation: 0... ...上⾯仅仅是展⽰了图窗和坐标轴部分重要且常⽤的属性,它们的全部属性可通过查matlab的帮助⽂档或直接在matlab的命令⾏上输⼊gcf、gca或通过如下图所⽰的属性窗⼝进⾏查询和设置。
【matlab】 输出图像大小调整
Matlab图形窗口大小的控制,plot窗口大小,figure大小,axis设置,实用Matlab中保存图像时,图形窗口大小的控制zz首先要了解的是Matlab是面向对象的。
最高等级的对象是screen,它定义了figure可以用的最大szie。
screen下面是figure。
figue就是你画图的时候跳出来的那个新的对话窗口。
如果figure变化,screen是不会跟着变化的。
但screen变化的话,figure就要跟着变化了。
figure下面是axes。
axes是那个窗口里面你要画的东西。
axes的大小和位置取决于figure,如果你放大缩小figure的大小的话,里面的图线也会跟着变化的。
set(gca,'position',[])因此,set (gca,'position',[0.1,0.1,0.9,0.9] );的作用是:设置坐标轴距离画板(图形窗口figure)边距。
[0.1,0.1,0.9,0.9] 分别为axes在figure中的左边界,下边界,宽度,高度,最小为0,最大为1(左边界,下边界为0,上边界,右边界为1)见下面的例子:-----------------------------------------------------------------------------figureset (gca,'position',[0.1,0.1,0.9,0.9] );x=1:0.1:10;y=sin(x);plot(x,y)-----------------------------------------------------------------------------结果见下图:set(gcf,'position',[])一般matlab绘出来图的框架(图形窗口)大都是正方形或者近似正方形的矩形,能不能画一些扁的矩形呢?使用图形的position属性可以做到。
matlab曲线点输出方法
matlab曲线点输出方法Matlab是一款广泛应用于数值计算和图形处理的软件工具,它提供了丰富的函数库和接口,方便用户进行各种数据分析和可视化操作。
在Matlab中,曲线图是一种常用的可视化方式,它可以清晰地展示数据的趋势和变化。
为了更好地理解和使用Matlab曲线图,本文将介绍一种曲线点输出的方法,以帮助用户更直观地查看曲线的细节和异常值。
在Matlab中,可以使用plot函数绘制曲线。
该函数可以根据给定的数据点,绘制出一条光滑的曲线。
常用的plot函数参数包括:* x:表示横坐标的数据向量;* y:表示纵坐标的数据向量;* 颜色:可选参数,用于设置曲线的颜色;* 标记:可选参数,用于在曲线上添加标记;* 类型:可选参数,用于设置曲线的类型(如线型、线宽等)。
通过这些参数的设置,用户可以方便地绘制出各种类型的曲线图。
二、曲线点输出方法为了更详细地查看曲线的细节和异常值,可以使用一些额外的函数和方法来实现曲线点的输出。
具体步骤如下:1. 使用scatter函数绘制散点图,该函数可以根据给定的数据点,绘制出散点图。
在散点图中,每个数据点都用一个点表示,用户可以通过调整点的颜色、大小和形状等参数,来更好地识别数据点的特征。
2. 使用grid on语句在散点图上添加网格线,以便更清晰地观察曲线的趋势和变化。
3. 使用xlabel和ylabel函数为散点图添加横纵坐标标签,以便更好地识别数据点的位置。
4. 使用title函数为散点图添加标题,以便更好地概括数据的特点和趋势。
5. 使用legend函数为散点图添加图例,以便更好地识别不同数据点的类型和特征。
通过以上步骤,用户可以方便地输出曲线的详细信息,包括异常值和趋势变化等。
这些信息对于进一步的数据分析和建模具有重要的参考价值。
三、示例代码下面是一个简单的示例代码,演示了如何使用Matlab输出曲线点:```matlab% 生成示例数据x = [1 2 3 4 5];y = [2 3 4 5 6];% 绘制散点图并添加图例和标题scatter(x, y, 'filled', 'r', 'MarkerSize', 10);hold on; % 保持当前图像打开,以便添加其他图形元素grid on; % 添加网格线xlabel('X轴'); % X轴标签ylabel('Y轴'); % Y轴标签title('示例曲线'); % 图像标题legend('数据点', '拟合曲线'); % 图例显示数据点和拟合曲线```以上代码生成了一个简单的散点图,并使用scatter函数绘制了数据点。
Matlab中如何读出写入图像文件以及对图像的简单处理
Matlab中如何读出写入图像文件以及对图像的简单处理imMatrix = imread('name.jpg')%jpg也可以bmp,你的图片格式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)。
MATLAB输入输出格式变换
课程设计任务书学生姓名:专业班级:指导教师:工作单位:题目:MATLAB仿真软件进行图像的输入、输出和格式变换。
初始条件:1.仿真软件matlab2.数字信号处理与图像处理基础知识。
要求完成的主要任务:MATLAB仿真软件进行图像的输入、输出和格式变换。
要求:读取、保存和显示不同格式的图像,并进行图像格式的相互变换如索引图像、灰度图像、RGB图像和二值图像的相互转换。
时间安排:第15周:理论讲解。
第17周:理论设计,仿真调试,撰写试验报告,准备答辩。
第18周:答辩。
指导教师签名:年月日系主任(或责任教师)签名:年月日目录1.图像的格式及类型 (5)2.图像的输入 (7)2.1从图形图像上读取数据 (7)3.图像的输出 (8)3.1以图像形式输出 (8)3.1.1索引图像的显示 (8)3.1.2灰度图像的显示 (9)3.1.3二值图像的显示 (9)3.1.4 RGB图像的显示 (10)3.2以图像文件的形式输出 (11)4.图像的保存 (12)5.图像的格式转换 (14)5.1 RGB转换成灰度图像 (14)5.2 灰度图像转换为索引图像 (15)5.3 灰度图像转化为二值图像 (15)5.4 RGB图像转化为索引图像 (16)小结与体会 (17)参考文献 (18)摘要MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。
它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言的编辑模式,代表了当今国际科学计算软件的先进水平。
本次课程设计就是利用MATLAB来进行读取,保存和显示不同格式的图像,并进行图像格式的相互变换,包括了索引图像、灰度图像、RGB图像和二值图像的相互转换的应用。
实验一 MATLAB数字图像处理初步
实验一MATLAB数字图像处理初步一、实验目的1、熟悉及掌握在MATLAB中能够处理哪些格式图像。
2、熟练掌握在MATLAB中读取图像,并获取图像的大小、颜色、高度、宽度等等相关信息。
3、掌握在MATLAB中按照指定要求存储一幅图像的方法。
4、熟悉数字图像矩阵的格式转换二、实验原理及知识点1、数字图像的表示和类别一幅图像可以被定义为一个二维函数f(x,y),其中x和y是空间(平面)坐标,f 在任何坐标处(x,y)处的振幅称为图像在该点的亮度。
灰度是用来表示黑白图像亮度的一个术语,而彩色图像是由单个二维图像组合形成的。
例如,在RGB彩色系统中,一幅彩色图像是由三幅独立的分量图像(红、绿、蓝)组成的。
因此,许多为黑白图像处理开发的技术适用于彩色图像处理,方法是分别处理三副独立的分量图像即可。
图像关于x和y坐标以及振幅连续。
要将这样的一幅图像转化为数字形式,就要求数字化坐标和振幅。
将坐标值数字化成为取样;将振幅数字化成为量化。
采样和量化的过程如图1所示。
因此,当f的x、y分量和振幅都是有限且离散的量时,称该图像为数字图像。
作为MATLAB基本数据类型的数值数组本身十分适于表达图像,矩阵的元素和图像的像素之间有着十分自然的对应关系。
图1 图像的采样和量化根据图像数据矩阵解释方法的不同,MATLAB把其处理为4类: 亮度图像(Intensity images)二值图像(Binary images)索引图像(Indexed images)RGB图像(RGB images)(1) 亮度图像一幅亮度图像是一个数据矩阵,其归一化的取值表示亮度。
若亮度图像的像素都是uint8类或uint16类,则它们的整数值范围分别是[0,255]和[0,65536]。
若图像是double类,则像素取值就是浮点数。
规定双精度型归一化亮度图像的取值范围是[0,1](2) 二值图像一幅二值图像是一个取值只有0和1的逻辑数组。
而一幅取值只包含0和1的uint8类数组,在MATLAB中并不认为是二值图像。
Lab
《数字图像处理》实验一、图像操作1、 MATLAB的图像输入输出和显示函数imread()和imwrite()可以读写bmp、jpg/jpeg、gif、tif/tiff、png、hdf、pcx、xwd、ico格式文件。
读索引文件,还可以得到相应的调色板数据。
auread()、auwrite()、wavread()和wavwrite()可以方便地读写au和wav文件,并可以控制其中的位及频率。
image()、imagesc()、imshow()和imview()显示图像。
imfinfo()可以得到读入图像的信息,如文件的大小、格式、格式版本号、图像的高度、宽度、颜色类型等。
2、图像文件信息可以通过调用imfinfo函数获得与图像文件有关的信息,其调用格式如下: INFO=imfinfo(FILENAME, ‘FMT’)INFO=imfinfo(FILENAME)其中,INFO是一个结构体,包含与文件的具体类型有关的文件信息,对于每一种类型的文件,INFO都包含这样一些信息:文件名、文件格式、文件格式版本号、文件的修正数据、文件的字节大小、图像宽度(以像素为单位)、图像高度(以像素为单位)。
每个像素所占的位数、图像类型等。
例如:info=imfinfo('Lenna.bmp') 或info=imfinfo('Lenna.bmp','bmp')。
而info.Width表示图像的宽度;info.Height表示图像的高度,等等。
3、读取图像函数imread()可以从任何MATLAB支持的图形图像文件格式中以任意位深度读取一幅图像,其基本调用格式如下:A=imread(FILENAME)[A, MAP]=imread(FILENAME, ‘FMT’)其中,FILENAME为需要读入的图像文件名。
FMT为图像格式(可以是BMP、JPG/JPEG、GIF、TIF/TIFF、PNG、HDF、PCX、XWD、CUR和ICO),如果不指定FMT参数,那么系统将根据文件名自动判断图像类型。
数字图像处理 matlab代码
MATLAB实用源代码图像读取及灰度变换I=imread('cameraman.tif');%读取图像subplot(1,2,1),imshow(I) %输出图像title('原始图像') %在原始图像中加标题subplot(1,2,2),imhist(I) %输出原图直方图title('原始图像直方图') %在原图直方图上加标题图像旋转I = imread('cameraman.tif');figure,imshow(I);theta = 30;K = imrotate(I,theta); % Try varying the angle, theta. figure, imshow(K)边缘检测I = imread('cameraman.tif');J1=edge(I,'sobel');J2=edge(I,'prewitt');J3=edge(I,'log');subplot(1,4,1),imshow(I);subplot(1,4,2),imshow(J1);subplot(1,4,3),imshow(J2);subplot(1,4,4),imshow(J3);1.图像反转MATLAB 程序实现如下:I=imread('xian.bmp');J=double(I);J=-J+(256-1); %图像反转线性变换H=uint8(J);subplot(1,2,1),imshow(I);subplot(1,2,2),imshow(H);2.灰度线性变换MATLAB 程序实现如下:I=imread('xian.bmp');subplot(2,2,1),imshow(I);title('原始图像');axis([50,250,50,200]);axis on; %显示坐标系I1=rgb2gray(I);subplot(2,2,2),imshow(I1);title('灰度图像');axis([50,250,50,200]);axis on; %显示坐标系J=imadjust(I1,[0.1 0.5],[]); %局部拉伸,把[0.1 0.5]内的灰度拉伸为[0 1] subplot(2,2,3),imshow(J);title('线性变换图像[0.1 0.5]');axis([50,250,50,200]);grid on; %显示网格线axis on; %显示坐标系K=imadjust(I1,[0.3 0.7],[]); %局部拉伸,把[0.3 0.7]内的灰度拉伸为[0 1] subplot(2,2,4),imshow(K);title('线性变换图像[0.3 0.7]');axis([50,250,50,200]);grid on; %显示网格线axis on; %显示坐标系3.非线性变换MATLAB 程序实现如下:I=imread('xian.bmp');I1=rgb2gray(I);subplot(1,2,1),imshow(I1);title(' 灰度图像');axis([50,250,50,200]);grid on; %显示网格线axis on; %显示坐标系J=double(I1);J=40*(log(J+1));H=uint8(J);subplot(1,2,2),imshow(H);title(' 对数变换图像');axis([50,250,50,200]);grid on; %显示网格线axis on; %显示坐标系4.直方图均衡化MATLAB 程序实现如下:I=imread('xian.bmp');I=rgb2gray(I);figure;subplot(2,2,1);imshow(I);subplot(2,2,2);imhist(I);I1=histeq(I);figure;subplot(2,2,1);imshow(I1);subplot(2,2,2);imhist(I1);5. 线性平滑滤波器用MA TLAB实现领域平均法抑制噪声程序:I=imread('xian.bmp');subplot(231)imshow(I)title('原始图像')I=rgb2gray(I);I1=imnoise(I,'salt & pepper',0.02);subplot(232)imshow(I1)title(' 添加椒盐噪声的图像')k1=filter2(fspecial('average',3),I1)/255; %进行3*3模板平滑滤波k2=filter2(fspecial('average',5),I1)/255; %进行5*5模板平滑滤波k3=filter2(fspecial('average',7),I1)/255; %进行7*7模板平滑滤波k4=filter2(fspecial('average',9),I1)/255; %进行9*9模板平滑滤波subplot(233),imshow(k1);title('3*3 模板平滑滤波');subplot(234),imshow(k2);title('5*5 模板平滑滤波');subplot(235),imshow(k3);title('7*7 模板平滑滤波');subplot(236),imshow(k4);title('9*9 模板平滑滤波');6.中值滤波器用MA TLAB实现中值滤波程序如下:I=imread('xian.bmp');I=rgb2gray(I);J=imnoise(I,'salt&pepper',0.02);subplot(231),imshow(I);title('原图像');subplot(232),imshow(J);title('添加椒盐噪声图像');k1=medfilt2(J); %进行3*3模板中值滤波k2=medfilt2(J,[5,5]); %进行5*5模板中值滤波k3=medfilt2(J,[7,7]); %进行7*7模板中值滤波k4=medfilt2(J,[9,9]); %进行9*9模板中值滤波subplot(233),imshow(k1);title('3*3模板中值滤波');subplot(234),imshow(k2);title('5*5模板中值滤波');subplot(235),imshow(k3);title('7*7模板中值滤波');subplot(236),imshow(k4);title('9*9 模板中值滤波');7.用Sobel算子和拉普拉斯对图像锐化:I=imread('xian.bmp');subplot(2,2,1),imshow(I);title('原始图像');axis([50,250,50,200]);grid on; %显示网格线axis on; %显示坐标系I1=im2bw(I);subplot(2,2,2),imshow(I1);title('二值图像');axis([50,250,50,200]);grid on; %显示网格线axis on; %显示坐标系H=fspecial('sobel'); %选择sobel算子J=filter2(H,I1); %卷积运算subplot(2,2,3),imshow(J);title('sobel算子锐化图像');axis([50,250,50,200]);grid on; %显示网格线axis on; %显示坐标系h=[0 1 0,1 -4 1,0 1 0]; %拉普拉斯算子J1=conv2(I1,h,'same'); %卷积运算subplot(2,2,4),imshow(J1);title('拉普拉斯算子锐化图像');axis([50,250,50,200]);grid on; %显示网格线axis on; %显示坐标系8.梯度算子检测边缘用MA TLAB实现如下:I=imread('xian.bmp');subplot(2,3,1);imshow(I);title('原始图像');axis([50,250,50,200]);grid on; %显示网格线axis on; %显示坐标系I1=im2bw(I);subplot(2,3,2);imshow(I1);title('二值图像');axis([50,250,50,200]);grid on; %显示网格线axis on; %显示坐标系I2=edge(I1,'roberts');figure;subplot(2,3,3);imshow(I2);title('roberts算子分割结果');axis([50,250,50,200]);grid on; %显示网格线axis on; %显示坐标系I3=edge(I1,'sobel');subplot(2,3,4);imshow(I3);title('sobel算子分割结果');axis([50,250,50,200]);grid on; %显示网格线axis on; %显示坐标系I4=edge(I1,'Prewitt');subplot(2,3,5);imshow(I4);title('Prewitt算子分割结果');axis([50,250,50,200]);grid on; %显示网格线axis on; %显示坐标系9.LOG算子检测边缘用MA TLAB程序实现如下:I=imread('xian.bmp');subplot(2,2,1);imshow(I);title('原始图像');I1=rgb2gray(I);subplot(2,2,2);imshow(I1);title('灰度图像');I2=edge(I1,'log');subplot(2,2,3);imshow(I2);title('log算子分割结果');10.Canny算子检测边缘用MA TLAB程序实现如下:I=imread('xian.bmp');subplot(2,2,1);imshow(I);title('原始图像')I1=rgb2gray(I);subplot(2,2,2);imshow(I1);title('灰度图像');I2=edge(I1,'canny');subplot(2,2,3);imshow(I2);title('canny算子分割结果');11.边界跟踪(bwtraceboundary函数)clcclear allI=imread('xian.bmp');figureimshow(I);title('原始图像');I1=rgb2gray(I); %将彩色图像转化灰度图像threshold=graythresh(I1); %计算将灰度图像转化为二值图像所需的门限BW=im2bw(I1, threshold); %将灰度图像转化为二值图像figureimshow(BW);title('二值图像');dim=size(BW);col=round(dim(2)/2)-90; %计算起始点列坐标row=find(BW(:,col),1); %计算起始点行坐标connectivity=8;num_points=180;contour=bwtraceboundary(BW,[row,col],'N',connectivity,num_points);%提取边界figureimshow(I1);hold on;plot(contour(:,2),contour(:,1), 'g','LineWidth' ,2);title('边界跟踪图像');12.Hough变换I= imread('xian.bmp');rotI=rgb2gray(I);subplot(2,2,1);imshow(rotI);title('灰度图像');axis([50,250,50,200]);grid on;axis on;BW=edge(rotI,'prewitt');subplot(2,2,2);imshow(BW);title('prewitt算子边缘检测后图像');axis([50,250,50,200]);grid on;axis on;[H,T,R]=hough(BW);subplot(2,2,3);imshow(H,[],'XData',T,'YData',R,'InitialMagnification','fit');title('霍夫变换图');xlabel('\theta'),ylabel('\rho');axis on , axis normal, hold on;P=houghpeaks(H,5,'threshold',ceil(0.3*max(H(:))));x=T(P(:,2));y=R(P(:,1));plot(x,y,'s','color','white');lines=houghlines(BW,T,R,P,'FillGap',5,'MinLength',7);subplot(2,2,4);,imshow(rotI);title('霍夫变换图像检测');axis([50,250,50,200]);grid on;axis on;hold on;max_len=0;for k=1:length(lines)xy=[lines(k).point1;lines(k).point2];plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green');plot(xy(1,1),xy(1,2),'x','LineWidth',2,'Color','yellow');plot(xy(2,1),xy(2,2),'x','LineWidth',2,'Color','red');len=norm(lines(k).point1-lines(k).point2);if(len>max_len)max_len=len;xy_long=xy;endendplot(xy_long(:,1),xy_long(:,2),'LineWidth',2,'Color','cyan');13.直方图阈值法用MA TLAB实现直方图阈值法:I=imread('xian.bmp');I1=rgb2gray(I);figure;subplot(2,2,1);imshow(I1);title(' 灰度图像')axis([50,250,50,200]);grid on; %显示网格线axis on; %显示坐标系[m,n]=size(I1); %测量图像尺寸参数GP=zeros(1,256); %预创建存放灰度出现概率的向量for k=0:255GP(k+1)=length(find(I1==k))/(m*n); %计算每级灰度出现的概率,将其存入GP中相应位置endsubplot(2,2,2),bar(0:255,GP,'g') %绘制直方图title('灰度直方图')xlabel('灰度值')ylabel(' 出现概率')I2=im2bw(I,150/255);subplot(2,2,3),imshow(I2);title('阈值150的分割图像')axis([50,250,50,200]);grid on; %显示网格线axis on; %显示坐标系I3=im2bw(I,200/255); %subplot(2,2,4),imshow(I3);title('阈值200的分割图像')axis([50,250,50,200]);grid on; %显示网格线axis on; %显示坐标系14. 自动阈值法:Otsu法用MA TLAB实现Otsu算法:clcclear allI=imread('xian.bmp');subplot(1,2,1),imshow(I);title('原始图像')axis([50,250,50,200]);grid on; %显示网格线axis on; %显示坐标系level=graythresh(I); %确定灰度阈值BW=im2bw(I,level);subplot(1,2,2),imshow(BW);title('Otsu 法阈值分割图像')axis([50,250,50,200]);grid on; %显示网格线axis on; %显示坐标系15.膨胀操作I=imread('xian.bmp'); %载入图像I1=rgb2gray(I);subplot(1,2,1);imshow(I1);title('灰度图像')axis([50,250,50,200]);grid on; %显示网格线axis on; %显示坐标系se=strel('disk',1); %生成圆形结构元素I2=imdilate(I1,se); %用生成的结构元素对图像进行膨胀subplot(1,2,2);imshow(I2);title(' 膨胀后图像');axis([50,250,50,200]);grid on; %显示网格线axis on; %显示坐标系16.腐蚀操作MATLAB 实现腐蚀操作I=imread('xian.bmp'); %载入图像I1=rgb2gray(I);subplot(1,2,1);imshow(I1);title('灰度图像')axis([50,250,50,200]);grid on; %显示网格线axis on; %显示坐标系se=strel('disk',1); %生成圆形结构元素I2=imerode(I1,se); %用生成的结构元素对图像进行腐蚀subplot(1,2,2);imshow(I2);title('腐蚀后图像');axis([50,250,50,200]);grid on; %显示网格线axis on; %显示坐标系17.开启和闭合操作用MA TLAB实现开启和闭合操作I=imread('xian.bmp'); %载入图像subplot(2,2,1),imshow(I);title('原始图像');axis([50,250,50,200]);axis on; %显示坐标系I1=rgb2gray(I);subplot(2,2,2),imshow(I1);title('灰度图像');axis([50,250,50,200]);axis on; %显示坐标系se=strel('disk',1); %采用半径为1的圆作为结构元素I2=imopen(I1,se); %开启操作I3=imclose(I1,se); %闭合操作subplot(2,2,3),imshow(I2);title('开启运算后图像');axis([50,250,50,200]);axis on; %显示坐标系subplot(2,2,4),imshow(I3);title('闭合运算后图像');axis([50,250,50,200]);axis on; %显示坐标系18.开启和闭合组合操作I=imread('xian.bmp'); %载入图像subplot(3,2,1),imshow(I);title('原始图像');axis([50,250,50,200]);axis on; %显示坐标系I1=rgb2gray(I);subplot(3,2,2),imshow(I1);title('灰度图像');axis([50,250,50,200]);axis on; %显示坐标系se=strel('disk',1);I2=imopen(I1,se); %开启操作I3=imclose(I1,se); %闭合操作subplot(3,2,3),imshow(I2);title('开启运算后图像');axis([50,250,50,200]);axis on; %显示坐标系subplot(3,2,4),imshow(I3);title('闭合运算后图像');axis([50,250,50,200]);axis on; %显示坐标系se=strel('disk',1);I4=imopen(I1,se);I5=imclose(I4,se);subplot(3,2,5),imshow(I5); %开—闭运算图像title('开—闭运算图像');axis([50,250,50,200]);axis on; %显示坐标系I6=imclose(I1,se);I7=imopen(I6,se);subplot(3,2,6),imshow(I7); %闭—开运算图像title('闭—开运算图像');axis([50,250,50,200]);axis on; %显示坐标系19.形态学边界提取利用MATLAB实现如下:I=imread('xian.bmp'); %载入图像subplot(1,3,1),imshow(I);title('原始图像');axis([50,250,50,200]);grid on; %显示网格线axis on; %显示坐标系I1=im2bw(I);subplot(1,3,2),imshow(I1);title('二值化图像');axis([50,250,50,200]);grid on; %显示网格线axis on; %显示坐标系I2=bwperim(I1); %获取区域的周长subplot(1,3,3),imshow(I2);title('边界周长的二值图像');axis([50,250,50,200]);grid on;axis on;20.形态学骨架提取利用MATLAB实现如下:I=imread('xian.bmp');subplot(2,2,1),imshow(I);title('原始图像');axis([50,250,50,200]);axis on;I1=im2bw(I);subplot(2,2,2),imshow(I1);title('二值图像');axis([50,250,50,200]);axis on;I2=bwmorph(I1,'skel',1);subplot(2,2,3),imshow(I2);title('1次骨架提取');axis([50,250,50,200]);axis on;I3=bwmorph(I1,'skel',2);subplot(2,2,4),imshow(I3);title('2次骨架提取');axis([50,250,50,200]);axis on;21.直接提取四个顶点坐标I = imread('xian.bmp');I = I(:,:,1);BW=im2bw(I);figureimshow(~BW)[x,y]=getpts。
MATLAB 图像处理命令使用
MATLAB 图像处理命令使用1.MATLAB中图像处理的一些简单函数A、imreadimread函数用于读入各种图像文件,其一般的用法为[X,MAP]=imread(‘filename’,‘fmt’)其中,X,MAP分别为读出的图像数据和颜色表数据,fmt为图像的格式,filename为读取的图像文件(可以加上文件的路径)。
例:[X,MAP]=imread(’flowers.tif’,’tif’);比较读取二值图像,灰度图像,索引图像,彩色图像的X和MAP的特点,可以利用size 函数用来显示数组的维数,了解数据的特点。
B=size(a) 返回数组a 的维数。
B、imwriteimwrite函数用于输出图像,其语法格式为:imwrite(X,map,filename,fmt)imwrite(X,map,filename,fmt)按照fmt指定的格式将图像数据矩阵X和调色板map写入文件filename。
C、imfinfoimfinfo函数用于读取图像文件的有关信息,其语法格式为imfinfo(filename,fmt)imfinfo函数返回一个结构info,它反映了该图像的各方面信息,其主要数据包括:文件名(路径)、文件格式、文件格式版本号、文件的修改时间、文件的大小、文件的长度、文件的宽度、每个像素的位数、图像的类型等。
2.MATLAB中图像文件的显示imshowimshow函数是最常用的显示各种图像的函数,其语法如下:imshow(X,map)其中X是图像数据矩阵,map是其对应的颜色矩阵,若进行图像处理后不知道图像数据的值域可以用[]代替map。
(1)二进制(二值)图像显示方法,在MATLAB中一幅二值图像是uint8或双精度的,该矩阵仅包含0和1。
如果希望工具箱中的函数能将图像理解为二进制的,那么所有数据都要是逻辑数据,必须对其进行设置(将所有数据标志均设置on).可以对数据利用“~”取反操作实现图像逆转即黑白反色。
matlab中的resize函数的用法
matlab中的resize函数的用法MATLAB中的resize函数是一个非常有用的工具,用于调整图像尺寸和分辨率。
它不仅可以用于图像,还可以用于视频和音频数据。
本文将详细介绍MATLAB中resize函数的用法。
一、函数格式resize函数的一般格式如下:B = resize(A, [M N]);其中,A表示输入的原始图像或数据,B表示经过缩放后的结果图像或数据,[M N]表示最终输出图像或数据的大小。
二、调整图像大小可以使用resize函数来将图像调整为所需的大小。
例如,我们可以将一张512x512的图像缩小为256x256的图像,如下所示:A = imread('image.jpg');B = resize(A, [256 256]);imshow(B);在这个例子中,我们从文件中读取了一张图像,并使用resize 函数将其调整为256x256大小。
最后,使用imshow函数显示输出的结果。
三、调整图像分辨率除了可以调整图像大小外,resize函数还可以用于更改图像的分辨率。
分辨率是指图像的像素密度,通常表示为“dpi”(每英寸点数)。
例如,您可以将图像的分辨率从300dpi调整为150dpi,如下所示:A = imread('image.jpg');B = imresize(A, 0.5);imwrite(B, 'newimage.jpg', 'Resolution', 150);在这个例子中,我们针对一个300dpi的图像,使用imresize函数将其缩放为原来的一半。
最后,我们将调整后的图像保存到了一个新的JPEG文件中,并指定了输出文件的分辨率为150dpi。
四、调整视频大小使用resize函数我们也可以对视频进行缩放。
例如,下面的代码可以将一个640x480的输入视频缩放为320x240:v = VideoReader('input.avi');frames = read(v);for i = 1 : size(frames, 4)B(:,:,:,i) = resize(frames(:,:,:,i), [240 320]);endv2 = VideoWriter('output.avi');open(v2);writeVideo(v2,B);close(v2);在这个例子中,我们首先使用VideoReader函数从AVI文件中读取一个视频文件,然后使用resize函数将每一帧缩小为320x240大小。
MATLAB批量打印输出600PPI的图像且图像不留空白
MATLAB批量打印输出600PPI的图像且图像不留空⽩⼀前⾔最近收到审稿⼈的修改意见,其中有三条:⼀条为<RC: There were only five images evaluated in the experiment, and I recommend increasing to twenty to further evaluate the algorithm performance.>他说我论⽂只有五副图像⽤来评价算法性能,推荐我⾄少⽤20副图像来仿真算法效果. 另外⼀条为《1.2. Quality RC: The manuscript should include graphics with a resolution of no less than 600ppi.》论⽂中每个图像(图⽚)的分辨率不低于600ppi. 第⼆条让论⽂的每张图像PPI为600PPI,则是让图像更⾼清,细节很清晰!绝⼤多数⼈都是截屏MATLAB图像,⾃然很模糊,达不到600PPI的要求,后⾯给出解决办法。
第三条为ablation experiment,<The manuscript has not shown the ablation experiments.>其实传统的红外图像细节增强,直接⽤matlab实现算法处理,很多经典的论⽂,如UM,直⽅图,BF&DDE,GF&DDE,LEPF&DDE等都没有消融实验.这个⼀般出现在基于深度学习的⽬标检测,如论⽂<Attention Guided Low-Light Image Enhancement with a Large Scale Low-Light Simulation Dataset>的5.4 Ablation Study.通过阅读这篇论⽂,理解消融实验有三点: 你的算法如果由三个关键创新点组成,那么你就分别去掉这三部分得到对应的实验效果如matlab仿真图像.第⼆点就是⽤客观指标去评价,如PSNR,SSIM,RMSC.第三点⾄少五副图像⽤于在视觉效果和客观指标评价.当然以审稿⼈的严谨态度,你⾄少得搞30副图像.但绝⼤多数SCI论⽂的实验部分都是五副红外图像,三个参考算法,即每⼀张红外图像对应五副不同的结果,那么5副图像就是25张图像了,这样下来已经占了论⽂的⼤多数篇幅了.如果增加为20副,那⾄少得放100张不同结果的图像,估计得占两页纸! 我TM, 真是⽆语! 都是按照发表的论⽂写的,审稿⼈竟然提出如此要求.....但要毕业只好硬着头⽪搞, 哪怕审稿⼈让我摘星星,我也得踮起脚尖向上跳!⼆ MATLAB如何实现⼀次打印20副图像(⼀)下载20副红外图像重点推荐两个数据集:⽤于基于深度学习的红外⽬标检测1.第⼀个数据集2.第⼆个数据集Thermal Infrared Dataset这些数据集,基本上都是⼏百⼏千张图像,所以都是1个G或4个G的⼤⼩,很可怕!所以我直接开通了百度⽹盘会员下载,不然4个G下载不了!若是对深度学习的红外⽬标检测感兴趣,那就必然下载⽤于算法研究!(⼆) matlab实现对输⼊的20副红外图像算法处理后输出思路是;分成两步,第⼀步是把算法处理后的20副红外图像放在⼀个元胞向量中;第⼆步,输出显⽰每⼀个算法的结果图像,并分配⼀个⽂件名;1.第⼀步算法处理得到20副红外图像的输出结果把输⼊的20副红外图像赋值给5⾏4列的元胞数组,⽤循环实现对元胞数组中的每⼀副红外图像做算法处理,赋值给⼀个包含20个元素的元胞向量OUT1,代码如下:%this file is used to%once display the result of Algorithm for 20 images%pattention:the function can't have a figure%--subplot(1,1,1);or imshow(test_R2);clc;close all;clear;%----a example for display different solution images----%324*256I1=imread('../infrared/17sempach_BG1_1.png');I2=imread('../infrared/18sempach_BG2_1.png');I3=imread('../infrared/19sempach_BG3_1.png');I4=imread('../infrared/20sempach_BG4_1.png');%324*256%512*512I5=imread('../infrared/01orange_raw01.png');I6=imread('../infrared/02orange01_nuc.png');I7=imread('../infrared/11green_TIV01.png');I8=imread('../infrared/12red_TIV01.png');%512*512%640*512I9=imread('../infrared/03red_cma01.png');I10=imread('../infrared/04red_cmb01.png');I11=imread('../infrared/06cmA_seq01.png');I12=imread('../infrared/07cmC_seq01.png');I13=imread('../infrared/08cmA_seq1_01.png');I14=imread('../infrared/09cmB_seq2_01.png');I15=imread('../infrared/21FLIR_video_00001.tiff');I16=imread('../infrared/22FLIR_08863.tiff');I17=imread('../infrared/23FLIR_thermal1.tiff');%640*512%1024*512I18=imread('../infrared/13raw01.png');I19=imread('../infrared/14seq3_nuc01.png');I20=imread('../infrared/15seq4_nuc01.png');%1024*512%1024*640I21=imread('../infrared/16seq5_nuc01.png');%1024*640%1024*1024I22=imread('../infrared/03red_cma01.png');I23=imread('../infrared/10seq3_raw01.png');%1024*1024%----a example for display different solution of images----%input 20 different images%Picture save "batch"I = cell(5,4);I{1,1}=I1; I{1,2}=I2; I{1,3}=I3; I{1,4}=I4;I{2,1}=I5; I{2,2}=I6; I{2,3}=I7; I{2,4}=I8;I{3,1}=I9; I{3,2}=I10;I{3,3}=I11;I{3,4}=I12;I{4,1}=I13; I{4,2}=I14;I{4,3}=I15;I{4,4}=I16;I{5,1}=I17; I{5,2}=I18;I{5,3}=I19;I{5,4}=I20;out1 = cell(1,20);%Picture save "batch" by method 1%this method is not recommend%Not centered% for i =1:2% for j = 1:2% temp = I{i,j};% out = GABF_DDE_top820(temp);% out1{(2*(i-1)+j)} = out;% H = figure;% subplot(2,2,(2*(i-1)+j));% imshow(out);title({num2str(i);num2str(j)});% print(H,'-dtiffn','-r600',num2str((2*(i-1)+j)));% end% end%Picture save "batch" by method 2%the result is centred%recommenedfor i =1:5for j = 1:4temp = I{i,j};out = GABF_DDE_top820(temp);out1{(4*(i-1)+j)} = out;% subplot(5,4,(4*(i-1)+j));% imshow(out);title({num2str(i);num2str(j)});endend 2.第⼆步,为每⼀个输出结果分配⽂件名,且让图像显⽰窗⼝不留空⽩先⽤⼀个元胞向量filename存放20个红外图像的⽂件名,然后结合print函数和循环结构,给每个结果指定保存图⽚格式如tiff,图像的分辨率600PPI('-r600'),⽂件名filename{k}其中的⼀个亮点是,matlab显⽰图像不留空⽩,代码仅⼀⾏关键:set(gca, 'position', [0 0 1 1 ]);axis normal;%the csdn websitematlab代码如下:filename = { 'IMA1', 'IMA2', 'IMA3', 'IMA4'...,'IMA5', 'IMA6', 'IMA7', 'IMA8'...,'IMA9','IMA10','IMA11','IMA12'...,'IMA13','IMA14','IMA15','IMA16'...,'IMA17','IMA18','IMA19','IMA20'};for k = 1:length(filename)H = figure; % 指定图⽚打印figure_handlessubplot(1,1,1);imshow(out1{k});set(gca, 'position', [0 0 1 1 ]);axis normal;%the csdn websiteprint(H,'-dtiffn','-r600',strcat('../result/',filename{k})) ;%internet% print(H,'-dtiffn','-r600',num2str(k)) ;%internet end 重点是print函数批量输出不同⽂件名的图像,matlab显⽰图像没有多余的空⽩3.⽤print函数和strcat函数输出图像到指定位置,且更改图像PPI为600(常⽤):前提是输⼊图像本⾝要⾜够清晰:如果你输⼊的截屏图像很模糊,那么更改为600PPI后图像依然模糊。
matlab图像处理工具箱大全--参考
参数gamma指定了曲线的形状,该曲线用来映射I的亮度值。
如果gamma小于1,映射被加权到更高的输出值。
如果gamma大于1,映射被加权到更低的输出值。
如果省略了函数的参量,则gamma默认为1(线性映射)。
举例:调整灰度图像:K = imadjust(I,[0.3 0.7],[]);figure, imshow(K)调整RGB图像:RGB1 = imread('football.jpg');RGB2 = imadjust(RGB1,[.2 .3 0; .6 .7 1],[]);imshow(RGB1), figure, imshow(RGB2)图像处理函数详解——imadd功能:实现图像相加运算。
用法:Z = imadd(X,Y)例子:I = imread('rice.png');J = imread('cameraman.tif');K = imadd(I,J,'uint16');%转换数据类型,然后将图像相加imshow(K,[])图像处理函数详解——im2uint8功能:将图像转换为8位无符号整型。
也可将输出值限定在[0 255]内。
用法:I2 = im2uint8(I)RGB2 = im2uint8(RGB)I = im2uint8(BW)X2 = im2uint8(X,'indexed')举例:I = reshape(uint8(linspace(0,255,255)),[5 5])I2 = im2uint8(I)图像处理函数详解——im2bw功能:通过设定亮度将阈值灰度、真彩、索引图像转换为二值图像。
用法:BW = im2bw(I,level)BW = im2bw(X,map,level)BW = im2bw(RGB,level)分别将灰度图像、索引图像、真彩色图像转换为二值图像。
Level是归一化的阈值,值域为[0,1]。
matlab实验 图像的基本运算
实验四、图像的基本运算1(1)选择一幅图像lena8.jpg,设置输入/输出变换的灰度级范围,a=0.3,b=0.6,c=0.1,d=0.9 (2)设置非线性扩展函数的参数c=2(3)采用灰度倒置变换函数s=255-r进行图像变换(4)设置二值化图像的阈值,分别为level=0.4,level=0.7程序如下I=imread('C:\lena8.jpg');figure;subplot(2,3,1);imshow(I);title('原图');J=imadjust(I,[0.3;0.6],[0.1;0.9]); %设置灰度变换的范围subplot(2,3,2);imshow(J);title('线性扩展');I1=double(I); %将图像转换为double类型I2=I1/255; %归一化此图像C=2;K=C*log(1+I2); %求图像的对数变换subplot(2,3,3);imshow(K);title('非线性扩展');M=im2bw(I,0.5);M=~M;%M=255-I; %将此图像取反%Figuresubplot(2,3,4);imshow(M);title('灰度倒置');N1=im2bw(I,0.4); %将此图像二值化,阈值为0.4N2=im2bw(I,0.7); %将此图像二值化,阈值为0.7subplot(2,3,5);imshow(N1);title('二值化阈值0.4');subplot(2,3,6);imshow(N2);title('二值化阈值0.7');2 选取两幅大小一样的灰度图像hough.bmp和rice.bmp,将两幅图像进行加法运算。
程序如下I=imread('C:\hough.bmp');%I=rgb2gray(I);J=imread('C:\rice.bmp');I=im2double(I); %将图像转换成double型J=im2double(J);K=I+0.3*J; %两幅图像相加subplot(1,3,1);imshow(I);title('物图');subplot(1,3,2);imshow(J);title('背景图');subplot(1,3,3);imshow(K);title('相加后的图');imwrite(K,'C:\lena1.jpg');3 选取一幅混合图像,如相加得到的图像lenal.jpg,将混合图像与背景图像做减法运算。
MATLAB实验一:图像的输入与输出
实验报告(201 /201 学年第学期)课程名称实验名称图像的输入与输出实验时间年月日实验室指导教师学生姓名学号班级专业实验报告三、实验内容及原理(包括硬件原理图、算法、逻辑框图,关键代码等,可续页)(一)图像文件的读取利用imread函数可以完成图像文件的读取操作。
常用语法格式为:I=imread(‘filename’,‘fmt’) 或I=imread(‘filename.fmt’);其作用是将文件名用字符串filename表示的、扩展名用字符串fmt(表示图像文件格式)表示的图像文件中的数据读到矩阵I中。
当filename中不包含任何路径信息时,imread会从当前工作目录中寻找并读取文件。
要想读取指定路径中的图像,最简单的方法就是在filename中输入完整的或相对的地址。
MTTLAB支持多种图像文件格式的读、写和显示。
因此参数fmt常用的可能值有:bmp Windows位图格式jpg或jpeg 联合图像专家组格式tif或tiff 标志图象文件格式gif 图形交换格式pcx Windows画刷格式png 可移动网络图形格式xwd X Windows Dump格式例如,命令行:将jpg图像dragon读入图像矩阵I中。
(二)图像文件的写入(保存)利用imwrite完成图像的输出和保存操作,也完全支持上述各种图像文件的格式。
其语法格式为:Imwrite(I,‘filename’,fnt)或Imwrite(I,‘filename.fmt’);注意:当利用imwrite函数保存图像时,MATLAB默认的保存方式是将其简化为unit8的数据类型。
与读取文件类型类似,MATLAB在文件保存时还支持16位的png和tiff图像。
所以当用户保存这类文件时,MATLAB就将其存储在unit16中。
例如,命令行:(三)图像文件的显示图像的显示过程是将数字图像从一组离散数据还原为一副可见图像的过程。
MATLAB的图像处理工具箱提供了多种图像显示技术。
MATLAB输出图像
看到网上有的同行问怎么改示波器的背景,把示波器波形复制到 Word 中,我有两种方法, 第一种是我一个同学告诉我的,通过命令对示波器进行操作。 具体如下 shh = get(0,'ShowHiddenHandles'); set(0,'ShowHiddenHandles','On'); set(gcf,'menubar','figure'); set(gcf,'CloseRequestFcn','closereq'); set(gcf,'DefaultLineClipping','Off'); set(0,'ShowHiddenHandles',shh) 输入以上命令可以直接对示波器进行修改,包括背景和曲线颜色 第二种方法我以前总结过,现在详细说明一下 用 MATLAB 命令将 simulink 示波器的图形画出 第一步,将你的示波器的输出曲线以矩阵形式映射到 MATLAB 的工作空间内。 如图1所示,双击示波器后选择 parameters 目录下的 Data history,将 Save data to workspace 勾 上,Format 选择 Array,Variable name 即你输入至工作空间的矩阵名称,这里我取名 aa。在这 之后运行一次仿真,那么你就可以在 MATLAB 的工作空间里看到你示波器输出曲线的矩阵 aa。如图2所示。
理解曲线矩阵的原理之后,我们就可以用 plot 函数画出示波器中显示的图形了。 curve=plot(aa(:,1),aa(:,2),aa(:,1),aa(:,3),'--r') � (:,1)表示取 aa 的第一列,仿真时间 � (:,2)表示取 aa 的第二列,示波器的输入一 � (:,3)表示取 aa 的第三列,示波器的输入二 %--r 表示曲线2显示的形式和颜色,这里是(red) set(curve(1),'linewidth',3) %设置曲线1的粗细 set(curve(2),'linewidth',3) %设置曲线2的粗细 legend('Fuzzy','PID') %曲线名称标注 xlabel('仿真时间(s)') %X 坐标轴名称标注 ylabel('幅值') %Y 轴坐标轴标注 title('Fuzzy Control VS PID') %所画图的名称 grid on
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
核心方法:通过图像设置命令,直接指定图片的大小。
具体操作:(1) 完成画图及相关设置(字体大小、线宽、图例大小也是正常尺寸),(2) 此时WindowStyle is 'docked',要改为normal,有两种操作:1)在Figure properties——more properties中找到Windowstyle,然后用鼠标改为normal;2)或者直接用命令:set (gcf,'windowstyle','normal')(3) 根据排版要求,确定图片的宽高,例如320*320 像素,然后使用命令set (gcf,'Position',[500,300,320,320])set(gcf,'Units','centimeters','Position',[100 100 9 8]);% figure的position中的[left bottom width height] 是指figure的可画图的部分的左下角的坐标以及宽度和高度。
(4) 使用copy figure将图片输出到Word1.figure;2.hold on;3.set(gca, 'YTick', [0 : 0.2 : 1]);4.box off;5.set(gca, 'YTickLabel', {'matlab1', 'matlab2', 'matlab3',...6. 'matlab4', 'matlab5', 'matlab6'})1.hold on2.xL=xlim;3.yL=ylim;4.plot(xL,[yL(2),yL(2)],'k',[xL(2),xL(2)],[yL(1),yL(2)],'k')5.box off6.axis([xL yL])1.t=linspace(0,8,100);%%% linspace(X1, X2) generates a row vector of 100 linearlyequally spaced points between X1 and X2.linspace(X1, X2, N) generates N points between X1 and X2.2.a1=axes;%% axes Create axes in arbitrary positions.axes('position', RECT) opens up an axis at the specifiedlocation and returns a handle to it.RECT = [left, bottom, width, height] specifies the location and size of the side of the axis box, relative to the lower-left corner of the Figure window, in normalized units where (0,0) is the lower-left corner and (1.0,1.0) is the upper-right.3.plot(t,sin(t));4.xt=get(gca,'xtick');5.set(gca,'XTick',[],'XColor','w');6.xL=xlim;7.p=get(gca,'Position');8.box off;1.figure2.a2=axes('Position',p+[0,p(4)/2,0,-p(4)/2]); % 确定坐标位置,p为上述3.xlim(xL); %定义x轴坐标4.box off;5.set(gca,'XTick',xt,'Color','None','YTick',[]);简单点儿说吧:xtick是刻度(小竖线);xticklabel 刻度值(竖线下面的数值)。
set(gca,'xtick',-pi:pi/2:pi)这句的意思是:手动设置x轴刻度,-pi到pi之间,每间隔pi/2,划一小竖线;set(gca,'xticklabel',{'-pi','-pi/2','0','pi/2','pi'})这句的意思是:给刚才划上的小竖线,标个数值。
如果你把它改成:set(gca,'xticklabel',{'a','b','c','d','e'}),那么那小竖线下就变成:a,b,c,d,e了。
希望对你有用!findobjfindobj:特殊属性的图形对象语法:1.findobj:findobj返回根对象的句柄和所有子对象(findobj returns handles of the root object and all its descendants without assigning the result to a variable.)2.h = findobj:返回根对象的句柄和所有子对象3.h = findobj('PropertyName',PropertyValue,...)返回所有属性名为‘PropertyName’,属性值为'PropertyValue'的图形对象的句柄。
可以指定多个属性/值对。
4.h = findobj('PropertyName',PropertyValue,'-logicaloperator', PropertyName',PropertyValue,...)-logicaloperator可以取值:-and-or-xor-not等5.h = findobj('-regexp','PropertyName','regexp',...)属性名可以使用正则表达式6.h = findobj('-property','PropertyName')如果存在‘PropertyName’这个属性名,就返回此图形句柄7.h = findobj(objhandles,...)限制搜索围为objhandles和他们的子图中8.h = findobj(objhandles,'-depth',d,...)指定搜索深度,深度参数'd'控制遍历层数,d为inf表示遍历所有层,d为0等同d='flat'9.h = findobj(objhandles,'flat','PropertyName',PropertyValue,...)'flat'限制搜索围只能是当前层,不能搜索子图。
如果句柄指向一个不存在的图形,findobj返回一个错误。
findobj正确匹配任何合法属性值,例如:findobj('Color','r')找到所有color值为红的对象。
为了寻找满足指定条件的额handle对象,我们可以使用handle.findobj。
例子:在当前坐标下查找所有直线对象:h = findobj(gca,'Type','line') %gca为当前坐标的句柄查找Label属性设为'foo'和String设为'bar'的所有对象:h = findobj('Label','foo','-and','String','bar');查找String不为'foo'也不为'bar'的所有对象:h = findobj('-not','String','foo','-not','String','bar');h = findobj('String','foo','-and','Tag','button one',...'-and','-not',{'Color','red','-or','Color','blue'})Find all objects for which you have assigned a value to the Tag property (that is, the value is not the empty string ''):h = findobj('-regexp','Tag','[^'']')Find all children of the current figure that have their BackgroundColor property set to a certain shade of gray ([.7 .7 .7]). This statement also searches the current figure for the matching property value pair.h = findobj(gcf,'-depth',1,'BackgroundColor',[.7 .7 .7])Matlab正则表达式正则表达式在处理字符串及文本时显得十分方便,在perl, python等脚本语言,以及java, .net等平台上都支援正则表达式。
事实上,在MATLAB中也提供了正则表达式的支持。
主要包含三个常用的函数:regexp(), regexpi(), regexprep()。