Matlab 图像几何操作

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
B=imread('blobs.png'); imshow(B) figure imrotate(B,30,'bilinear','crop')
– 其中,’crop’表示旋转时图像底版大小保持不变, 但图像可能被切割。
– 若是’loose’,则图像底版大小可能会发生变化。
2.1 图像的裁剪、缩放与旋转
请思考:
在上例中,原图像的像素点(x,y)与变换后得到的像素点 (x’,y’)之间的关系是?
平移、比例缩放、旋转能否看成是仿射变换的特殊情况?
2.2 图像的几何变换
两种特殊的仿射变换
1 0 0
0
1
0
a 3 1 a 3 2 1
平移
a11 0 0
0
a 22
0
0 0 1
比例缩放
2.1 图像的裁剪、缩放与旋转
图像缩放
– 缩小:从图像中,删除部分像素。 – 放大:向图像中,增加部分像素。增加像素的取值
是根据周围相邻像素的值进行插值计算得到的。
图像缩放的常用函数是imresize。通过查看 imresize函数的帮助信息,可以看出,imresize 可以使用三种不同的插值方法:
二维仿射变换 投影变换
2.2 图像的几何变换
在函数maketform(P,……)中,参数P可以是以下 形式:
‘affine’
仿射变换形式
‘projective’
投影变换形式
‘custom’
自定义函数进行变换
‘box’ 依靠函数中的另外参数产生仿射变换结构
‘composite’
该参数实现多次调用tformfwd功能
2.2 图像的几何变换
仿射变换是由一个线性变换接上一个平移组成 的。因此,仿射变换的矩阵表达可描述为:
a11 a12
[x', y' ] [x, y,1]a21
a22
a31 a32
或用齐次坐标表示为:
a11 a12 0 [x', y',1] [x, y,1]a21 a22 0
a31 a32 1
【例】使用imrotate函数旋转图像,制作动画效果 I = imread('blobs.png'); for i=1:20 imrotate(I,3*i,’loose'); end
2.2 图像的几何变换
图像的几何变换是指图像几何操作后, 内部结构比例等发生变化,但整体布局 与形状没有改变。
本节主要介绍图像的二维空间变换。
cos sin 0
sin
cos
0
0
0 1
旋转
2.2 图像的几何变换
使用imtransform函数实现图像缩放功能
transformtype = 'affine'; transformmatrix = [0.5 0 0; 0 0.5 0; 0 0 1]; T = maketform(transformtype,transformmatrix); I = imread('cameraman.tif'); nI = imtransform(I,T); subplot(1,2,1),imshow(I) subplot(1,2,2),imshow(nI)
2.1 图像的裁剪、缩放与旋转
图像缩放:双线性插值法 'bilinear'
– 要求新增加的像素的灰度值,由周围的4个像素的 灰度值决定。
– 双线性内插值法计算量大,但缩放后图像质量高, 不会出现像素值不连续的的情况。由于双线性插值 具有低通滤波器的性质,使高频分量受损,所以可 能会使图像轮廓在一定程度上变得模糊。
2.2 图像的几何变换
图像二维空间变换
– Matlab使用imtransform函数完成图像二维空间变换。 – imtransform函数的调用形式为:
imtransform(I,T) – 参数I:要变换的图像 – 参数T:由maketform函数产生的变换结构。根据变换结
构的不同,可以实现不同的空间变换。例如:
2.2 图像的几何变换
【ຫໍສະໝຸດ Baidu】使用imtransform函数实现图像平面扭曲功能
transformtype = 'affine'; % 仿射变换 transformmatrix = [0.5 0 0; 0.5 1 0; 0 0 1]; % 仿射变换要求变换矩阵的最后一列除最后一个元素为1之外, % 其它的均为0 T = maketform(transformtype,transformmatrix); I = imread('cameraman.tif'); nI = imtransform(I,T); subplot(1,2,1),imshow(I) subplot(1,2,2),imshow(nI)
nI = imresize(I,2*I,’nearest’); figure(1),imshow(nI) title(strcat('放大了',int2str(2*i),'倍')) pause end
2.1 图像的裁剪、缩放与旋转
图像旋转 –Matlab使用imrotate函数旋转图像。 –在图像旋转的过程中,也可能涉及插值问题。默认 采用最近邻插值法。 【例】
2.1 图像的裁剪、缩放与旋转
图像缩放:双立方插值法 'bicubic'
– 能够克服以上两种算法的不足,计算精度高,但计 算量大,因为计算新增加的像素的灰度值时,需要
考虑周围的16个邻点。
2.1 图像的裁剪、缩放与旋转
图像缩放举例
I = imread('cell.tif'); figure(1),imshow(I) title('原始图像') pause for i=1:3
第2章 图像几何操作
2.1 图像的裁剪、缩放与旋转 2.2 图像的几何变换 2.3 图像的邻域操作 2.4 图像的区域选取 2.5 图像增强 2.6 图像滤波
2.1 图像的裁剪、缩放与旋转
图像裁剪
– 就是在原图像中裁剪出图像块来。
根据裁剪区域的不同,可以对图像进行:
– 矩形区域裁剪: imcrop函数(1.3节) – 多边形区域裁剪:roiploy函数(2.4节)
– 最近邻插值法: imresize函数默认的插值方法 – 双线性插值法 – 双立方插值法
2.1 图像的裁剪、缩放与旋转
图像缩放:最近邻插值法 'nearest‘
– 令新增加的像素的灰度值等于距它最近的输入像素 的灰度值。
– 其实现方法最为简单,处理速度快,但它只是将原 始象素简单复制到其邻域内,随着放大倍数的增加, 放大图像会出现相对严重的方块和锯齿,不能很好 的保留原始图像的边缘信息。
相关文档
最新文档