matlab 二维空间变换-maketform imtransform 用法
来源:互联网 发布:闪字软件下载 编辑:程序博客网 时间:2024/05/18 22:56
转自:http://blog.sina.com.cn/s/blog_6163bdeb0102du23.html
1.
2.
TFORM结构体包含了执行变换需要的所有参数。你可以定义很多类型的空间变换,包括放射变换affine transformations(如平移translation,缩放scaling,旋转rotation,剪切shearing)、投影变换projective transformations和自定义的变换custom transformations。
创建结构体的方法有两种:使用maketform或者使用cp2tform。
3.
通过将要变换的图像和TFORM结构体传递给imtransform函数即可实现变换。
例子
Step 1: 导入要变换的图像
% 导入图像
cb = checkerboard;
figure
imshow(cb)
Step 2: 定义空间变换
% 定义变换矩阵
xform = [ 1
Step 3: 创建TFORM结构体
% 创建TFORM结构体
tform_translate = maketform('affine', xform);
Step 4: 执行变换
% 执行变换
[cb_trans xdata ydata]= imtransform(cb, tform_translate);
imtransform函数决定输出图像的像素值是把新位置映射回输入图像的相应位置。在平移变换中,由于图像的大小和旋转角度没有变,所以是一一映射;对于其他类型的变换,如放缩、旋转,此函数将在输入图像上插值计算输出图像的像素值。学过图像处理的这个应该很清楚。
Step 5: 观察输出图像
% 显示变换结果
figure
imshow(cb_trans)
从结果看来,貌似变换没有效果,变换后图像和原图像是一样的。但如果你检查xdata和ydata的数值,就会看到图像的空间坐标已经改变了。原始图像左上角的坐标由(1, 1)变为了(41, 41),右下角由(80, 80)变为了(120, 120),40已经被加到了每个像素的空间坐标上。
>> xdata
xdata =
>> ydata
ydata =
41
而显示结果上没有变化的原因是函数imtransform得到的输出图像足够包含了变换后的图像,但没有包含全部的坐标空间。要看到变换的效果,需要使用imtransform函数的额外输入参数来指定输出图像的大小和能包含输出图像的输出空间。
下面的代码使用了XData和YData两个额外参数来指定能包含输出图像的输出空间,而对于输出空间中不在输出图像上的像素默认为黑色,这可以通过改变imtransform函数的FillValues参数来指定。
% 修正的变换结果
cb_trans2 = imtransform(cb, tform_translate,...
figure,
imshow(cb_trans2)
定义空间变换的方式
使用变换矩阵
如使用3X3的矩阵来指定任何的仿射变换,而对于仿射变换,最后一列必须是0 0 1,所以你指定3X2的矩阵就足够了,在这种情况下,imtransform会自动添加第三列。
下面的表格列举了imtransform可以执行的仿射变换以及相应矩阵的定义方法。
使用对应点
in_points = [11 11;21 11; 21 21];
out_points = [51 51;61 51;61 61];
tform2 = maketform('affine', in_points, out_points);
创建TFORM结构体
执行空间变换
[cb_trans xdata ydata]= imtransform(cb, tform_translate);
指定填充值
对于灰度图像
cb_fill = imtransform(cb, tform_translate,...
Figure
imshow(cb_fill)
得到结果为
对于RGB图像
% 彩色图像处理
rgb = imread('onion.png');
xform = [ 1 0 0
tform_translate = maketform('affine',xform);
cb_rgb = imtransform(rgb, tform_translate,...
figure
imshow(cb_rgb)
结果如下
- matlab 二维空间变换-maketform imtransform 用法
- 图像空间变换--imtransform
- 图像空间变换-imtransform
- Matlab中二维空间变换
- 二维空间变换 MATLAB帮助翻译
- 二维空间变换
- matlab 二维小波变换程序
- 二维分数阶Fouirer变换matlab程序
- 离散二维小波变换 MATLAB
- matlab中二维小波变换部分函数
- matlab中二维小波变换部分函数
- matlab中二维小波变换部分函数
- matlab中二维小波变换部分函数
- 二维哈尔小波变换算法——MATLAB、C++实现
- Matlab 图像处理2-灰度变换及空间滤波
- 171031 Matlab数字图像处理-02-灰度变换与空间滤波
- 二维傅立叶变换
- 二维DCT变换
- css样式中的链接
- Redis的应用场景
- vxWorks系统ps2键盘,tty设备,vga设备的联系
- PHP -微信token验证,单图文,多图文等一般操作
- 小结
- matlab 二维空间变换-maketform imtransform 用法
- leetcode-第十八周
- ROS教程(十九):手动创建ROS package
- Linux下卸载和安装JDK
- kindle读书笔记——2017.05.22-06.21
- 学习LINUX之常用命令整理
- angularJs-工具方法!
- javascript标签
- Python廖雪峰实战web开发(Day14-完成Web App)