当前位置: 首页 > news >正文

实验一 MATLAB \ Python数字图像处理初步

一、实验目的:

1.熟悉及掌握在MATLAB\Python中能够处理哪些格式图像。

2.熟练掌握在MATLAB\Python中如何读取图像。

3.掌握如何利用MATLAB\Python来获取图像的大小、颜色、高度、宽度等等相关信息。

4.掌握如何在MATLAB\Python中按照指定要求存储一幅图像的方法。

二、实验内容:

熟悉相关图像数值计算软件环境,以及相关基本操作。

1.利用imread()函数读取一幅图像,假设其名为flower.tif,存入一个数组中;

2.利用whos 命令提取该读入图像flower.tif的基本信息;

3.利用imshow()函数来显示这幅图像;

4.利用imfinfo函数来获取图像文件的压缩,颜色等等其他的详细信息;

5.利用imwrite()函数来压缩这幅图象,将其保存为一幅压缩了像素的jpg文件,设为flower.jpg;语法:imwrite(原图像,新图像,‘quality’,q), q取0-100。

6.同样利用imwrite()函数将最初读入的tif图象另存为一幅bmp图像,设为flower.bmp。

7.用imread()读入图像:Lenna.jpg 和cameraman.jpg;

8.用imfinfo()获取图像Lenna.jpg和cameraman.jpg 的大小;

9.用figure,imshow()分别将Lenna.jpg和cameraman.jpg显示出来,观察两幅图像的质量。

10.用im2bw将一幅灰度图像转化为二值图像,并且用imshow显示出来观察图像的特征。

11.将每一步的函数执行语句拷贝下来,写入实验报告,并且将相应结果截图拷贝下来。

三、实验程序、实验结果与实验分析:

1.实验程序:

(1)脚本Test1_1实现了步骤1-6,程序代码如下:

a=imread('flower.tif');whos aimshow(a)imfinfo('flower.tif')imwrite(a,'flower.jpg','quality',10);imwrite(a,'flower.bmp');

(2)脚本Test1_2实现了步骤7-11,程序代码如下:

b=imread('Lenna.jpg');
c=imread('cameraman.jpg');info1 = imfinfo('Lenna.jpg');size1 = [info1.Height, info1.Width];info2 = imfinfo('cameraman.jpg');size2 = [info2.Height, info2.Width];figure;imshow(b);title('Lenna.jpg');figure;imshow(c);title('cameraman.jpg');grayImg=rgb2gray(b);threshold = graythresh(grayImg);binaryImg = im2bw(grayImg, threshold);figure;subplot(1, 2, 1);imshow(grayImg);title('原始灰度图像');subplot(1, 2, 2);imshow(binaryImg);title('转换后的二值图像');

2.实验结果:

(1)脚本Test1_1实验结果(步骤1-6):

①提取该读入图像flower.tif的基本信息

②显示图像flower.tif

③利用imfinfo函数来获取图像文件的压缩,颜色等等其他的详细信息

④将图象保存为一幅压缩了像素的jpg文件

⑤将flower.tif图象另存为bmp图像

(2)脚本Test1_2实验结果(步骤7-11):

①获取图像Lenna.jpg和cameraman.jpg 的大小

②分别将Lenna.jpg和cameraman.jpg显示出来

③将灰度图像转化为二值图像

3.实验分析

(1)脚本Test1_1实验分析(步骤1-6):

        1.利用imread()函数读取图像flower.tif,存入数组中;
       a=imread('flower.tif');
        2.利用whos 命令提取图像flower.tif的基本信息;
       whos a
        3.利用imshow()函数来显示这幅图像;
       imshow(a)
        4.利用imfinfo函数来获取图像的压缩,颜色等等其他的详细信息;
       imfinfo('flower.tif')
        5.利用imwrite()函数来压缩这幅图象,将其保存为jpg文件,设为flower.jpg;此处 q取10。
       imwrite(a,'flower.jpg','quality',10);
        6.利用imwrite()函数将最初的图像flower.tif另存为bmp图像,设为flower.bmp。
       imwrite(a,'flower.bmp');
(2)脚本Test1_2实验分析(步骤7-11):
        1.用imread()读入图像:Lenna.jpg 和cameraman.jpg;
       b=imread('Lenna.jpg');c=imread('cameraman.jpg');
        2.用imfinfo()获取图像Lenna.jpg和cameraman.jpg 的大小;
       info1 = imfinfo('Lenna.jpg');size1 = [info1.Height, info1.Width];info2 = imfinfo('cameraman.jpg');size2 = [info2.Height, info2.Width];
        3.用figure,imshow()分别将Lenna.jpg和cameraman.jpg显示出来,观察两幅图像的质量。
       figure;imshow(b);title('Lenna.jpg');figure;imshow(c);title('cameraman.jpg');
4.用im2bw将一幅灰度图像转化为二值图像,并且用imshow显示出来观察图像的特征。使用subplot函数,使得转换前后的图像显示在一个窗口。
      threshold = graythresh(grayImg);binaryImg = im2bw(grayImg, threshold);figure;subplot(1, 2, 1);imshow(grayImg);title('原始灰度图像');subplot(1, 2, 2);imshow(binaryImg);title('转换后的二值图像');

四、思考题

1  简述MATLAB软件/Python语言的特点。

答:MATLAB使用矩阵和向量来表示数据,这使得它在矩阵计算和线性代数方面表现出色。此外,MATLAB的语法简洁且易于学习,适用于各种科学计算和数据分析领域,如信号处理、图像处理、控制系统、通信系统、金融分析和机器学习等。

2  MATLAB软件/Python语言可以支持哪些图像文件格式?

答:在MATLAB中,常见的支持格式包括BMP、JPG、PNG、TIFF等。同样,Python也支持这些格式,并且由于它拥有大量的第三方库,如PIL(Python Imaging Library)或OpenCV,它还可以支持更多的图像格式。这些库使得Python在图像处理方面有着强大的功能。

3 说明函数imread 的用途格式以及各种格式所得到图像的性质。

答:函数imread主要用于读取图像文件。在MATLAB中,你可以使用imread函数读取各种格式的图像文件,如BMP、JPG等。读取的图像数据会存储在一个数组中,数组的维度和类型取决于图像的尺寸和颜色模式。例如,灰度图像会存储为一个二维数组,而彩色图像则可能存储为一个三维数组,其中第三维表示颜色通道。对于JPG格式的图像,由于它采用有损压缩算法,读取的图像可能在某些细节上与原始图像有所差异。而BMP格式作为无压缩位图,读取的图像将保持原始数据。

相关文章:

  • java web 部分
  • miniprogram-to-uniapp-微信小程序转换成uniapp项目
  • 约瑟夫环-map法
  • Qt源码分析:窗体绘制与响应
  • js文件的执行和变量初始化缓存
  • Java面向对象练习(1.手机类)(2024.7.4)
  • Liunx网络配置
  • Sqlmap中文使用手册 - 各个参数介绍(持续更新)
  • 每日两题 / 20. 有效的括号 155. 最小栈(LeetCode热题100)
  • 实验五 数据库完整性约束的实现与验证
  • linux守护进程生命周期管理-supervisord
  • ABAP开发:动态Open SQL编程案例介绍
  • elasticsearch 8.14.1 和 Spring Data elasticsearch 实例演示
  • React 中 useState 和 useReducer 的联系和区别
  • spring security + vue,登录功能
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • fetch 从初识到应用
  • HTTP中GET与POST的区别 99%的错误认识
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • java取消线程实例
  • k8s如何管理Pod
  • Quartz初级教程
  • 成为一名优秀的Developer的书单
  • 汉诺塔算法
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 类orAPI - 收藏集 - 掘金
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 区块链共识机制优缺点对比都是什么
  • 移动端 h5开发相关内容总结(三)
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 原生 js 实现移动端 Touch 滑动反弹
  • 在weex里面使用chart图表
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • # 飞书APP集成平台-数字化落地
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • (2)(2.10) LTM telemetry
  • (Git) gitignore基础使用
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (四) 虚拟摄像头vivi体验
  • .bat批处理(一):@echo off
  • .NET CLR Hosting 简介
  • .net core Swagger 过滤部分Api
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .NET 使用配置文件
  • .net 提取注释生成API文档 帮助文档
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .net企业级架构实战之7——Spring.net整合Asp.net mvc
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)
  • .NET文档生成工具ADB使用图文教程
  • ??如何把JavaScript脚本中的参数传到java代码段中
  • @vue-office/excel 解决移动端预览excel文件触发软键盘