DSP教学实验箱_数字图像处理_操作教程:5-1 图像旋转

2024-06-14 15:04

本文主要是介绍DSP教学实验箱_数字图像处理_操作教程:5-1 图像旋转,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、实验目的

学习图像旋转的原理,掌握图像的读取方法,并实现图像旋转。

二、实验原理

图像旋转

图像的旋转是指以图像的某一点为原点以逆时针或顺时针旋转一定的角度。其本质是以图像的中心为原点,将图像上的所有像素都旋转一个相同的角度。和图像平移一样,图像旋转也是图像的位置变换,对于旋转后超出源图像范围的区域要处理为不显示。

旋转后的图像不会变形,但是其垂直对称轴和水平对称轴都发生了变化,旋转后像素的坐标要经过复杂的数学运算得出。而且图像在经过旋转变换后,其宽度和高度都要发生变化,所以原始图像的中心点和输出图像的中心点的坐标是不同的。

图像的旋转不再是由一个矩阵变换就能获得坐标的映射关系,它涉及多次矩阵变换。

在数学坐标系中,将坐标为(x_0,y_0)的像素点顺时针旋转θ角度后,其坐标为(x,y),其中r表示像素坐标距离原点的距离,α表示旋转前像素点与原点连线夹角的度数。

image.png

旋转前:

x_0=rcosα

y_0=rsinα

旋转后:

x=rcos(α−θ)=rcosαcosθ+rsinαsinθ=x_0cosθ+y_0sinθ

y=rsin(α−θ)=rsinαcosθ−rcosαsinθ=−x_0sinθ+y_0cosθ

image.png

坐标系

在旋转过程中,需要经过两次坐标变换。图像的坐标系和数学的坐标系是不一样的。在数字图像的坐标系中,y轴在下方,而在数学坐标系中,y轴在上方。

image.png

坐标映射

(1)图像的旋转是按照图像的中心点旋转指定角度,为了转换方便,需要以图像的中心作为坐标原点,故在进行旋转操作前需要先对坐标进行变换,即将图像坐标系转换为数学坐标系。

设原始图像的宽度和高度分别为W和H,则第一次映射关系为:

x=x_0−0.5W

y=y_0−0.5H

(2)图像经过旋转后需要再次进行坐标转换,将数学坐标系转换为图像的坐标系。

x=x_0+0.5W_new

y=y_0+0.5H_new

图像旋转的核心公式

通过图像旋转的核心公式可求得输出图像任意像素映射在原始图像的坐标位置。其中,f_1和f_2为两个中间量(旋转参数)。

image.png

程序流程设计

程序流程设计中首先要读取工程目录下的BMP图像,接着进行旋转处理,最后保存旋转后的图像。

image.png

三、操作现象

本实验所需硬件为实验板、仿真器和电源。

image.png

硬件连接

(1)连接仿真器和电脑的USB接口,

(2)将拨码开关拨到DEBUG模式01111,连接实验箱电源,拨动电源开关上电。

image.png

软件操作

导入工程,选择Demo文件夹下的对应工程

编译工程,生成可执行文件

将CCS连接实验箱并加载程序

程序加载完成后点击运行程序

运行程序后,CCS的Console窗口会打印相关信息。

稍等片刻后,图像处理完成,程序执行完成后会在断点处停下。

可以通过 CCS 的图像显示窗口查看处理前后的图片对比。

点击工具,选择图像分析工具。在弹出的 Image 窗口中右击鼠标,在弹出的菜单栏中选择"Import Properties",选择工程目录下的 in.txt 配置文件,选择后等待图片加载,加载完成后显示原图片。

txt 配置文件是提前配置好的图像属性,在 Properties 属性可看到 in.txt 文件的设置参数。

再次点击工具,选择图像分析工具。在弹出的 Image 窗口中右击鼠标,在弹出的菜单栏中选择"Import Properties",选择工程目录下的out.txt 配置文件,选择后等待图片加载,加载完成后显示旋转后的图片。

在 Properties 属性可看到out.txt 文件的设置参数。

同时,可在工程的Image 目录下直接查看转换后的图片 Out.bmp。

实验结束后,点击红色按钮退出CCS与实验箱的连接,最后实验箱断电即可。

image.png

这篇关于DSP教学实验箱_数字图像处理_操作教程:5-1 图像旋转的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1060736

相关文章

全网最全Tomcat完全卸载重装教程小结

《全网最全Tomcat完全卸载重装教程小结》windows系统卸载Tomcat重新通过ZIP方式安装Tomcat,优点是灵活可控,适合开发者自定义配置,手动配置环境变量后,可通过命令行快速启动和管理... 目录一、完全卸载Tomcat1. 停止Tomcat服务2. 通过控制面板卸载3. 手动删除残留文件4.

使用Java填充Word模板的操作指南

《使用Java填充Word模板的操作指南》本文介绍了Java填充Word模板的实现方法,包括文本、列表和复选框的填充,首先通过Word域功能设置模板变量,然后使用poi-tl、aspose-words... 目录前言一、设置word模板普通字段列表字段复选框二、代码1. 引入POM2. 模板放入项目3.代码

利用Python操作Word文档页码的实际应用

《利用Python操作Word文档页码的实际应用》在撰写长篇文档时,经常需要将文档分成多个节,每个节都需要单独的页码,下面:本文主要介绍利用Python操作Word文档页码的相关资料,文中通过代码... 目录需求:文档详情:要求:该程序的功能是:总结需求:一次性处理24个文档的页码。文档详情:1、每个

Python的pandas库基础知识超详细教程

《Python的pandas库基础知识超详细教程》Pandas是Python数据处理核心库,提供Series和DataFrame结构,支持CSV/Excel/SQL等数据源导入及清洗、合并、统计等功能... 目录一、配置环境二、序列和数据表2.1 初始化2.2  获取数值2.3 获取索引2.4 索引取内容2

Python内存管理机制之垃圾回收与引用计数操作全过程

《Python内存管理机制之垃圾回收与引用计数操作全过程》SQLAlchemy是Python中最流行的ORM(对象关系映射)框架之一,它提供了高效且灵活的数据库操作方式,本文将介绍如何使用SQLAlc... 目录安装核心概念连接数据库定义数据模型创建数据库表基本CRUD操作创建数据读取数据更新数据删除数据查

Go语言中json操作的实现

《Go语言中json操作的实现》本文主要介绍了Go语言中的json操作的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录 一、jsOChina编程N 与 Go 类型对应关系️ 二、基本操作:编码与解码 三、结构体标签(Struc

python依赖管理工具UV的安装和使用教程

《python依赖管理工具UV的安装和使用教程》UV是一个用Rust编写的Python包安装和依赖管理工具,比传统工具(如pip)有着更快、更高效的体验,:本文主要介绍python依赖管理工具UV... 目录前言一、命令安装uv二、手动编译安装2.1在archlinux安装uv的依赖工具2.2从github

C#实现SHP文件读取与地图显示的完整教程

《C#实现SHP文件读取与地图显示的完整教程》在地理信息系统(GIS)开发中,SHP文件是一种常见的矢量数据格式,本文将详细介绍如何使用C#读取SHP文件并实现地图显示功能,包括坐标转换、图形渲染、平... 目录概述功能特点核心代码解析1. 文件读取与初始化2. 坐标转换3. 图形绘制4. 地图交互功能缩放

Java 字符串操作之contains 和 substring 方法最佳实践与常见问题

《Java字符串操作之contains和substring方法最佳实践与常见问题》本文给大家详细介绍Java字符串操作之contains和substring方法最佳实践与常见问题,本文结合实例... 目录一、contains 方法详解1. 方法定义与语法2. 底层实现原理3. 使用示例4. 注意事项二、su

Java Stream流与使用操作指南

《JavaStream流与使用操作指南》Stream不是数据结构,而是一种高级的数据处理工具,允许你以声明式的方式处理数据集合,类似于SQL语句操作数据库,本文给大家介绍JavaStream流与使用... 目录一、什么是stream流二、创建stream流1.单列集合创建stream流2.双列集合创建str