matlab练习程序(图像错切)
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练习程序(图像错切)相关推荐
- MATLAB运行程序报错:“等号右侧的输出数目不足,不满足赋值要求。”的解决方法
等号右侧的输出数目不足,不满足赋值要求. 在Matlab运行程序时出现这种情况的原因即是:在使用Matlab自带的函数或者调用自己创建的函数时,等式(等号"=")两 ...
- 3.4 图像几何变换——图像错切
1. 沿着 XXX 方向错切 设原始图像的任意点 P0(x0,y0)P_0(x_0, y_0)P0(x0,y0),沿 XXX 方向错切,经错切后 α\alphaα 角度后到新的位置 P(x,y) ...
- Matlab学习3-图像处理之镜像、错切、透视
Matlab学习3-图像处理之翻转.镜像.错切.透视 使用flipdim.maketform.imtransform.interp2 这里用的环境是matlab2020 1.图像水平翻转.镜像翻转 效 ...
- 图像增广 || 通过仿射变换实现图像的平移、缩放、旋转、翻转、错切,及MATLAB实现与分析
1.仿射变换理论 仿射变换(Affine Transformation或 Affine Map)是一种二维坐标(x,y)到二维坐标(u,v)之间的线性变换,它保持了二维图形的"平直性&quo ...
- 图像几何变换C++实现--镜像,平移,旋转,错切,缩放
一.图像几何变换介绍 图像的几何空间变换是图像处理中的最基础的算法,是指对原始图像按需要改变其大小.形状和位置的变化,原始图像与目标函数之间的坐标变换函数为线性函数.二维图像的基本几何变换主要包括镜像 ...
- 【OpenCV 例程200篇】32. 图像的扭变(错切)
[OpenCV 例程200篇]32. 图像的扭变(错切) 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中 图像的错切变 ...
- 图像仿射变换shear怎么翻译?剪切、错切、推移哪个译词好?
☞ ░ 老猿Python博文目录:https://blog.csdn.net/LaoYuanPython ░ 仿射变换博文传送门(带星号的为付费专栏文章): *图像仿射变换原理1:齐次坐标来龙去脉详解 ...
- matlab 使得三维图形可以手动旋转,三维图形的平移,旋转与错切
1.平移变换 三维图形的平移变换可以描述为: %% 圆的平移,x加1,y加1,z+1 clc;clear all; figure(1); axis equal; sphere(50);%球由50*50 ...
- matlab 画图白边,matlab保存画框图像去白边
在matlab图像处理中,为了标识出图像的目标区域来,需要利用plot函数或者rectangle函数,这样标识目标后,就保存图像. 一般saves保存的图像存在白边,可以采用imwrite对图像进行保 ...
- matlab hilb,MATLAB在科学计算中的应用:第2章 MATLAB 语言程序设计基础
<MATLAB在科学计算中的应用:第2章 MATLAB 语言程序设计基础>由会员分享,可在线阅读,更多相关<MATLAB在科学计算中的应用:第2章 MATLAB 语言程序设计基础(7 ...
最新文章
- Kafka Eagle 源码解读
- python爬虫招聘-Python爬虫实战之(二)| 寻找你的招聘信息
- 来自韩国的优秀Java应用性能监控软件JENNIFER
- mysql explain理解
- 训练dnn_[预训练语言模型专题] MT-DNN(KD) : 预训练、多任务、知识蒸馏的结合
- 1112个人赛,最长回文串常见算法讨论
- 教你如何计算腰围~~
- 为什么人们常说“十个创业九个死”?
- Ruby语法解释:attr_reader,attr_writer和attr_accessor
- 调试错误:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
- 蓝桥杯2016年第七届C/C++省赛B组第三题-凑算式
- 洛谷P3216 [HNOI2011]数学作业
- usercontrol控件生成后,左边工具栏不会出现工具的问题解法
- armv6、armv7、armv7s、arm64分别对应什么?
- 用matlab处理信号,信号处理matlab程序示例
- 设置cookie存活时间_js中如何设置cookie的保存时间呢?
- 外贸出口管理系统亮点及重点
- android 动态仿磁贴,UWP开发:给App加上动态磁贴
- source test.sh、sh test.sh、./test.sh有什么区别
- SPI读取NRF24L01