当前位置: 首页 > 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格式作为无压缩位图,读取的图像将保持原始数据。

相关文章:

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

一、实验目的: 1.熟悉及掌握在MATLAB\Python中能够处理哪些格式图像。 2.熟练掌握在MATLAB\Python中如何读取图像。 3.掌握如何利用MATLAB\Python来获取图像的大小、颜色、高度、宽度等等相关信息。 4.掌握如何在M…...

echarts柱状选中shadow阴影背景宽度设置

使用line,宽度增大到所需要的宽度,设置下颜色透明度就行 tooltip: {trigger: axis,//把阴影的层级往下降z:-15,axisPointer: {type: line,lineStyle: {color: rgba(150,150,150,0.3),width: 44,type: solid,},}, }, series: [{type: bar,barWidth:20,//…...

ArrayBuffer 对象常见的几个用途

ArrayBuffer 在 JavaScript 中的用途广泛,主要用于处理二进制数据。 ArrayBuffer 对象、 TypedArray 视图和 DataView 视图是 JavaScript 操作二进制数据的一个接口。本文介绍ArrayBuffer 对象的常见的一些用法。 1. 网络传输二进制数据 使用方法:通过 …...

STC89C52RC单片机设计的FM收音机+自动搜台+存储电台(程序+原理图+PCB)

资料下载地址&#xff1a;STC89C52RC单片机设计的FM收音机自动搜台存储电台&#xff08;程序原理图PCB) 1、实物图 2、部分程序 #include <reg52.h> #include "tea5767.h" #include "delay.h" #include "lcd1602.h" //K1:上一台 K2:下一…...

【若依】关闭当前标签页并跳转路由到其他页面

使用场景如&#xff1a;当在新增/编辑路由页面提交成功后&#xff0c;需要关闭当前页&#xff0c;并跳转回列表页。 实现代码&#xff1a; this.$store.dispatch("tagsView/delView", this.$route); //关闭当前页 this.$router.replace({ path: "/xxx/xxx"…...

防爆智能手机如何解决危险环境下通信难题?

在化工厂、石油行业、矿山等危险环境中&#xff0c;通信安全一直是难题。传统手机因不具备防爆功能&#xff0c;可能引发火花、爆炸等安全风险&#xff0c;让工作人员在关键时刻难以及时沟通。但如今&#xff0c;防爆智能手机的出现彻底改变了这一现状&#xff01; 安全通信&am…...

软件测试最全面试题及答案整理(2024最新版)

1、你的测试职业发展是什么? 测试经验越多&#xff0c;测试能力越高。所以我的职业发展是需要时间积累的&#xff0c;一步步向着高级测试工程师奔去。而且我也有初步的职业规划&#xff0c;前3年积累测试经验&#xff0c;按如何做好测试工程师的要点去要求自己&#xff0c;不断…...

11 - matlab m_map地学绘图工具基础函数 - 绘制航迹、椭圆、风向玫瑰图和特定的圆形区域的有关函数及其用法

11 - matlab m_map地学绘图工具基础函数 - 绘制航迹、椭圆、风向玫瑰图和特定的圆形区域的有关函数及其用法 0. 引言1. 关于m_track2. 关于m_range_ring3. 关于m_ellipse4. 关于m_windrose5. 结语 0. 引言 本篇介绍下m_map中绘制航迹图函数&#xff08;m_track&#xff09;、绘…...

长安链安装及使用问题

1. 关于golang编译出错: Get “https://proxy.golang.org/chainmaker.org/chainmaker/common/v2/v/v2.2.0.mod“: dial 在网上查阅资料后发现是自己的golang版本太低(1.3一下),因为goalng在最初开发时,国内基本上都会遇到依赖下载不了的问题&#xff0c; 然而在1.3版本后,go…...

大学生竞赛管理系统-计算机毕业设计源码37276

大学生竞赛管理系统的设计与实现 摘 要 随着教育信息化的不断发展&#xff0c;大学生竞赛已成为高校教育的重要组成部分。传统的竞赛组织和管理方式存在着诸多问题&#xff0c;如信息不透明、效率低下、管理不便等。为了解决这些问题&#xff0c;提高竞赛组织和管理效率&#x…...

去中心化 RAG 先行者,KIP Protocol 如何保护数据所有权、激活 AI 资产

AI 时代&#xff0c;人人都应实现 KnowledgeFi 的梦想或许并不遥远&#xff0c;KIP Protocol 正在生动践行这一价值理念&#xff0c;带动去中心化数字产权的创建与盈利&#xff0c;面向 CryptoAI 的蓝海市场迈出创新探索的技术步伐&#xff0c;朝着 Web3 行业打造去中心化 AI 的…...

numpy库(python)

文章目录 1.numpy简介2.安装numpy3.ndarry : numpy库的心脏3.1 创建数组3.2数据类型3.3dtype NumPy是用Python.进行科学计算&#xff0c;尤其是数据分析时&#xff0c;所用到的一个基础库。它是大量Python 数学和科学计算包的基础&#xff0c;比如后面要讲到的pandas)库就用到了…...

AI技术在招聘行业的应用

大模型AI技术在招聘行业的应用正变得越来越广泛&#xff0c;以下是一些关键领域的应用实例。大模型AI技术在招聘行业的应用不仅提高了效率和精确度&#xff0c;还帮助企业在竞争激烈的人才市场中获得优势。随着技术的不断发展&#xff0c;预计AI将在招聘领域扮演更加重要的角色…...

代谢组数据分析(十二):岭回归、Lasso回归、弹性网络回归构建预测模型

欢迎大家关注全网生信学习者系列: WX公zhong号:生信学习者Xiao hong书:生信学习者知hu:生信学习者CDSN:生信学习者2介绍 在代谢物预测模型的构建中,我们采用了三种主流的回归分析方法:岭回归、Lasso回归以及弹性网络回归。这三种方法各有其独特的原理和适用场景,因此在…...

顺序表(C语言详细版)

1. 线性表 线性表(lina list)是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构&#xff0c;常见的线性表&#xff1a;顺序表、链表、栈、队列、字符串...... 线性表在逻辑上是线性结构&#xff0c;也就是说连续的一条直线。但是在物理结构上并…...

【Linux】Linux常用指令合集精讲,一篇让你彻底掌握(万字真言)

文章目录 一、文件与目录操作1.1 ls - 列出目录内容1.2 cd - 切换目录1.3 pwd - 显示当前目录1.4 mkdir - 创建目录1.5 rmdir - 删除空目录1.6 rm - 删除文件或目录1.7 cp - 复制文件或目录1.8 mv - 移动或重命名文件或目录1.9 touch - 创建空文件或更新文件时间戳 二、文件内容…...

zerotier-one自建根服务器方法五

一、简介 前面几篇文章已经写完了自己建立服务器的方法&#xff0c;今天写一下我在使用过程中遇到的问题和解决方法。 二、准备工作 准备一个有公网IP的云主机。 要稳定性、安全性、不差钱的可以使用阿里、腾讯等大厂的云服务器。 本人穷屌丝一枚&#xff0c;所以我用的是免…...

掌握MySQL基础命令:主键与外键常用的命令与操作

主键是用于唯一标识表中每一行数据的字段或字段组合。在一个表中&#xff0c;主键要求具备以下特性&#xff1a; 唯一性&#xff1a;主键值必须唯一&#xff0c;确保表中每一行数据的唯一性。非空性&#xff1a;主键字段不能为空&#xff0c;这是因为不能为空值用于唯一标识每…...

K8S之网络深度剖析(一)(持续更新ing)

K8S之网络深度剖析 一 、关于K8S的网络模型 在K8s的世界上,IP是以Pod为单位进行分配的。一个Pod内部的所有容器共享一个网络堆栈(相当于一个网络命名空间,它们的IP地址、网络设备、配置等都是共享的)。按照这个网络原则抽象出来的为每个Pod都设置一个IP地址的模型也被称作为I…...

Land survey boundary report (template)

Land survey boundary report (template) 土地勘测定界报告&#xff08;模板&#xff09;.doc...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法&#xff1a;原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件&#xff0c;如包含恶意代码、敏感数据或欺诈内容的文档&#xff0c;在企业协同办公环境中&#xff08;如Teams、Google Workspace&#xff09;尤为重要。结合大模型技术&…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...