Matlab保存图像的5种方法

此博客转自:https://blog.youkuaiyun.com/holybin/article/details/39502077,另外我补充了一些实验结果。

1、使用imwrite 函数

如图像是img,则可以使用imwrite(img,'result.jpg'); 这种方法保存图像大小和显示的大小是一样的。下面的方法得到的图像和原图像的大小不一样;下面是用该方法保存的图片


我们注意到,用imwrite保存的图片只有图片本身,没有其他内容。


2、直接另存为

在figure中使用菜单file->saveas->选择保存形式(可以保存为fig,eps,jpeg,gif,png,bmp等格式)。这个的缺点是另存为的图像清晰度有很大的牺牲。

3、复制粘贴

在figure中使用菜单edit->copyfigure,此时图像就复制到剪贴板了。要注意的是在“copy options”中要选择“Bitmap”。

4、用saveas命令

Matlab提供直接的saveas函数可以将指定figure中的图像或者simulink中的框图进行保存。saveas的格式为:saveas(gca, filename, fileformat),其中的三个参数:

(1)gca:图形句柄,如果图形窗口标题栏是“Figure 3”,则句柄就是3;也可以直接用gcf获取当前窗口句柄。

(2)filename:单引号字符串,指定文件名

(3)fileformat:单引号字符串,指定存储格式

例子:


   
   
  1. saveas(gcf, 'save.jpg'); %保存当前窗口的图像
  2. saveas( 2, 'save.jpg'); %保存Figure 2窗口的图像

下面是用saveas的实验结果:


    我们可以看到,saveas保存的结果,有白边,下面的print函数保存的结果同样也是有白边的。如果想将生成的图片用于后续的图像处理,建议使用imwrite函数,否则,用哪种保存函数都可以。

5、print函数

print函数操作打印机,使用plot函数后紧接着用print函数来保存图像。print的格式为: print(figure_handle,fileformat,filename),其中的三个参数:

(1)figure_handle:图形句柄,如果图形窗口标题栏是“Figure 3”,则句柄就是3;也可以直接用gcf获取当前窗口句柄

(2)fileformat:单引号字符串,指定存储格式:

png格式: '-dpng'

jpeg格式:  '-djpeg',

tiff格式:  '-dtiff'

bmp格式:  '-dbitmap'

gif格式:'-dgif'

emf无损格式:'-dmeta'

(3)filename:文件名

例1:显示图像并保存


   
   
  1. x=-pi: 2*pi/ 1000:pi;
  2. y= cos( x);
  3. plot( x, y); print(gcf, '-djpeg', 'abc.jpg') %绘制图像并保存为jpg格式

例2:不显示图像而直接保存


   
   
  1. x=-pi: 2*pi/ 1000:pi;
  2. set(figure( 1), 'visible', 'off');
  3. plot( x, sin( x)); print(gcf, '-dpng', 'abc.png') %不显示图像直接保存为png格式
### 使用 MATLAB GUIDE 进行图像数据提取 #### 创建 GUI 界面 为了通过 MATLAB GUIDE 实现图像数据的提取,创建一个图形用户界面 (GUI),该界面允许加载和显示图像。这可以通过启动 `guide` 命令并选择预定义模板或者空白 GUI 来完成[^1]。 #### 加载与显示图像 在构建好的界面上添加按钮用于浏览文件系统以选取待处理的图片,并利用 `imread()` 函数读取选定图像到工作区变量中;接着调用 `imshow()` 显示所选图像于指定轴上。 #### 图像预处理 对于某些应用而言,在执行具体的数据提取之前可能需要先对输入图像做一些基本的操作比如灰度化(`rgb2gray`)、去噪(`medfilt2`)等操作来改善后续步骤的效果。 #### 数据提取方法的选择 针对不同的应用场景有不同的方式来进行实际的数据获取: - **边缘检测**:如果目的是识别物体边界,则可以采用多经典的边缘探测器如 Robert, Prewitt 或 Sobel 算子进行特征捕捉[^2]。 ```matlab % 应用 sobel 边缘检测算子 BW = edge(I,'sobel'); ``` - **颜色分割**:当目标对象具有独特的色彩属性时,可通过设定阈值范围筛选出感兴趣区域(ROI)。 ```matlab % 定义HSV空间中的红色区间 lower_red = [0, 50, 50]; upper_red = [10, 255, 255]; mask = inRange(hsvImage, lower_red, upper_red); redObjects = bitand(imageData, uint8(mask)); ``` - **形态学运算**:借助膨胀(dilate)、腐蚀(erode)以及开闭合(opening/closing)变换能够有效去除噪声干扰或是填补孔洞结构从而更好地定位所需部分。 ```matlab se = strel('disk', radius); % 创建圆形结构元素 dilatedImage = imdilate(binaryImage,se); % 执行膨胀操作 erodedImage = imerode(binaryImage,se); % 执行腐蚀操作 openedImage = imopen(binaryImage,se); % 开运算 closedImage = imclose(binaryImage,se); % 闭运算 ``` #### 结果可视化与保存 一旦完成了上述任一形式的数据抽取过程之后,应当考虑如何直观呈现这些成果给最终使用者看懂理解。除了简单的二值图之外还可以尝试伪彩色渲染(pseudocolor rendering)增强对比度便于观察细节之处。另外也要记得提供选项让用户能将得到的新图像导出至本地磁盘存储起来以便日后查阅分析之需。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值