数字图像处理 实验三 数字图像的几何运算

news2025/1/11 7:10:35

一、实验目的

掌握图像的基本几何变换的方法

        1. 图像的平移 

        2. 图像的旋转

二、实验环境

        1. PC计算机

        2. MatLab软件/语言包括图像处理工具箱(Image Processing Toolbox)

        3. 实验所需要的图片

三、实验原理

提示:图片平移就是实现运算

四、实验图像

           

图片名称:                       kugou.jpeg                                       QQ.jpeg

图片尺寸:                       512*512*3                                      512*512*3 

五、实验步骤和结果

练习用matalb命令实现图像的缩放、旋转和平移操作

1. 读入图像并显示。

A = imread('kugou.jpeg');  
imshow(A);

B = imread("QQ.jpeg");  
imshow(B);

2. 将图像放大1.5倍,插值方法使用三种不同方法,显示放大后的图像,比较不同插值方法的结果有什么不同。将图像放大到其它倍数,重复实验;选用其它图像,重复实验。

A1 = imresize(A, 1.5, 'nearest');  
imshow(A1);

B1 = imresize(B, 1.5, 'nearest');  
imshow(B1);

A2 = imresize(A, 1.5, 'bilinear');  
imshow(A2);

B2 = imresize(B, 1.5, 'bilinear');  
imshow(B2);

A3 = imresize(A, 1.5, 'bicubic');  
imshow(A3);

B3 = imresize(B, 1.5, 'bicubic');  
imshow(B3);

最近邻域内插计算量较小,但可能会造成插值生成的图像灰度上的不连续,在灰度变化的地方可能出现明显的锯齿状。

双线性内插法的计算比最邻近点法复杂,计算量较大,但没有灰度不连续的缺点,结果基本令人满意。它具有低通滤波性质,使高频分量受损,图像轮廓可能会有一点模糊。

双三次内插方法计算量较大,但插值后的图像效果最好。

3. 图像缩小0.8、0.5倍,插值方法使用三种不同方法,显示并比较结果有什么差异。

提示:用imresize函数,imresize函数的语法格式为:B = imresize(A, m, method)

这里参数method用于指定插值的方法,可选用的值为'nearest'(最邻近法),'bilinear' (双线性插值),'bicubic'(双三次插值),默认为'nearest'。

A1 = imresize(A, 0.8, 'nearest');  
imshow(A1);
B1 = imresize(B, 0.8, 'nearest');  
imshow(B1);

A2 = imresize(A, 0.8, 'bilinear');  
imshow(A2);
B2 = imresize(B, 0.8, 'bilinear');  
imshow(B2);

A3 = imresize(A, 0.8, 'bicubic');  
imshow(A3);
B3 = imresize(B, 0.8, 'bicubic');  
imshow(B3);

A1 = imresize(A, 0.5, 'nearest');  
imshow(A1);
B1 = imresize(B, 0.5, 'nearest');  
imshow(B1);

A2 = imresize(A, 0.5, 'bilinear');  
imshow(A2);
B2 = imresize(B, 0.5, 'bilinear');  
imshow(B2);

A3 = imresize(A, 0.5, 'bicubic');  
imshow(A3);
B3 = imresize(B, 0.5, 'bicubic');  
imshow(B3);

最近邻域内插计算量较小,但可能会造成插值生成的图像灰度上的不连续,在灰度变化的地方可能出现明显的锯齿状。

双线性内插法的计算比最邻近点法复杂,计算量较大,但没有灰度不连续的缺点,结果基本令人满意。它具有低通滤波性质,使高频分量受损,图像轮廓可能会有一点模糊。

双三次内插方法计算量较大,但插值后的图像效果最好。

4. 图像分别顺时针旋转30度、45度,插值方法使用三种不同方法,显示旋转后的图像并比较结果有什么不同。

提示:用imrotate函数,imrotate的语法格式为:B = imrotate(A, angle, method)

函数imrotate对图像进行旋转,参数method用于指定插值的方法,可选用的值为'nearest'(最邻近法),'bilinear'(双线性插值),'bicubic'(双三次插值),默认为'nearest'。一般说来旋转后的图像会比原图大,超出原图部分值为0。

A1 = imrotate(A, 30, 'nearest');  
imshow(A1);
B1 = imrotate(B, 30, 'nearest');  
imshow(B1);

A2 = imrotate(A, 30, 'bilinea');  
imshow(A2);
B2 = imrotate(B, 30, 'bilinea');  
imshow(B2);

A3 = imrotate(A, 30, 'bicubic');  
imshow(A3);
B3 = imrotate(B, 30, 'bicubic');  
imshow(B3);

A1 = imrotate(A, 45, 'nearest');  
imshow(A1);
B1 = imrotate(B, 45, 'nearest');  
imshow(B1);

A2 = imrotate(A, 45, 'bilinea');  
imshow(A2);
B2 = imrotate(B, 45, 'bilinea');  
imshow(B2);

A3 = imrotate(A, 45, 'bicubic');  
imshow(A3);
B3 = imrotate(B, 45, 'bicubic');  
imshow(B3);

最近邻域内插计算量较小,但可能会造成插值生成的图像灰度上的不连续,在灰度变化的地方可能出现明显的锯齿状。

双线性内插法的计算比最邻近点法复杂,计算量较大,但没有灰度不连续的缺点,结果基本令人满意。它具有低通滤波性质,使高频分量受损,图像轮廓可能会有一点模糊。

双三次内插方法计算量较大,但插值后的图像效果最好。

5. 编写实现图像平移的函数。

% 编写实现图像平移的函数hmove,平移量为x0,y0,平移前图像矩阵为i
function [I]=hmove(i,x0,y0); 
[r,c]=size(i);               
I(r+x0,c+y0)=0;            % 平移后图像矩阵为I
for x=1:r;
    for y=1:c;
        x1=x+x0;
        y1=y+y0;
        I(x1,y1)=i(x,y);
    end;
end;

6. 调用平移函数,将灰度图平移100行20列,在同一个窗口中显示平移前和平移后的图像。

函数调用示例:I1=hmove(gray1,100,20);

I = im2double(A);  
I1=hmove(I, 100, 20);  
imshow(I1);

I = im2double(B);  
I1=hmove(I, 100, 20);  
imshow(I1);

六、实验思考

通过本次实验,初步掌握了图像的平移、旋转等图像的基本几何变换的方法。

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

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

相关文章

卷积神经网络比于全连接神经网络强在哪?

卷积神经网络(Convolutional Neural Networks,简称CNN)与全连接神经网络(Fully Connected Neural Networks,简称FFNN)是深度学习和神经网络领域中两种最为常见的网络结构。两者在结构、工作原理及应用场景上…

超融合承载 PostgreSQL 数据库和 AI 系统的性能评测|金融行业实践

随着人工智能技术的日渐成熟,不少金融用户也开发了自己的 AI 应用系统,协助实际业务中诸如文字识别、图像转换、信息录入等工作,提升业务效率。不过,AI 应用系统普遍依赖 GPU 提供强大算力,对底层存储的性能也有较高的…

VBA信息获取与处理第四个专题第二节:将工作表数据写入VBA数组

《VBA信息获取与处理》教程(版权10178984)是我推出第六套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互…

汽车IVI中控开发入门及进阶(三十七):基于HFP协议的蓝牙电话

概述: HFP全称Hands-free Profile,是一款让蓝牙设备控制电话的软件,多用于汽车上。此类设备最常见的例子是车载免提装置与蜂窝电话或可穿戴无线耳机一起使用。该配置文件定义了支持免提配置文件的两个设备如何在点对点的基础上相互交互。免提模式的实现通常使耳机或嵌入式免…

声音克隆技术:探索与实践 —— 从GPT-SoVITS V2到未来趋势20241201

声音克隆技术:探索与实践 —— 从GPT-SoVITS V2到未来趋势 引言:AI与声音创作的完美碰撞 🎤✨ 声音克隆技术正以惊人的速度改变语音生成的方式。从文本到语音,从音色到情感,人工智能赋予了声音创作全新的可能性。 在这…

ip地址显示本地局域网什么意思?ip地址冲突怎么解决

在日常使用网络的过程中,我们可能会遇到IP地址显示“本地局域网”的情况,同时,局域网内IP地址冲突也是一个常见且令人头疼的问题。本文将首先解释IP地址显示本地局域网的含义,随后详细探讨局域网IP地址冲突的解决方法,…

MR30分布式IO模块赋能喷水织机

纺织行业作为我国传统支柱产业,历经数千年的演变,如今仍面临着诸多困境,在纺织行业中,每一次技术的飞跃都是对行业边界的勇敢探索。在纺织行业,喷水织机作为关键生产设备,其性能直接影响到产品质量和产能。…

自建服务器,数据安全有保障

在远程桌面工具的选择上,向日葵和TeamViewer功能强大,但都存在收费昂贵、依赖第三方服务器、数据隐私难以完全掌控等问题。相比之下,RustDesk 凭借开源免费、自建服务的特性脱颖而出!用户可以在自己的服务器上部署RustDesk服务端&…

html小白初学

语义化更易读,seo;搜索引擎优化 块级元素:独占一行,不管内容长度 内联元素:紧跟着排列 盒模型: 标准盒模型,内容即为长宽,内外边距,框都不算。 怪异盒模型&#xff0…

Python subprocess.run 使用注意事项,避免出现list index out of range

在执行iOS UI 自动化专项测试的时候,在运行第一遍的时候遇到了这样的错误: 2024-12-04 20:22:27 ERROR conftest pytest_runtest_makereport 106 Test test_open_stream.py::TestOpenStream::test_xxx_open_stream[iPhoneX-xxx-1-250] failed with err…

RTCMultiConnection 跨域问题解决

js套件地址 https://github.com/muaz-khan/RTCMultiConnection server套件地址 https://github.com/muaz-khan/RTCMultiConnection-Server 要解决的就是server代码的跨域问题 原装写法: 解决写法: // 喜欢组合语法的自己组 const io new ioServer.S…

即时通信系统项目总览

聊天室服务端项目总体介绍 本项目是一个全栈的即时通信系统, 前端使用QT实现聊天客户端, 后端采⽤微服务框架设计, 由网关子服务统一接收客户端的请求, 再分发到不同的子服务上处理并将结果返回给网关, 网关再将响应转发给客户端 拆分的微服务包含: 网关服务器&…

网络原理之 TCP 协议

目录 1. TCP 协议格式 2. TCP 原理 (1) 确认应答 (2) 超时重传 (3) 连接管理 a) 三次握手 b) 四次挥手 (4) 滑动窗口 (5) 流量控制 (6) 拥塞控制 (7) 延时应答 (8) 捎带应答 3. TCP 特性 4. 异常情况的处理 1) 进程崩溃 2) 主机关机 (正常流程) 3) 主机掉电 (…

从零开始的使用SpringBoot和WebSocket打造实时共享文本应用

在现代应用中,实时协作已经成为了非常重要的功能,尤其是在文档编辑、聊天系统和在线编程等场景中。通过实时共享文档,多个用户可以同时对同一份文档进行编辑,并能看到其他人的编辑内容。这种功能广泛应用于 Google Docs、Notion 等…

「Mac畅玩鸿蒙与硬件43」UI互动应用篇20 - 闪烁按钮效果

本篇将带你实现一个带有闪烁动画的按钮交互效果。通过动态改变按钮颜色,用户可以在视觉上感受到按钮的闪烁效果,提升界面互动体验。 关键词 UI互动应用闪烁动画动态按钮状态管理用户交互 一、功能说明 闪烁按钮效果应用实现了一个动态交互功能&#xf…

SSM报错:表现层方法应该返回字符串,但是返回页面

在进行SSM项目时,后端表现层应该返回给前端字符串,但是却跳转页面 1.首先检查是否使用ResponseBody注解 ResponseBody注解 作用:将java对象转为json格式的数据。将controller的方法返回的对象通过适当的转换器转换为指定的格式之后&#xff0…

重生之我在异世界学编程之C语言:深入结构体篇(上)

大家好,这里是小编的博客频道 小编的博客:就爱学编程 很高兴在CSDN这个大家庭与大家相识,希望能在这里与大家共同进步,共同收获更好的自己!!! 本文目录 引言正文《1》 结构体的两种声明一、结构…

Diffusion中guidance_scale 的理解

guidance_scale 是一个控制生成图像引导程度的参数。它的含义和使用与论文 Imagen: Photorealistic Text-to-Image Diffusion Models with Composable Conditions 中的公式 (2) 的引导权重 类似。 1. Classifier-Free Guidance 的背景 Classifier-Free Guidance 是一种在扩散…

【kettle】mysql数据抽取至kafka/消费kafka数据存入mysql

目录 一、mysql数据抽取至kafka1、表输入2、json output3、kafka producer4、启动转换,查看是否可以消费 二、消费kafka数据存入mysql1、Kafka consumer2、Get records from stream3、字段选择4、JSON input5、表输出 一、mysql数据抽取至kafka 1、表输入 点击新建…

新书速览|循序渐进Node.js企业级开发实践

《循序渐进Node.js企业级开发实践》 1 本书内容 《循序渐进Node.js企业级开发实践》结合作者多年一线开发实践,系统地介绍了Node.js技术栈及其在企业级开发中的应用。全书共分5部分,第1部分基础知识(第1~3章)&#xf…