cl;H=1;                            %索引pix中第一个元素,即高度W=2;                            %索引pix中第二个元素,即宽度jiaodu=0;                       %要旋转的角度,旋转方向为顺时针img=imread('Corner.png');         %这里v为原图像的高度,u为原图像的宽度imshow(img);                    %这里y为变换后图像的高度,x为变换后图像的宽度[v u]=size(img);h=v;                            %原图像的高度w=u;                            %原图像的宽度pro=w/h;                        %宽高比

%虽然这段程序是本人写的,不过这个仿射变换系数还是不太好表述,暂时是本人现在的理解。%仿射变换系数,变换后图像的倾斜强度。取值区间为(0,1)为图像向右上错切;取0时不变换图像;取1时为垂直错切,不显图像;大于1时向左下错切图像%区间为(-1,0)为向左上错切图像;为-1时垂直错切,不显图像;小于-1时为右下错切图像。 系数过大或过小处理时间会很长,再大/再小就会报错aff_cof=0.6;          

theta=jiaodu/180*pi;rot1=[cos(theta) -sin(theta) 0;sin(theta) cos(theta) 0;0 0 1];      %旋转变换矩阵rot2=[1 aff_cof*pro 0;aff_cof*(1/pro) 1 0;0 0 1];                   %错切变换矩阵rot=rot2*rot1;                                                      %联合变换矩阵inv_rot=inv(rot);pix1=[1 1 1]*rot;                                                   %变换后图像左上点的坐标pix2=[1 u 1]*rot;                                                   %变换后图像右上点的坐标pix3=[v 1 1]*rot;                                                   %变换后图像左下点的坐标pix4=[v u 1]*rot;                                                   %变换后图像右下点的坐标

height=round(max([abs(pix1(H)-pix4(H))+0.5 abs(pix2(H)-pix3(H))+0.5]));     %变换后图像的高度width=round(max([abs(pix1(W)-pix4(W))+0.5 abs(pix2(W)-pix3(W))+0.5]));      %变换后图像的宽度imgn=zeros(height,width);

delta_y=abs(min([pix1(H) pix2(H) pix3(H) pix4(H)]));                        %取得y方向的负轴超出的偏移量delta_x=abs(min([pix1(W) pix2(W) pix3(W) pix4(W)]));                        %取得x方向的负轴超出的偏移量

for y=1-delta_y:height-delta_yfor x=1-delta_x:width-delta_x        pix=[y x 1]*inv_rot;                                                %用变换后图像的点的坐标去寻找原图像点的坐标                                                                                                                    %否则有些变换后的图像的像素点无法完全填充if pix(H)>=0.5 && pix(W)>=0.5 && pix(H)<=v && pix(W)<=u            imgn(y+delta_y,x+delta_x)=img(round(pix(H)),round(pix(W)));end   

endend

figure,imshow(uint8(imgn))

转载于:https://www.cnblogs.com/tiandsp/archive/2012/03/09/2387430.html

matlab练习程序(图像错切)相关推荐

  1. MATLAB运行程序报错:“等号右侧的输出数目不足,不满足赋值要求。”的解决方法

    等号右侧的输出数目不足,不满足赋值要求.         在Matlab运行程序时出现这种情况的原因即是:在使用Matlab自带的函数或者调用自己创建的函数时,等式(等号"=")两 ...

  2. 3.4 图像几何变换——图像错切

    1. 沿着 XXX 方向错切 设原始图像的任意点 P0(x0,y0)P_0(x_0, y_0)P0​(x0​,y0​),沿 XXX 方向错切,经错切后 α\alphaα 角度后到新的位置 P(x,y) ...

  3. Matlab学习3-图像处理之镜像、错切、透视

    Matlab学习3-图像处理之翻转.镜像.错切.透视 使用flipdim.maketform.imtransform.interp2 这里用的环境是matlab2020 1.图像水平翻转.镜像翻转 效 ...

  4. 图像增广 || 通过仿射变换实现图像的平移、缩放、旋转、翻转、错切,及MATLAB实现与分析

    1.仿射变换理论 仿射变换(Affine Transformation或 Affine Map)是一种二维坐标(x,y)到二维坐标(u,v)之间的线性变换,它保持了二维图形的"平直性&quo ...

  5. 图像几何变换C++实现--镜像,平移,旋转,错切,缩放

    一.图像几何变换介绍 图像的几何空间变换是图像处理中的最基础的算法,是指对原始图像按需要改变其大小.形状和位置的变化,原始图像与目标函数之间的坐标变换函数为线性函数.二维图像的基本几何变换主要包括镜像 ...

  6. 【OpenCV 例程200篇】32. 图像的扭变(错切)

    [OpenCV 例程200篇]32. 图像的扭变(错切) 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中 图像的错切变 ...

  7. 图像仿射变换shear怎么翻译?剪切、错切、推移哪个译词好?

    ☞ ░ 老猿Python博文目录:https://blog.csdn.net/LaoYuanPython ░ 仿射变换博文传送门(带星号的为付费专栏文章): *图像仿射变换原理1:齐次坐标来龙去脉详解 ...

  8. matlab 使得三维图形可以手动旋转,三维图形的平移,旋转与错切

    1.平移变换 三维图形的平移变换可以描述为: %% 圆的平移,x加1,y加1,z+1 clc;clear all; figure(1); axis equal; sphere(50);%球由50*50 ...

  9. matlab 画图白边,matlab保存画框图像去白边

    在matlab图像处理中,为了标识出图像的目标区域来,需要利用plot函数或者rectangle函数,这样标识目标后,就保存图像. 一般saves保存的图像存在白边,可以采用imwrite对图像进行保 ...

  10. matlab hilb,MATLAB在科学计算中的应用:第2章 MATLAB 语言程序设计基础

    <MATLAB在科学计算中的应用:第2章 MATLAB 语言程序设计基础>由会员分享,可在线阅读,更多相关<MATLAB在科学计算中的应用:第2章 MATLAB 语言程序设计基础(7 ...

最新文章

  1. Kafka Eagle 源码解读
  2. python爬虫招聘-Python爬虫实战之(二)| 寻找你的招聘信息
  3. 来自韩国的优秀Java应用性能监控软件JENNIFER
  4. mysql explain理解
  5. 训练dnn_[预训练语言模型专题] MT-DNN(KD) : 预训练、多任务、知识蒸馏的结合
  6. 1112个人赛,最长回文串常见算法讨论
  7. 教你如何计算腰围~~
  8. 为什么人们常说“十个创业九个死”?
  9. Ruby语法解释:attr_reader,attr_writer和attr_accessor
  10. 调试错误:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
  11. 蓝桥杯2016年第七届C/C++省赛B组第三题-凑算式
  12. 洛谷P3216 [HNOI2011]数学作业
  13. usercontrol控件生成后,左边工具栏不会出现工具的问题解法
  14. armv6、armv7、armv7s、arm64分别对应什么?
  15. 用matlab处理信号,信号处理matlab程序示例
  16. 设置cookie存活时间_js中如何设置cookie的保存时间呢?
  17. 外贸出口管理系统亮点及重点
  18. android 动态仿磁贴,UWP开发:给App加上动态磁贴
  19. source test.sh、sh test.sh、./test.sh有什么区别
  20. SPI读取NRF24L01

热门文章

  1. shell初级-----更多结构化命令
  2. 爬kuku漫画网站的小爬虫
  3. Python-docx 读取word.docx内容
  4. AfxMessageBox详细使用说明
  5. Not a git repository (or any of the parent directories): .git
  6. C# 处理应用程序减少内存占用
  7. 在Qsys中创建用户自定义IP
  8. 如何获取一个需要登录页面的HTML代码
  9. Xcode 与 macOS 系统版本的兼容问题
  10. 40.广搜练习:洪水