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

相关文章

计算绕原点旋转某角度后的点的坐标

问题: A点(x, y)按顺时针旋转 theta 角度后点的坐标为A1点(x1,y1)  ,求x1 y1坐标用(x,y)和 theta 来表示 方法一: 设 OA 向量和x轴的角度为 alpha , 那么顺时针转过 theta后 ,OA1 向量和x轴的角度为 (alpha - theta) 。 使用圆的参数方程来表示点坐标。A的坐标可以表示为: \[\left\{ {\begin{ar

RedHat运维-Linux文本操作基础-AWK进阶

你不用整理,跟着敲一遍,有个印象,然后把它保存到本地,以后要用再去看,如果有了新东西,你自个再添加。这是我参考牛客上的shell编程专项题,只不过换成了问答的方式而已。不用背,就算是我自己亲自敲,我现在好多也记不住。 1. 输出nowcoder.txt文件第5行的内容 2. 输出nowcoder.txt文件第6行的内容 3. 输出nowcoder.txt文件第7行的内容 4. 输出nowcode

KLayout ------ 旋转物体90度并做平移

KLayout ------ 旋转创建的物体 正文 正文 前段时间,有个小伙伴留言问我,KLayout 中如何旋转自己创建的物体,这里特来说明一下。 import pyapoly = pya.DPolygon([pya.DPoint(0, 0), pya.DPoint(0, 5), pya

SQL Server中,always on服务器的相关操作

在SQL Server中,建立了always on服务,可用于数据库的同步备份,当数据库出现问题后,always on服务会自动切换主从服务器。 例如192.168.1.10为主服务器,12为从服务器,当主服务器出现问题后,always on自动将主服务器切换为12,保证数据库正常访问。 对于always on服务器有如下操作: 1、切换主从服务器:假如需要手动切换主从服务器时(如果两个服务

Steam邮件推送内容有哪些?配置教程详解!

Steam邮件推送功能是否安全?如何个性化邮件推送内容? Steam作为全球最大的数字游戏分发平台之一,不仅提供了海量的游戏资源,还通过邮件推送为用户提供最新的游戏信息、促销活动和个性化推荐。AokSend将详细介绍Steam邮件推送的主要内容。 Steam邮件推送:促销优惠 每当平台举办大型促销活动,如夏季促销、冬季促销、黑色星期五等,用户都会收到邮件通知。这些邮件详细列出了打折游戏、

JavaWeb系列二十: jQuery的DOM操作 下

jQuery的DOM操作 CSS-DOM操作多选框案例页面加载完毕触发方法作业布置jQuery获取选中复选框的值jQuery控制checkbox被选中jQuery控制(全选/全不选/反选)jQuery动态添加删除用户 CSS-DOM操作 获取和设置元素的样式属性: css()获取和设置元素透明度: opacity属性获取和设置元素高度, 宽度: height(), widt

X-AnyLabeling使用教程

1.AI 模型自动分割标注使用教程 2.AI 模型自动目标检测标注使用教程

PS的一些操作~持续抄袭中....

套索工具使用时移动图片——按住空格键,鼠标左键按住,拖动!

剑指offer(C++)--左旋转字符串

题目 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它! class Solution {public:string LeftRotateStri

青龙面板2.9之Cdle傻妞机器人编译教程

看到有的朋友对傻妞机器人感兴趣,这里写一下傻妞机器人的编译教程。 第一步,这里以linux amd64为例,去官网下载安装go语言安装包: 第二步,输入下方指令 cd /usr/local && wget https://golang.google.cn/dl/go1.16.7.linux-amd64.tar.gz -O go1.16.7.linux-amd64.tar.gz