实验 1 MATLAB 图像处理基础

news2024/11/28 15:59:50

一、实验目的

1. 熟悉启动和退出 MATLAB 的方法。

2. 熟悉 MATLAB 命令窗口的组成。

3. 掌握 MATLAB 基本绘图函数和图像处理函数的使用。

4. 掌握图像内插和灰度图像的集合运算。

二、实验例题

1. 求下列表达式的值

(1)

(2)

答:

(1)

y1=exp(2)/2*sin(35*pi/180)
y1 =
2.1191

(2)

方法 1:用逻辑表达式

t=0:1:5;
y2=(0<=t&t<3).*sqrt(t+1)+(3<=t&t<=5).*(t.^2-7)
%或者 y2=(t>=0&t<3).* sqrt(t+1)+(t>=3&t<=5).*(t.^2-7)
y2 =
1.0000 1.4142 1.7321 2.0000 9.0000 18.0000

方法 2:用循环结构和选择结构

y2=[]; i=0;
for t=0:1:5;
    if 0<=t&t<3
        y= sqrt(t+1);
    else 3<=t&t<=5
        y=t^2-7;
    end
    i=i+1;
    y2(i)=y;
end
y2
y2 =
1.0000 1.4142 1.7321 2.0000 9.0000 18.0000

2. find 函数和空矩阵的使用

找出字符串 abscdsesfs 中的‘s’所在的位置并计数,然后求将所有‘s’删除后的字符串。

答:

str='abscdsesfs';
k=find(str>'r'&str<'t')
k =
3 6 8 10
length(k)
ans =
4
str(k)=[];
str
str =
abcdef

3. 基本图像处理函数的使用

(1) 读入和显示图像。读入图 1 所示的 Peppers 图像,并使用 imshow 函数将其显示出来。(当要用 imshow 显示另一幅图像时, MATLAB 会用新图像替换旧图像,为保持第一幅图像并同时显示第二幅图像,可使用 figure 函数,如(3)中的代码所示)。

(2) 保存图像。将图 1 的图像保存成 bmp 格式的 Peppers。 MATLAB 中函数 imread 和imwrite所支持的一些常用图像/图形格式如表 1 所示。

1 MATLAB 中函数 imread imwrite 所支持的一些常用图像/图形格式

格式名称

描述

可识别扩展符

TIFF

加标识的图像文件格式

.tif, .tiff

JPEG

联合图像专家组

.jpg, .jpeg

GIF

图形交换格式

.gif

BMP

Windows 位图

.bmp

PNG

可移植网络图像

.png

XWD

X Window 转储

.xwd

(3) 用函数 rgb2gray 将图 1 所示的彩色图像转换成灰度图像。

(4) 用 imhist 函数绘制灰度图像的直方图。

(5) 图像窗口分割。用函数 subplot,将图像窗口分割成布局,在第一个窗口中显示

原始的 Peppers 图像,在第二个窗口显示其灰度图像。

(6) 图像翻转。将 Peppers 的灰度图像进行上下翻转。

图1 Peppers图像

答:

(1)

f=imread('例 3.Peppers.tiff');
imshow(f)

(2)

imwrite(f,'Peppers02.bmp')

(3)

g=rgb2gray(f);
figure; imshow(g)

(4)

imhist(g)

(5)

subplot(1,2,1)
imshow(f);
subplot(1,2,2)
imshow(g);

(6)

g1=g(end:-1:1,:);
figure; imshow(g1);

4. 曲线的绘制

色彩、点型与线型的设置在很多情况下,为在同一个图像窗口中展示不同的信息,我们需要设置不同属性的曲线,例如不同的色彩、数据点型以及线型。绘图指令的颜色、点型和线型的相关参数如表 2 所示。

绘图指令参量由线型符号、色彩符号和点型符号中各选一个符号组合而成,也可以由其中的一项或多项组成, 没有先后顺序。

练习:

(1) 用 plot 函数,在同一个图像窗口中绘制函数 ,将曲线的色彩设置为红色,线型设置为实线,点型为十字符; 将曲线的色彩设置为蓝色,线型为虚线,点型为空心圆。 设置坐标轴刻度为“Times New Roman”,字号 12 磅。

(2) 设置标题为“余弦函数和正弦函数”, 设置图例为“”和“ ”, 标注 x 轴和 y 轴,中文字体为“宋体”,英文为“Times New Roman”,字号 12 磅。 注意,变量 x y 标注时为斜体。

答:

(1)

x=0:pi/10:2*pi;
y1=cos(x);
y2=sin(x);
plot(x,y1,'-r+');
hold on
plot(x,y2,':bo');
hold off
set(gca,'Fontname', 'Times New Roman', 'FontSize',12);

(2)

title('\fontname{宋体}余弦函数和正弦函数','FontSize',12);
legend('\ity\rm_1', '\ity\rm_2')
xlabel('\fontname{Times New Roman}{\itx }\fontname{宋体}轴', 'FontSize',12);
ylabel('\fontname{Times New Roman}{\ity }\fontname{宋体}轴', 'FontSize',12);
% \rm 转变为罗马族,直立形状,中等粗细系列的字体属性,这是默认的字体
% \it 转变为罗马族,斜体形状,中等粗细系列的字体属性

5. 图像内插

图像内插由工具箱中的函数 interp2 实现,该函数的语法为:

ZI = interp2(X, Y, Z, XI, YI, method)

其中, ZI 是对 X、 Y 和 Z 定义的二维数组进行对应于 XI 和 YI 的内插运算的返回数组,默认 X = 1:n、 Y = 1:m,这里[m, n] = size(Z)。 参数 method 定义了选择内插的方法,可选的方法包括:

(1) ‘nearest’: 最近邻内插;

(2) ‘linear’: 双线性内插(默认);

(3) ‘spline’: 三次样条内插;

(4) ‘cubic’: 双三次内插。

练习:

图 2 给出了一幅大小为 165×166 的图像,其原来的大小为 2136×2140。请分别用最近邻内插、双线性内插和双三次内插这三种方法,将图 2 的图像放大到原来的大小。

图2 内插实验

答:

clear all; close all; clc;
f = imread('例 5.内插实验.tif');
f = double(f);
[X,Y]=meshgrid(0:165,0:164);
[XI,YI]=meshgrid(0:165/2139:165,0:164/2135:164);
ZI1 = interp2(X, Y, f, XI, YI, 'nearest');
figure; imshow(ZI1,[]);
ZI2 = interp2(X, Y, f, XI, YI, 'linear');
figure; imshow(ZI2,[]);
ZI3 = interp2(X, Y, f, XI, YI, 'cubic');
figure; imshow(ZI3,[]);

最邻近内插

双线性内插

双三次内插

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/153057.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

索尼数字人研究:画质超逼真,面部表情与身体动作保持协调

近年来&#xff0c;3D动捕、数字虚拟人等技术受到越来越多关注&#xff0c;它不仅可以应用于电影场景&#xff0c;游戏、社交等领域也开始采用。相比于过去高成本、高门槛的全身动捕技术&#xff0c;现在制作基于动捕的虚拟人越来越容易&#xff0c;不需要过高的成本或是专业技…

Linux 可加载内核模块剖析

Linux 就是通常所说的单内核&#xff08;monolithic kernel&#xff09;&#xff0c;即操作系统的大部分功能都被称为内核&#xff0c;并在特权模式下运行。 它与微型内核不同&#xff0c;后者只把基本的功能&#xff08;进程间通信 [IPC]、调度、基本的输入/输出 [I/O] 和内存…

Hudi系列1:Hudi介绍

文章目录一. 什么是Hudi二. 发展历史三. Hudi 功能和特性四. Hudi 基础架构五. 使用公司六. 小结参考:一. 什么是Hudi Apache Hudi&#xff08;发音“hoodie”&#xff09;是下一代流数据湖平台。Apache Hudi将核心仓库和数据库功能直接带到数据湖中。Hudi提供了表&#xff0c…

6.6 工具-ELK安装

目录 6.6.1 Elasticsearch安装 6.6.1.1 安装 6.6.1.1.1 window 6.6.1.1.2 Linux 6.6.1.2 问题 6.6.1.2.1 问题一 6.6.1.2.2 问题二 6.6.2 Logstash安装 6.6.2.1 安装 6.6.2.1.1 window 6.6.2.1.2 Linux 6.6.2.2 问题 6.6.2.2.1 问题一 6.6.3 Kibana 6.6.3.1 安装…

论文投稿指南——中文核心期刊推荐(中国医学)

【前言】 &#x1f680; 想发论文怎么办&#xff1f;手把手教你论文如何投稿&#xff01;那么&#xff0c;首先要搞懂投稿目标——论文期刊 &#x1f384; 在期刊论文的分布中&#xff0c;存在一种普遍现象&#xff1a;即对于某一特定的学科或专业来说&#xff0c;少数期刊所含…

拿捏几道经典的字符串模拟问题

希望本篇对你有所帮助 我发现这种字符串的问题其实写起来很麻烦&#xff0c;可能思路不难多少都能想到一些&#xff0c;主要就是代码的处理&#xff0c;细节问题。太考验代码编写的能力了。这两天写了好多道字符串&#xff0c;模拟之类的问题&#xff0c;今天就分享分享吧 刚…

算法设计与分析-DP习题

7-1 最小路径和给定一个m行n列的矩阵&#xff0c;从左上角开始每次只能向右或者向下移动&#xff0c;最后到达右下角的位置&#xff0c;路径上的所有数字累加起来作为这条路径的和。求矩阵的最小路径和。输入格式:输入第一行&#xff1a;两个正整数m和n(1<m, n<1000)&…

【C++】非类型模板参数、模板特化、模板的分离编译、模板总结

文章目录一、非类型模板参数二、模板特化1.函数模板特化2.类模板特化三、模板的分离编译四、模板总结一、非类型模板参数 模板参数分类类型形参与非类型形参。 类型形参&#xff1a;出现在模板参数列表中&#xff0c;跟在class或者typename之类的参数类型名称。 #define N 10…

Spring_FrameWork_05(AOP)

Spring整合Junit RunWith(SpringJUnit4ClassRunner.class) ContextConfiguration(classes SpringConfig.class)加载test运行类和spring配置文件 使用Junit提供的Runwith注解&#xff0c;将Junit原有的运行器替换成spring提供的SpringJUnit4ClassRunner。 这个注解的值就是运…

【计算机视觉】Softmax代码实现、过拟合和欠拟合的表现与解决方法

Softmax原理 Softmax函数用于将分类结果归一化&#xff0c;形成一个概率分布。作用类似于二分类中的Sigmoid函数。 对于一个k维向量z&#xff0c;我们想把这个结果转换为一个k个类别的概率分布p(z)。softmax可以用于实现上述结果&#xff0c;具体计算公式为&#xff1a; 对于k…

程序员不了解这些投简历的巨坑,面试注定一开始就失败!

目录 前言第一阶段&#xff1a;练手第二阶段&#xff1a;冲刺第三阶段&#xff1a;收尾 前言 之前写了两篇文章&#xff0c;给大家介绍了一下如何利用短期的时间&#xff0c;尽可能充分的为面试做准备&#xff1a; 1.《我只是把握好了这3点&#xff0c;1个月后成功拿下大厂…

2023春节祝福系列第一弹(下)(放飞祈福孔明灯,祝福大家身体健康)(附完整源代码及资源免费下载)

2023春节祝福系列第一弹&#xff08;下&#xff09; &#xff08;放飞祈福孔明灯&#xff0c;祝福大家身体健康&#xff09; &#xff08;附完整源代码及资源免费下载&#xff09; 目录 四、画一朵真实的祥云 &#xff08;1&#xff09;、画一个渐变的白色径向渐变背景 &a…

外业调查工具助手,照片采集、精准定位、导航、地图查看

你是不是在外业调查时要背着一堆图纸 是不是一不小心图纸污损或丢失&#xff0c;工作又得重做 是不是经常会出现图纸标注的空间不足 是不是外业采集中要携带一大堆繁琐的仪器 是不是每次收集的数据、照片等在整理的过程中发现工作量巨大 是不是经常会出现采集回来的内容跟…

《MySQL 入门教程》第 36 篇 Python 访问 MySQL

本篇我们介绍如何利用 Python DB API 连接和操作 MySQL 数据库&#xff0c;包括数据的增删改查操作、存储过程调用以及事务处理等。 Python 是一种高级、通用的解释型编程语言&#xff0c;以其优雅、准确、 简单的语言特性&#xff0c;在云计算、Web 开发、自动化运维、数据科…

Spark / Java - atomic.LongAccumulator 与 Spark.util.LongAccumulator 计数使用

目录 一.引言 二.atomic.LongAccumulator 1.构造方法 2.使用方法 3.创建并使用 三.Spark.util.LongAccumulator 1.构造方法 2.使用方法 一.引言 使用 Spark 进行大数据分析或相关操作时&#xff0c;经常需要统计某个步骤或多个步骤的相对耗时或数量&#xff0c;java.u…

Java设计模式-适配器模式Adapter

介绍 适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示&#xff0c;主的目的是兼容性&#xff0c;让原本 因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper)适配器模式属于结构型模式主要分为三类&#xff1a;类适配器模式、…

树莓派自带的python3.9->python3.7

卸载python3.9&#xff1a;sudo apt-get remove python3卸载之后一些包可以使用sudo apt autoremove这个命令删除卸载成功如果出现问题后续再来更新&#xff08;出现问题后后续安装python也会失败&#xff09;&#xff08;先不要安装先看&#xff09;安装python3.7&#xff1a;…

C语言第30课笔记

1.strerror(errno要包含头文件errno.h) 2.perror头文件为stdio.h 3.一些字符函数 4.字母大小写转换函数 5.memmove理论上是memcpy的升级版(可以自己拷贝自己)。 6.匿名结构体类型在类型创建好了之后直接创建变量&#xff0c;只能用一次。两个完全相同的匿名结构体类型&#xf…

【八】Netty HTTP协议--文件服务系统开发

Netty HTTP协议--文件服务系统开发介绍HTTP-文件系统场景描述流程图代码展示netty依赖服务端启动类 HttpFileServer服务端业务逻辑处理类 HttpFileServerHandler结果展示错误路径文件夹路径文件路径遗留bugbug版本总结介绍 由于Netty天生是异步事件驱动的架构&#xff0c;因此…

java EE初阶 — Synchronized 的原理

文章目录1. Synchronized 的优化操作1.1 偏向锁1.2 轻量级锁&#xff08;自旋锁&#xff09;1.3 重量级锁2. 其他的优化操作2.1 锁消除2.2 锁粗化3. 相关面试题1. Synchronized 的优化操作 两个线程针对同一个对象加锁&#xff0c;就会产生阻塞等待。 Synchronized 内部其实还有…