编写算法实现图像绕中心点旋转功能

先找到四个顶点旋转后的位置,然后求出新图像的大小

找到旋转后的图像对应的原图像的位置,将原图像的颜色属性赋给相应位置的新图像

(旋转思想为先将图像中心点移到坐标原点,然后进行旋转,最后再将坐标值换为实际的坐标值进行像素颜色属性的赋值)

a=input('Enter the picture address:','s');
b=input('Enter the angle:');
R=imread(a);
angle=b*pi/180;
% R=imread('rice.png');
% angle=60*pi/180;
figure,imshow(R);
[m,n,o]=size(R);
I=[cos(angle) -sin(angle);sin(angle) cos(angle)];
A=[n/2;m/2];
B=[n/2;-m/2];
C=[-n/2;m/2];
D=[-n/2;-m/2];
Ac=round(I*[n/2;m/2]);
Bc=round(I*[n/2;-m/2]);
Cc=round(I*[-n/2;m/2]);
Dc=round(I*[-n/2;-m/2]);
mc=max([Ac(2,1),Bc(2,1),Cc(2,1),Dc(2,1)])-min([Ac(2,1),Bc(2,1),Cc(2,1),Dc(2,1)]);
nc=max([Ac(1,1),Bc(1,1),Cc(1,1),Dc(1,1)])-min([Ac(1,1),Bc(1,1),Cc(1,1),Dc(1,1)]);
ImageNew=zeros(round(mc),round(nc),o,'uint8');
J=[cos(angle) sin(angle);-sin(angle) cos(angle)];
for i = -nc/2:nc/2for j= -mc/2:mc/2temp=[i;j];old=round(J*temp);if((round(old(2,1)+m/2)>0)&&(round(old(2,1)+m/2)<m)&&(round(old(1,1)+n/2)>0)&&(round(old(1,1)+n/2)<n))for k=1:oImageNew(round(j+mc/2)+1,round(i+nc/2)+1,k)=R(round(old(2,1)+m/2)+1,round(old(1,1)+n/2)+1,k);endendend
end
figure,imshow(ImageNew);

MATLAB实现imrotate函数相关推荐

  1. matlab内置函数fitgeotrans与transformPointsForward解析

    最近研究3000fps的实现,看了网上给的一个matlab代码,里面有提到init_shape到mean_shape的对齐,里面使用了fitgeotrans和transformPointsForwar ...

  2. matlab图像处理常用函数大全

    显示索引图像和灰度图像 >> [X,map]=imread('trees.tif'); >> gmap=rgb2gray(map); >> figure,imsho ...

  3. 【Matlab 常用图像处理函数 汇总】

    Matlab 常用图像处理函数 汇总 一.图像的读取 二.图像的写入 三.图像的显示 四.创建窗口 五.图像的格式转换 六.灰度直方图 七.伽马变换 八.图像二值化 九.阈值变换 十.直方图均衡化 十 ...

  4. matlab pup,matlab利用bar函数画不同颜色直方图

    matlab利用bar函数画直方图,参考文献[1]是matlab官方提供的help文档.里面提供了bar函数的基本用法,但是没有说明如何在同一张图中,为每个bar设置不同的颜色. 例子代码: myda ...

  5. Matlab中bwmorph函数的使用

    Matlab中bwmorph函数的使用 Matlab中提供了一个基于形态学的处理函数,即以膨胀.腐蚀等操作为基础,其语法格式如下: bw2=bwmorph(bw1,operation,n); 其中bw ...

  6. 9.matlab中repmat函数

    来源: matlab中repmat函数的用法 - CSDN博客 https://blog.csdn.net/anqier1009/article/details/5214978 B = repmat( ...

  7. 如何在Matlab中获取函数参数的数目?

    本图文详细介绍了Matlab中获取函数参数数目的方法.

  8. c++引用matlab类,matlab调用C++函数浅谈(一)

    由于在下才疏学浅,在网上看各高手指南时亦觉云里雾里,遂决定一切说明从最基础说起,一是方便自己(记性奇差),二是方便似我的小白.以下部分是我从各网站论坛等摘抄.重组.改写过的,以求更加详实明朗,由于参考 ...

  9. matlab语言unique,Matlab的unique函数的C++实现

    Matlab中的unique函数,实现的是去除重复元素,只保留一个,且剩下的非重元素按大小排列: C++中stl::unique函数与其不同之处在于:是去除相邻的重复元素,且不改变向量大小,把重复元素 ...

  10. matlab s% d%,matlab中var函数的翻译For N-D arrays, VAR operates along the first

    matlab中var函数的翻译For N-D arrays, VAR operates along the first matlab中var函数的翻译 For N-D arrays, VAR oper ...

最新文章

  1. Elasticsearch内存分配设置详解
  2. jota-time 练习
  3. SharePoint 2010开发实例精选——“每日一句”WebPart
  4. 【IntelliJ IDEA】创建 导入 Java 项目
  5. 虚拟化方面包含了主机、存储和网络
  6. 适配器设计模式,简单的Java代码模拟
  7. Python开发【第七篇】: 面向对象和模块补充
  8. nrf52840 gpiote如何配置中断输入_51单片机外部中断点亮LED
  9. jdk只有一个java进程_JDK 10:从Java访问Java应用程序的进程ID
  10. 【2017年第1期】基于文本大数据的企业信用风险评估
  11. 【Java】探究Java方法的参数传递是值传递还是引用传递
  12. DataCapa 启动
  13. SVNQuery–如何创建更新索引并查询
  14. 【poj2373】Dividing the Path【单调队列优化dp】
  15. android apk 可以直接放在systemapp下吗,内置语音apk到/system/app下的问题
  16. 怎么将几张pdf合并成一张_怎么把多个PDF合并成一个PDF?分享合并PDF文件最简单的方法...
  17. 田志刚:个人知识管理常用软件、工具介绍
  18. Matlab笔记-取整/生成随机数
  19. Java中的parallelStream
  20. Windows下显卡支持的cuda及配套GPU版本pytorch下载全流程(2022.03.27)

热门文章

  1. 气象研究中的大气稳定性 Atmosphere stability
  2. 最短路算法总结(超详细~)
  3. asp.net 与donet(.net)的区别
  4. hive 如何将数组转成字符串_HIve字符串函数
  5. 打地鼠java的实验报告_java实验报告18-“打地鼠”游戏程序设计.doc
  6. 使用matlab的appdesigner绘制Steward并联机构
  7. matlab中如何对一个小数取整,学习笔记153—matlab中小数如何取整?
  8. MATLAB中取整函数一览表
  9. 安装新版的winetricks_winetricks中文修改版(wine模拟器)
  10. Matlab对圆环进行N等分