-
【20200415】数字图像处理DIP课程课业打卡六之图像的旋转——反变换MATLAB代码理解
2020-04-23 01:58:46【20200415】数字图像处理DIP课程课业...2、图像旋转方法3之反变换法伪代码 3、图像旋转方法3之反变换法代码实现 叮嘟!这里是小啊呜的学习课程资料整理。好记性不如烂笔头,今天也是努力进步的一天。一起加油进阶吧!【20200415】数字图像处理DIP课程课业打卡六之图像的旋转——反变换MATLAB代码理解
叮嘟!这里是小啊呜的学习课程资料整理。好记性不如烂笔头,今天也是努力进步的一天。一起加油进阶吧!
一、DIP课程课业打卡六
1、阅读下面代码并回答相应问题:
function [im]=rot3_inv(I,delta_ang) [M,N,K] = size(I); a=delta_ang*pi/180; %%----------(a行) x1=1; x2=M;x3=M;x4=1; %%----------(b行) y1=1; y2=1;y3=N;y4=N; x=[x1,x2,x3,x4]; y=[y1,y2,y3,y4]; x_2 = round(x*cos(a)-y*sin(a)); y_2 = round(x*sin(a)+y*cos(a));%%----------(c行) xmin=min(x_2); xmax=max(x_2); ymin=min(y_2); ymax=max(y_2); if xmin<=0 %%-------(d行) deltaX = abs(xmin)+1; else deltaX = 0; end %%-------(e行) if ymin<=0 deltaY = abs(ymin)+1; else deltaY = 0; end M_2 =xmax- xmin+1; %%-------(f行) N_2 =ymax- ymin+1; im = ones(M_2,N_2,K)*-1; %%-------(g行) for i=1:M_2 for j=1:N_2 x = round((i-deltaX)*cos(a)+(j-deltaY)*sin(a)); y = round(-(i-deltaX)*sin(a)+(j-deltaY)*cos(a)); if(x>0 && x<=M && y>0 && y<=N) %%-------(h行) im(i,j,:)=I(x,y,:); end %%-------(i行) end end im=uint8(im );
(1) [单选题]
解释第a行代码的作用A、将旋转的弧度转化为角度
B、将旋转的角度转化为弧度
C、计算四个顶点旋转之后的坐标正确答案:B
(2) [单选题]
解释第b行到第c行代码的作用:A、计算四个顶点旋转的弧度
B、计算四个顶点旋转的角度
C、计算四个顶点旋转之后的坐标正确答案:C
(3) [单选题]
解释第d行到第e行代码的作用:A、计算行的方向上的偏移量
B、计算新的图像有几行
C、计算新的图像有几列正确答案:A
(4) [单选题]
解释第f行到第g行代码的作用:A、计算新的图像有几行、几列,并得到新的图像
B、计算新的图像有几行、几列,并初始化新的图像
C、计算新的图像有几列正确答案:B
(5) [单选题]
解释第h行到第i行代码的作用:A、新图像的行列坐标i和j,经过旋转逆变换后的坐标为x、y,如果x、y在原图像的合法范围内,就将原图像x、y处的像素值赋给新图像i、j处的像素
B、原图像的行列坐标i和j,经过旋转变换后的坐标为x、y,将原图像i、j处的像素值赋给新图像x、y处的像素正确答案:A
二、知识巩固
1、关于图像的旋转——反变换【效果最好】
反变换方法就是从新图形的像素坐标反过来计算对应原图像坐标点的坐标。
即将 图像的旋转计算公式:
x1 =x0 cos(a)-y0 sin(a);
y1 =x0 sin(a)+y0 cos(a);
改写为:x0 =x1 cos(a)+y1 sin(a); y0 =-x1 sin(a)+y1 cos(a);
2、图像旋转方法3之反变换法伪代码
输入参数:图像矩阵F,旋转角度a 输出参数:旋转后的图像矩阵G 处理: 1、获得图像尺寸,计算图像的四个顶点坐标。 2、根据旋转公式:x_2 = round(x*cos(a)-y*sin(a)); y_2 = round(x*sin(a)+y*cos(a)),计算图像的四个顶点旋转后的坐标。 (x、y为原始图像的坐标,x_2、y_2为对应点旋转后的坐标) 3、根据四个顶点旋转后的坐标,计算画布扩展后的大小M2、N2,并计算x和y方向的偏移量。初始化新图像G 4、对新图像G的每一行for i=1:M_2 5、对新图像G的每一列for j=1:N_2 5.1 根据旋转反变换公式和x、y方向的偏移量,计算新图像的像素点G(i,j,:)旋转前在原图像F中对应的坐标x、y。 5.2 如果(x>0 && x<=M && y>0 && y<=N),则将F(x,y,:)的像素值采样并且赋给G(i,j,:)
3、图像旋转方法3之反变换法代码实现
function [im]=rot3_inv(I,delta_ang) [M,N,K] = size(I); a=delta_ang*pi/180; x1=1; x2=M;x3=M;x4=1; y1=1; y2=1;y3=N;y4=N; x=[x1,x2,x3,x4]; y=[y1,y2,y3,y4]; x_2 = round(x*cos(a)-y*sin(a)); y_2 = round(x*sin(a)+y*cos(a)); xmin=min(x_2); xmax=max(x_2); ymin=min(y_2); ymax=max(y_2); if xmin<=0 deltaX = abs(xmin)+1; else deltaX = 0; end if ymin<=0 deltaY = abs(ymin)+1; else deltaY = 0; end M_2 =xmax- xmin+1; N_2 =ymax- ymin+1; im = ones(M_2,N_2,K)*-1; for i=1:M_2 for j=1:N_2 x = round((i-deltaX)*cos(a)+(j-deltaY)*sin(a)); y = round(-(i-deltaX)*sin(a)+(j-deltaY)*cos(a)); if(x>0 && x<=M && y>0 && y<=N) im(i,j,:)=I(x,y,:); end end end im=uint8(im ); imshow(I);title('原图');figure; imshow(im);title('转置后');
函数调用:
//此处旋转角度为60度; >> I = imread('football.jpg'); >> [im]=rot3_inv(I,60);
效果展示:
Ending!
更多课程知识学习记录随后再来吧!就酱,嘎啦!
注:
人生在勤,不索何获。 -
VC数字图像处理编程讲座
2011-03-31 09:39:52图像的基本处理:图像的二值化、图像的亮度和对比度的调整、图像的边缘增强、如何得到图像的直方图、图像直方图的修正、图像的平滑、图像的锐化等、图像的伪彩色、彩色图像转换为黑白图像、物体边缘的搜索等等;... -
VC数字图像处理编程
2011-11-26 13:28:46图像的基本处理:图像的二值化、图像的亮度和对比度的调整、图像的边缘增强、如何得到图像的直方图、图像直方图的修正、图像的平滑、图像的锐化等、图像的伪彩色、彩色图像转换为黑白图像、物体边缘的搜索等等;... -
VC数字图像处理编程讲座word 简单易懂
2008-10-29 17:04:52图像的基本处理:图像的二值化、图像的亮度和对比度的调整、图像的边缘增强、如何得到图像的直方图、图像直方图的修正、图像的平滑、图像的锐化等、图像的伪彩色、彩色图像转换为黑白图像、物体边缘的搜索等等;... -
vc++mfc经典数字图像处理程序
2017-06-21 11:32:02基于vc++和mfc的经典数字图像处理程序,代码纯手写,可以...包括图像文件的打开,另存,领域处理,灰度化,伪彩色,微分、拉普拉斯锐化,直方图均衡和,二值化,阈值分割,均值、中值滤波,平移,旋转,特效等算法。 -
VC数字图像处理编程.doc
2009-04-17 21:18:46图像的基本处理:图像的二值化、图像的亮度和对比度的调整、图像的边缘增强、如何得到图像的直方图、图像直方图的修正、图像的平滑、图像的锐化等、图像的伪彩色、彩色图像转换为黑白图像、物体边缘的搜索等等;... -
C#数字图像处理算法典型实例.iso
2019-09-24 15:16:55C#数字图像处理算法典型实例共11章,分别讲述了图像的点运算、几何运算、数学形态学图像处理方法、频率变换、图像平滑与去噪、边缘检测、图像分割、图像压缩编码和彩色图像处理等相关技术。本书的光盘中附有相关章节... -
《Delphi 数字图像处理及高级应用》(PDF电子书)
2006-02-23 15:31:04图像的增强5.1 图像增强概述5.2 灰度线性变换5.3 灰度非线性变换5.4 灰度直方图拉伸5.5 图像锐化与图像平滑5.6 伪彩色增强5.7 中值滤波第6章 图像代数与图像分割6.1 图像的腐蚀6.2 图像的膨胀6.3 图像的结构开和结构... -
vc++数字图像识别技术经典案例 光盘源码
2010-06-12 00:44:241.2 图像的获取、显示与表示 3 1.2.1 图像的获取 3 1.2.2 图像显示 4 1.2.3 图像表示 4 1.3 数字图像处理系统的基本组成结构 9 第2章 相关的图像处理技术 10 2.1 图像分割技术 10 2.1.1 阈值与图像... -
C/C++图像处理编程.陆宗骐(带详细书签).pdf
2018-04-08 16:29:353.7.4 图像的正交角旋转 3.7.5 真彩色图像的颜色分量 3.7.6 演示程序 第4章 图文界面的制作 4.1 图符和汉字的显示 4.1.1 引言 4.1.2 汉字字库文件的格式 4.1.3 子程序介绍 4.1.4 8×16西文字库的获取 4.1.5... -
Visual C++数字图像处理(第二版)PDF
2009-09-15 10:15:50分别介绍了图像的点运算、几何变换、正交变换、图像增强、腐蚀算法、膨胀算法、细化算法、边缘检测与提取、轮廓跟踪、图像分析、图像复原和图像的压缩编码技术,对每种常用的数字图像处理方法,本书都提供了完整的源... -
-
计算机视觉——问题
2017-05-12 11:52:30伪代码实现直线检测实现一种插样resize函数代码实现图像旋转函数列举出你知道的特征算子及其特点,例如SITF,LBF等伪代码实现直线检测
实现一种插样resize函数
代码实现图像旋转函数
列举出你知道的特征算子及其特点,例如SITF,LBF等
-
css绘制安卓机器人
2020-02-28 23:40:10css练习——绘制安卓机器人 一个学校里BBS的学长的布置的小练习 ( ̄ ‘i  ̄;) 用css画一个安卓机器人 ...写这个用到的知识有css盒子模型,position定位,伪类选择器,图像的旋转 上代码! <body> <div c...css练习——绘制安卓机器人
一个学校里BBS的学长的布置的小练习 ( ̄ ‘i  ̄;)用css画一个安卓机器人
效果如下
虽然有点丑……
不管啦 (* ̄rǒ ̄)
接下来是相关的步骤
- 画身体
- 画jiojio
- 画头
- 画手手
- 画眼睛
- 画天线(耳朵)
总体概述
写这个用到的知识有css盒子模型,position定位,伪类选择器,图像的旋转
上代码!
<body> <div class="android"> <div class="a_ears"></div> <div class="a_head"> <div class="a_eyes"> </div> </div> <div class="a_body"> <div class="a_arms"> </div> </div> </div> </body>
这是在body中部署的架构
画身体
- 先把基本工作做好
<title>安卓机器人</title> <style type='text/css'> *{ /*将所有的margin和padding归零,养成好习惯*/ margin: 0; padding: 0; } html{ height: 100%; } body{ height: 100%; background-color: black; }
- 画身体
.android{ /* 相对定位 */ /*考虑到机器人内部的元素要相互重叠,所以使用了相对定位,让内部元素在使用绝对定位的时候以android层的左上角作为参考点*/ position: relative; /*离body层的边缘*/ left: 320px; top: 230px; } .a_body{ position:absolute; width: 150px; height: 150px; background-color: green; border-radius: 0 0 20px 20px; }
画脚脚
.a_body:after,.a_body:before{ /*伪类选择器:after,:before*/ background-color: green /*绝对定位*/ position: absolute; /*设置圆角 从左到右为从矩形的左上角开始,然后顺时针设置*/ border-radius: 0 0 7px 7px; height: 67px; width: 20px; /*以a_body整体参考点*/ /*这个读者可以多改变一下试一试就能理解辽要是超出a_body范围的话就是负值*/ bottom: -67px; /*必须加*/ content:''; } /*上一步的设置这两个脚脚已经重叠了,下面要让这两个错开*/ .a_body:before{ /*同样以脚的上一级元素a_body整体参考点*/ left:20px; } .a_body:after{ right:20px; }
画头
.a_head{ position: absolute; /*头是个半圆,所以要将高度设置为宽度的一半*/ width: 150px; height: 75px; background-color: green; /*头的左上角离他的上一级的高度*/ top:-85px; /*左上右上角为圆角值*/ border-radius:75px 75px 0 0; }
画手手
.a_arms:before,.a_arms:after{ background-color:green; /*同样必须加*/ content:''; width:20px; height:80px; top:30px; position:absolute; border-radius:7px; } .a_arms:before{ left: -30px; } .a_arms:after{ right: -30px; }
画眼睛
.a_eyes:before, .a_eyes:after{ background-color: white; content: ''; width: 20px; height: 20px; position:absolute; /*因为要画的是一个圆所以参数设置为高度(宽度和高度一致)的一半就可*/ border-radius: 50%; top:34px; } .a_eyes:after{ right: 30px; } .a_eyes:before{ left: 30px; }
画天线(耳朵)
.a_ears:before,.a_ears:after{ background-color: green; content: ''; width: 10px; height: 45px; position:absolute; border-radius: 5px; top:-105px; } .a_ears:before{ left: 15px; /*旋转,默认的中点是耳朵的左上角*/ /*默认顺时针是正值,负值就是逆时针啦*/ transform: rotate(-30deg); } .a_ears:after{ left: 125px; transform: rotate(30deg); }
最后一个安卓小机器人就大功告成辽 ヽ(✿゚▽゚)ノ
-
-
kh_mod 0.4.2 简体中文版.zip
2019-07-08 01:54:08- 旋转图片的内存占用减少到30% - "mg2admin_convert.php"更名为"mg2admin_converter.php",同时也对代码进行了重写 - 如果数据库从平面文件切换到MySQL或者切换回去,现在会显示MySQL的计数器和关键词的记录... -
kh-mod 0.4.2 简体中文版.zip
2019-05-24 16:20:02- 旋转图片的内存占用减少到30% - "mg2admin_convert.php"更名为"mg2admin_converter.php",同时也对代码进行了重写 - 如果数据库从平面文件切换到MySQL或者切换回去,现在会显示MySQL的计数器和关键词的记录... -
IDL帮助(中文).doc
2011-03-14 00:21:36图像的频域滤波 80 第四章 图形显示技术 83 本章概要 83 IDL的颜色运用 83 使用索引颜色模式和RGB颜色模式 83 在24位显示设备上装载色谱表 88 获得色谱表的拷贝 88 修改和创建色谱表 89 保存自己的色谱表 90 创建... -
IDL入门教程.doc
2011-09-21 18:29:16图像的频域滤波 80 第四章 图形显示技术 83 本章概要 83 IDL的颜色运用 83 使用索引颜色模式和RGB颜色模式 83 在24位显示设备上装载色谱表 88 获得色谱表的拷贝 88 修改和创建色谱表 89 保存自己的色谱表 90 创建... -
IDL编程语言入门教程
2009-04-14 22:11:35图像的频域滤波 80 第四章 图形显示技术 83 本章概要 83 IDL的颜色运用 83 使用索引颜色模式和RGB颜色模式 83 在24位显示设备上装载色谱表 88 获得色谱表的拷贝 88 修改和创建色谱表 89 保存自己的色谱表 90 创建... -
css入门笔记
2018-05-15 14:58:57语法:所有的伪类都是以 : 作为开始 选择器:伪类选择器{样式} 伪类分类 1.伪类链接 :link 匹配尚未访问的超级链接状态 :visited 匹配访问过的元素的状态 2.动态伪类 :hover 匹配鼠标悬停在元素上时的状态 ... -
vc++ 开发实例源码包
2014-12-16 11:25:17主要是CIocpSrv"伪类",实际上还是调用的DLL, IOCP完成端口 [1]---选择 - Select [2]异步选择 - WSAAsyncSelect [3]---事件选择 - WSAEventSelect [4]---重叠I [5]---完成端口 IP所在地查询器 如题。 jpeglib_demo... -
vc++ 应用源码包_2
2012-09-15 14:27:40VC++制作3D效果的旋转文字特效 VC++注册码加密源程序(含注册机、解密机) 压缩包内有两个源码包,一个是注册机源程序,另一个是解密机的源程序,一套完整的参考实例。 VC+MapX源码含GPS跟踪演示 VC3D 利用VC... -
vc++ 应用源码包_1
2012-09-15 14:22:12VC++制作3D效果的旋转文字特效 VC++注册码加密源程序(含注册机、解密机) 压缩包内有两个源码包,一个是注册机源程序,另一个是解密机的源程序,一套完整的参考实例。 VC+MapX源码含GPS跟踪演示 VC3D 利用VC... -
vc++ 应用源码包_4
2012-09-15 14:38:35VC++制作3D效果的旋转文字特效 VC++注册码加密源程序(含注册机、解密机) 压缩包内有两个源码包,一个是注册机源程序,另一个是解密机的源程序,一套完整的参考实例。 VC+MapX源码含GPS跟踪演示 VC3D 利用VC... -
vc++ 应用源码包_3
2012-09-15 14:33:15VC++制作3D效果的旋转文字特效 VC++注册码加密源程序(含注册机、解密机) 压缩包内有两个源码包,一个是注册机源程序,另一个是解密机的源程序,一套完整的参考实例。 VC+MapX源码含GPS跟踪演示 VC3D 利用VC... -
vc++ 应用源码包_6
2012-09-15 14:59:46VC++制作3D效果的旋转文字特效 VC++注册码加密源程序(含注册机、解密机) 压缩包内有两个源码包,一个是注册机源程序,另一个是解密机的源程序,一套完整的参考实例。 VC+MapX源码含GPS跟踪演示 VC3D 利用VC... -
vc++ 应用源码包_5
2012-09-15 14:45:16VC++制作3D效果的旋转文字特效 VC++注册码加密源程序(含注册机、解密机) 压缩包内有两个源码包,一个是注册机源程序,另一个是解密机的源程序,一套完整的参考实例。 VC+MapX源码含GPS跟踪演示 VC3D 利用VC... -
移动互联网之路:HTML5+CSS3+jQuery Mobile APP与移动网站设计从入门到精通.李晓斌(带详细书签).pdf
2019-01-09 22:27:245.5 图像的绘制与裁切 85 5.5.1 绘制线性渐变 85 5.5.2 绘制径向渐变 87 5.5.3 绘制图像 89 5.5.4 裁切区域 91 5.6 本章小结 93 第6章 使用HTML 5在页面中嵌入视频和音频 94 6.1 使用<embed>标签 94 ... -
物理渲染从理论到实现-中文版.pdf
2019-05-14 13:01:26此外,本书还提供了相应的算法、代码以及伪代码,以帮助读者进一步理解相关方案的实现过程。 本书适合作为高等院校计算机及相关专业的教材和教学参考书,也可作为相关开发人员的自学教材和参考 手册。 目录 第1章 ...