首页 > 其他分享 >基于RAM的几何变换——旋转

基于RAM的几何变换——旋转

时间:2024-04-17 20:12:59浏览次数:15  
标签:end title RAM 旋转 RGB 几何变换 COL ROW

基于RAM的几何变换——旋转

一、旋转的基本概念

  旋转和镜像不同的地方在于旋转可能会改变图像尺寸的大小,一辐长宽不一样的图片在旋转之后的图幅可能需要一定的裁剪,像width和height一致的图片则不需要考虑这些。实验原理则是很简单的全等三角形和坐标变换。

二、MATLAB实现

  实现代码和实验结果如下所示:

%--------公式法旋转-------------
clc;
clear all;
RGB = imread('house.png');

[ROW,COL,N] = size(RGB);

% 定义一个0~255区间的三通道的图像矩阵,分别存储,逆时针旋转90°、180°以及270°
rota1 = uint8(zeros(ROW,COL,N));
rota2 = uint8(zeros(ROW,COL,N));
rota3 = uint8(zeros(ROW,COL,N));

% 旋转270°
for i = 1:ROW
    for j = 1:COL
        for k = 1:N
            x = j;
            y = COL + 1 - i;
            z = k;
            rota3(x,y,z) = RGB(i,j,k);
        end
    end
end

% 旋转180°
for i = 1:ROW
    for j = 1:COL
        for k = 1:N
            x = COL + 1 - i;
            y = COL + 1 - j;
            z = k;
            rota2(x,y,z) = RGB(i,j,k);
        end
    end
end

% 旋转90°
for i = 1:ROW
    for j = 1:COL
        for k = 1:N
            x = COL + 1 - j;
            y = i;
            z = k;
            rota1(x,y,z) = RGB(i,j,k);
        end
    end
end

subplot(2,2,1),imshow(RGB);      title('原图');
subplot(2,2,2),imshow(rota1); title('旋转90');
subplot(2,2,3),imshow(rota2);      title('旋转180');
subplot(2,2,4),imshow(rota3); title('旋转270');

8.1

三、FPGA实现

  FPGA部分的实现代码仅仅修改了之前 isp_mirror 中的部分,将按键控制的四个模式返回的坐标值进行了相应的旋转算法移植。

  实验结果如下:

8.6

  实验结果符合预期。

参考资料:[1]咸鱼FPGA

标签:end,title,RAM,旋转,RGB,几何变换,COL,ROW
From: https://www.cnblogs.com/qier0220/p/18141654

相关文章

  • 【Nano Framework ESP32篇】WS2812 彩色灯带实验
    地球人皆知,许多物联网教程作者的心中都深爱着一灯大师,所以第一个例程总喜欢点灯,高级一点的会来个“一闪一闪亮晶晶”。老周今天要扯的也是和灯有关的,但不单纯地点个灯,那样实在不好玩,缺乏乐趣。老周打算舞个龙灯,哦不,是用LED彩色灯带给伙伴们整点炫酷乐子。说到这LED彩灯,咱们常见......
  • 在Go语言中往Kafka中发送数据,通常会使用Sarama库
    目录Sarama简介基本步骤示例代码Sarama简介Sarama是一个用Go语言编写的ApacheKafka客户端库,由Shopify公司最初开发,并在后来被IBM接管维护。Sarama库提供了一套完整的Kafka功能支持,包括生产者(Producer)、消费者(Consumer)以及消费者组(ConsumerGroup)等组件,允许开发者在Go应用程序......
  • Could not set parameters for mapping
    错误现象:Resolved[org.mybatis.spring.MyBatisSystemException:nestedexceptionisorg.apache.ibatis.type.TypeException:Couldnotsetparametersformapping:ParameterMapping{property='keywords',mode=IN,javaType=classjava.lang.Object,jdbcType=n......
  • FPGA入门笔记013——嵌入式块RAM使用之FIFO
    1、FIFO概述​ FIFO(FirstInFirstOut),即先进先出。FPGA或者ASIC中使用到的FIFO一般指的是对数据的存储具有先进先出特性的一个缓存器,常被用于数据的缓存或者高速异步数据的交互。它与普通存储器的区别是没有外部读写地址线,这样使用起来相对简单,但缺点就是只能顺序写入数据......
  • ASP.NET Core 8 EntityFrameworkCore 初体验
    介绍EntityFramework(EF)Core是轻量化、可扩展、开源和跨平台版的常用EntityFramework数据访问技术。EFCore可用作对象关系映射程序(O/RM),这可以实现以下两点:使.NET开发人员能够使用.NET对象处理数据库。无需再像通常那样编写大部分数据访问代码。先决条件V......
  • 3小时搞定DRF框架 | Django REST framework前后端分离框架实践
    DRF(全称DjangoRESTframework)是一个用于构建WebAPI的强力工具集,是一个基于Django的PythonWeb框架,它为开发人员提供了一套快速开发RESTfulAPI的工具,它能够自动化API可视化、文档化,实现接口的自动化测试以及自动化的API路由、序列化、视图、验证、分页、版本管理、认证等......
  • JSNice:Predicting Program Properties from “Big Code”
    发表:ACMSIGPLANNotices,2015,苏黎世联邦理工学院计算机科学系SoftwareReliabilityLab,AndreasKrause团队(https://scholar.google.com/citations?user=eDHv58AAAAAJ)(https://www.sri.inf.ethz.ch/research/plml)工具:http://jsnice.org内容概括  文章通过“大代码”......
  • 阿里云消息队列升级全新品牌 ApsaraMQ丨阿里云云原生 3 月产品月报
    云原生月度动态云原生是企业数字创新的最短路径。《阿里云云原生每月动态》,从趋势热点、产品新功能、服务客户、开源与开发者动态等方面,为企业提供数字化的路径与指南。趋势热点......
  • iframe跨域,获取iframe中元素
    1.需求让iframe嵌入页面,并且没有滚动条,也就是相当于两个页面拼接在一起跨域解决,通过框架配置代理proxy:{'/medical':{target:'https://example.com',changeOrigin:true,pathRewrite:{'^/medical':'',},},}......
  • entity framework 锁
    entityframework锁在EntityFramework中,锁定是通过TransactionScope类或使用查询中的MergeOption来实现的。使用TransactionScope可以确保在事务期间对特定资源的锁定。例如:  using(varscope=newTransactionScope()){using(varcontext=newYourDbC......