图像的几何变换及其matlab实现

合集下载

matlab图像的几何变换

matlab图像的几何变换

实验三 图像的几何运算一、实验目的1、 理解几何运算的基本概念与定义;2、 掌握在MA TLAB 中进行插值的方法3、 运用MATLAB 语言进行图像的插值缩放和插值旋转。

二、实验原理插值是常用的数学运算,通常是利用曲线拟合的方法,通过离散的采样点建立一个连续函数来逼近真实的曲线,用这个重建的函数便可以求出任意位置的函数值。

最近邻插值是最简便的插值,在这种算法中,每一个插值输出像素的值就是在输入图像中与其最临近的采样点的值。

该算法的数学表示为:()()k f x f x = 如果1111()()22k k k k x x x x x -++<<+ 最近邻插值是工具箱函数默认使用的插值方法,而且这种插值方法的运算量非常小。

不过,当图像中包含像素之间灰度级变化的细微结构时,最近邻插值法会在图像中产生人工的痕迹。

双线性插值法的输出像素值是它在输入图像中2×2领域采样点的平均值,它根据某像素周围4个像素的灰度值在水平和垂直两个方向上对其插值。

设''''1,1,,m i m n j n a i m b j n <<+<<+=-=-,'i 和'j 是要插值点的坐标,则双线性插值的公式为:''(,)(1)(1)(,)(1)(1,)(1)(,1)(1,1)g i j a b g m n a b g m n a bg m n abg m n =--+-++-++++ 双三次插值的插值核为三次函数,其插值邻域的大小为4×4。

它的插值效果比较好,但相应的计算量也比较大,在这里不做讨论。

1、图像的缩放imresize 函数的语法格式为:B = imresize(A, m, method)2、图像的旋转imrotate 的语法格式为:B = imrotate(A, angle, method)三、实验内容及要求1. 读出girl.bmp 图像并显示。

数字图像处理——实验二--图像的几何变换

数字图像处理——实验二--图像的几何变换

数字图像处理实验二实验二图像的几何变换一.实验目的及要求掌握图像几何变换的基本原理,熟练掌握数字图像的缩放、旋转、平移、镜像和转置的基本原理及其MATLAB编程实现方法。

二、实验设备1.计算机;2.MATLAB6.5;三、实验内容及结果(一)研究以下程序,分析程序功能;输入执行各命令行,认真观察命令执行的结果。

熟悉程序中所使用函数的调用方法,改变有关参数,观察试验结果。

1. 图像缩放分析:imresize 函数功能:用于对图像做缩放处理J1 = imresize(I, Scale, 'nearest') 即将图像I,采用最近邻插值算法,放大(缩小)Scale倍。

J2 = imresize(I, Scale, 'bilinear') 即将图像I,采用双线性插值算法,放大(缩小)Scale倍。

通过改变Scale的大小,可以观察到生成的图像大小随之改变,且放大倍数越大,图像变得越模糊。

在放大相同倍数的情况下,可以观察到采用双线性插值算法的图像更为清晰。

2. 图像旋转分析:imrotate 函数功能:用于对图像做旋转处理J1 = imrotate(I, Theta, 'nearest') 即将图像I,采用最近邻插值算法,绕图像的中心点旋转Theta度,正数表示逆时针旋转,负数表示顺时针旋转,旋转后的图像超出的部分填充0(黑色)。

J2 = imrotate(I, Theta, 'bilinear','crop') 功能同上,不同的是采用了双线性插值算法,'crop'表示通过对旋转后的图像进行裁剪,保持旋转后输出图像的尺寸和输入图像的尺寸一样。

通过改变Theta的大小,可以观察到生成的图像旋转角度随之改变,同时,采用双线性插值算法的图像更为清晰。

3.图像水平镜象分析:flipdim(X,dim),其中X表示一个矩阵,dim指定翻转方式,dim为1,表示按行翻转,2表示按列翻转。

图像几何变换的理论及MATLAB实现

图像几何变换的理论及MATLAB实现

维普资讯
第 4期
古丽娜等
图像几何 变换 的理论及 MAT AB实现 L
2 5

到 的亮 度值 。
常 见 图像 是 连续定 义 的 , f, Y的值 可以是任 意实 数 。 了能用 数字计 算机对 图像进 行加工 处理 , 即 z, 为 需
要把 连 续的 图像 在坐标 空间 y和性质 空间 F 都进行 离散 化 。 这种离散 化 了的图像就 是数字 图像 , 以用 , 可 (,) 表示 。这 里 ,代表 离 散化后 的 ,rc代 表离散 化后 的 ( )其 中 , ,c来 . ( ,) , , . 代表 图像 的行 (o ,代 表 图 rw)c 像 的列 ( lmn 。 c u ) 这里 ,cr 的值都 是整数 。 章 以后 主要讨 论数 字 图像 , o ,,, 文 在不 至引起混 淆 的情 况下 我们用 f( ) 表数字 图像 , x, 代 如不 特 别说 明 , , 在整数 集合 中取 值 。 f, Y都
( ) , 的某种性 质 F 的数值 。例 如常用 的图像 一般是 灰 度 图 , 时 厂表示 灰度值 , 这 它常对 应 客观景 物被 观察
[ I 收j 1日期]2 0 一l —1 04 1 2 [ 作者简 介]古丽娜( 9 4 . , 1 7 一) 女 维吾尔族 . 新疆乌鲁木齐人 . 师, 讲 主要从事纠’ 算机 多媒 体技术 . 计算机辅助教育技术等方 向的教育 与 研 究
客 观世 界 在空 问上 是三维 ( 一D) 但 一般从 客观 景物 得 到 的图像 是二 维 ( 一D) 。一 幅图像 可 以用 3 的, 2 的

个 2 一D 数组 f( ) 表示 , 里 z和 Y表示 2 x, 来 这 一D 空 间 xy中 一个坐 标点 的位置 , ,则 代表 图像 在点 而

如何进行MATLAB图像配准和变换

如何进行MATLAB图像配准和变换

如何进行MATLAB图像配准和变换引言图像配准和变换是数字图像处理中一项重要任务,它能够将不同空间、不同感知角度或不同时间采集的图像进行对齐,从而实现图像像素之间的准确匹配。

MATLAB作为一种常用的科学计算软件,提供了丰富的图像处理函数和工具箱。

本文将介绍如何使用MATLAB进行图像配准和变换,以帮助读者更好地理解和应用这些功能。

一、图像配准基础1. 图像配准定义图像配准是指将两幅或多幅图像通过某种变化,使得它们的像素点对齐。

这种对齐可以通过平移、旋转、缩放等几何变换来实现。

2. 图像配准应用图像配准在许多领域都有广泛的应用,如医学图像处理、遥感图像处理、计算机视觉等。

例如,在医学领域,图像配准可以用于将不同时间拍摄的磁共振图像对齐,以便医生更好地观察患者的病情变化。

二、MATLAB图像配准函数MATLAB提供了几个常用的图像配准函数和工具箱,方便用户进行图像配准和变换。

下面将介绍一些常用的函数和工具箱。

1. imregister函数imregister函数是MATLAB中一个常用的图像配准函数,它能够将两幅图像进行几何变换以实现图像配准。

该函数基于最大互信息和归一化互相关等算法实现,能够自动处理旋转、平移、缩放和扭曲等运动畸变。

2. cpselect工具箱cpselect工具箱是MATLAB中用于图像配准的一个交互式工具箱。

它能够通过用户交互的方式,选择两幅图像中的对应点,计算并输出变换矩阵。

用户可以通过可视化的界面进行点选,并查看配准效果。

三、图像配准步骤基于MATLAB提供的函数和工具箱,进行图像配准的一般步骤如下:1. 加载图像使用imread函数加载待配准的图像,将其转换为灰度图像或彩色图像,存储为变量img1和img2。

2. 预处理图像根据具体情况,对图像进行预处理操作,如去噪、平滑、增强等。

这一步骤可以提高后续配准的准确性和稳定性。

3. 选择对应点使用cpselect工具箱,通过交互方式选择两幅图像中的对应点。

matlab实现平面图形的几何变换

matlab实现平面图形的几何变换
变垂直轴的刻度单位。
旋转变换:设函数图形以原点为中心,逆时针旋转 角,原来的坐标 (x, y) 变为新的坐 标 ( X ,Y ) ,旋转变换为
X x cos y sin Y x sin y cos 对称变换:把函数 y f (x) 变化为 y f (x) ,函数图形关于原点对称;把函数 y f (x) 变化为 y f (x) ,函数图形关于 y 轴对称;把函数 y f (x) 变化为 y f (x) ,
2.几种常见的几何变换 常见的平面图形的几何变换有平移、伸缩、对称、旋转等变换。
平移变换:把函数 y f (x) 变化为 y f (x a) ,可将函数图形向右平移 a 个单位, 把函数 y f (x) 变化为 y f (x) a) ,可将函数图形向上平移 a 个单位,
伸缩变换:把函数 y f (x) 变化为 y f (sx) ,函数图形会压缩或伸长,其作是改变 水平轴的刻度单位,因此 s 称为水平刻度参数,把函数 y f (x) 变化为 y sf (x) ,则可改
0 1 0 1. 关于直线 y x 对称的变换,对应的矩阵为 A 1 0 0 。
0 0 1
二、实验结果 1. 将函数 y ex2 的图形向右平移 3 个单位且向上平移 3 个单位.
2. 将函数 y ex2 的图形在水平方向收缩一倍,在垂直方向放大一倍。 3. 将函数 y x 2 的图形以原点为中心,顺时针旋转 30 度角. 4. 已知函数 y 2x x 2, ,0 x 2 ,试扩展函数的定义域,使之成为 2 周期的偶函数,
并画出函数在[-8,8]上的图形。若要把函数延拓成以 4 为周期的奇函数呢?
5. 做怎样的变换才能使函数图形绕给定的点 (a, b) 转动?这个变换可以分解成 3 个基 本变换:平移量为 (a,b) 的平移变换T1 ,旋转角度为 的旋转变换T2 ,T1 的逆变换 T11 .求出变换矩阵,写出与变换相应的方程,并对具体的函数图形进行变换. (1) y sin x, x (0,2 ) (2) x a sin t, y b cos t,t (0,2 )

matlab图像几何变换和图像增强

matlab图像几何变换和图像增强

一.图像几何变化(1)放大,缩小,旋转程序:I=imread('111.jpg');J=imresize(I,1.5);L=imresize(I,0.75);K=imrotate(I,35,'bilinear');subplot(221),subimage(I); title('原图像');subplot(222),subimage(J); title('放大后图像');subplot(223),subimage(L); title('缩小后图像');subplot(224),subimage(K);title('旋转后图像');二.图像频域变换(1)傅里叶变换真彩图像灰度图像傅里叶变换谱程序:I=imread('111.jpg');figure(1);imshow(I);B=rgb2gray(I);figure(2);imshow(B)D=fftshift(fft2(B));figure(3);imshow(log(abs(D)),[ ]);(2)离散余弦变换真彩图灰度图进行离散余弦变换后程序:RGB=imread('111.jpg');figure(1);imshow(RGB);G=rgb2gray(RGB);figure(2);imshow(G);DCT=dct2(G);figure(3);imshow(log(abs(DCT)),[]);三.图像增强:(1)指数变换程序:f=imread('111.jpg')f=double(f);g=(2^2*(f-1))-1;f=uint8(f);g=uint8(g);subplot(1,2,1),subimage(f);subplot(1,2,2),subimage(g);(2)直方图均衡程序:I=imread('111.jpg');I=rgb2gray(I);figuresubplot(221);imshow(I);subplot(222);imhist(I)I1=histeq(I);figure;subplot(221);imshow(I1)subplot(222);imhist(I1)(3)空域滤波增强锐化滤波(Roberts算子Sobel算子拉普拉斯算子)程序:I=imread('000.tif');J1=edge(I,'roberts'); %Roberts算子figure;imshow(uint8(I));title('原图');figure;subplot(221);imshow(J1);title('Roberts算子锐化'); J2=fspecial('Sobel'); %Sobel算子J2=J2';TJ1=filter2(J2,I);J2=J2';TJ2=filter2(J2,I);subplot(222),imshow(TJ1,[]),title('垂直模板'); subplot(223),imshow(TJ2,[]),title('水平模板');f=fspecial('laplacian'); %拉普拉斯算子J3=imfilter(I,f);subplot(224),imshow(J3);title('拉普拉斯算子');平滑滤波及中值滤波程序:I=imread('000.tif');J=imnoise(I,'salt & pepper',0.02);subplot(221),imshow(I);title('原图像');subplot(222),imshow(J);title('添加椒盐噪声图像');k1=filter2(fspecial('average',3),J); %进行3*3模板平滑滤波k2=medfilt2(J); %进行3*3模板中值滤波subplot(223),imshow(uint8(k1));title('3*3模板平滑滤波');subplot(224),imshow(k2);title('3*3模板中值滤波');(4)频域滤波增强低通滤波程序:I=imread('000.tif');J=imnoise(I,'salt & pepper',0.02);subplot(121),imshow(J);title('添加椒盐噪声图像');J=double(J);f=fft2(J); %采用傅里叶变换g=fftshift(f) %数据矩阵平衡[M,N]=size(f);n=3;d0=20n1=floor(M/2)n2=floor(N/2)for i=1:M %进行低通滤波for j=1:Nd=sqrt((i-n1)^2+(j-n2)^2)h=1/(1+(d/d0)^(2*n));g1(i,j)=h*g(i,j);endendg1=ifftshift(g1);g1=uint8(real(ifft2(g1)));subplot(122);imshow(g1);title('低通滤波后的图像'); %显示低通滤波结果 高通滤波程序:I=imread('000.tif');J=imnoise(I,'salt & pepper',0.02);subplot(221),imshow(J);title('添加椒盐噪声图像');J=double(J);f=fft2(J); %采用傅里叶变换[M,N]=size(f);n=2;d0=20n1=floor(M/2)n2=floor(N/2)for i=1:M %进行巴特沃斯高通滤波及巴特沃斯高通加强滤波for j=1:Nd=sqrt((i-n1)^2+(j-n2)^2);if d==0;h1=0;h2=0.5;elseh1=1/(1+(d0/d)^(2*n));h2=1/(1+(d0/d)^(2*n))+0.5;endgg1(i,j)=h1*g(i,j);gg2(i,j)=h2*g(i,j);endendgg1=ifftshift(gg1);gg1=uint8(real(ifft2(gg1)));subplot(222);imshow(gg1);title('巴特沃斯高通滤波后的图像'); %显示结果gg2=ifftshift(gg2);gg2=uint8(real(ifft2(gg2)));subplot(223);imshow(gg2);title('巴特沃斯高通滤波加强后的图像');同态滤波程序:J=imread('000.tif');subplot(121);imshow(J);title('原图像');J=double(J);f=fft2(J); %采用傅里叶变换[M,N]=size(f);d0=10;r1=0.5;rh=2c=4;n1=floor(M/2);n2=floor(N/2);for i=1:M %进行同态滤波for j=1:Nd=sqrt((i-n1)^2+(j-n2)^2)h=(rh-r1)*(1-exp(-c*(d.^2/d0.^2)))+r1;g(i,j)=h*g(i,j);endendg=ifftshift(g);g=uint8(real(ifft2(g)));subplot(122);imshow(g);title('同态滤波后的图像'); %显示同态滤波结果。

Matlab中的空间变换与几何校正方法

Matlab中的空间变换与几何校正方法

Matlab中的空间变换与几何校正方法引言Matlab是一种功能强大的数学软件,它在图像处理和计算机视觉领域有着广泛的应用。

其中,空间变换和几何校正是两个重要的方面。

本文将介绍Matlab中的空间变换方法和几何校正方法,并分析它们的原理和应用。

一、空间变换方法空间变换是指对图像进行平移、旋转、缩放和扭曲等操作,以实现图像的几何变换。

Matlab提供了多种空间变换方法,包括仿射变换、透视变换和弹性变形等。

1. 仿射变换仿射变换是一种保持直线和平行线间距比例的变换。

在Matlab中,可以使用imtransform函数实现仿射变换。

具体操作包括定义仿射变换矩阵,将变换矩阵作为输入参数传递给imtransform函数,然后将变换后的图像进行显示或保存。

2. 透视变换透视变换是一种非线性的空间变换,它可以将一个平面上的图像转换成位于另一个平面上的图像。

在Matlab中,可以使用fitgeotrans函数估计透视变换参数,并使用imwarp函数进行透视变换。

透视变换常用于图像矫正、立体视觉和摄像头标定等领域。

3. 弹性变形弹性变形是一种基于物理模型的变换方法,它可以对图像进行局部扭曲和形变。

Matlab中的imspecular函数可用于实现弹性变形。

它可以根据一组控制点的位置和形变力场参数,实现图像的弹性变形处理。

弹性变形常用于医学图像分析、形变测量和表面拟合等应用。

二、几何校正方法几何校正是指对图像进行校正和修正,以纠正因成像设备和拍摄条件引起的几何变形和畸变。

Matlab提供了多种几何校正方法,包括相机标定、图像纠正和立体校正等。

1. 相机标定相机标定是指确定相机内外参数的过程。

在Matlab中,可以使用cameraCalibrator应用或相机标定工具箱进行相机标定。

相机标定可以获取相机的畸变模型和内外参数,进而进行图像校正、立体匹配和虚拟现实等应用。

2. 图像纠正图像纠正是指纠正图像中的畸变和变形。

图像几何变换matlab

图像几何变换matlab

二、图像几何变换
由于拍摄图像的角度、距离等原因,可能
会需要对图像进行适当的几何变换。
几何变换又称为空间变换,是将一幅图像
中的坐标位置映射到另外一幅图像中的新 坐标位置。它不改变图像的像素值,只是 在图像平面上进行像素的重新安排。
三、解决几何变换问题的思路
一般要考虑原图像中的某个像素点的
x
y1 y0


y
2. 垂直镜像的变换公式
(x0,y0)是原图像上的点,中心轴如图所示, 垂直镜像对应的新坐标点为: x1=x0; y1=Nx0
y0;
y0
0
x1 x 垂 直 像
y1

N y
3. 程序实现:
4. MATLAB中实现镜像的函数
水平镜像和垂直镜像的变换矩阵:
[ x1 y1 1] [ x0 y0
(x0,y0)是原图像上的点,图像水平平移量为
a,垂直平移量为b,如图所示。
平移后的新坐标点为: x1=x0+a; y1=y0+b;
x0 0 a 平 移 x1 x
y0 b
y1 y
2. 程序实现:
3. 知识

2.2 图像平移
2.3 图像镜像 2.4 图像转置 2.5 图像缩放 2.6 图像旋转
G = rgb2gray(F); % 将F对应的RGB彩色图像数据 转换为灰度图像数据,存入G中
关于图像的函数和命令(2)
imwrite(G,‘rice1.bmp’); %将图像数据G写入文件
rice1中,存为新图片。
imshow(F); %显示图像数据F对应的图像
figure;
subplot(2,2,1);
坐标(x0,y0) 和此像素点映射到新图像
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数字图像处理论文--图像的几何变换及其MATLAB实现学院:理学院专业:信息与计算科学班级:信计1012 姓名:学号:任课老师:集美大学理学院二○一三年十一月二十八日目录摘要 (1)一、何谓数字图像处理 (1)二、数字图像几何变换简介 (1)三、MATLAB图像处理工具介绍 (1)四、图像几何变换的MATLAB实现 (2)4.1图像几何变换的概述 (2)4.2 图像的平移变换 (2)4.3 图像的比例缩放 (4)4.4 图像的镜像变换 (5)4.5 图像的旋转变换 (7)4.6 图像的剪取 (8)五、图像几何变换的应用以及技术局限 (10)参考文献 (10)摘要:图像变换就是把图像从空间域转换到变换域(如频率域)的过程。

图像变换可以使人们从另一角度来分析图像信号的特性,利用变换域中特有的性质,使图像处理过程更加简单、有效。

图像变换是许多图像处理与分析技术的基础,而几何变换是图像变换中最基础也是应用最广泛的技术之一,本文基于MATLAB的图像处理工具,通过改变图像像素的空间位置或估算新空间位置上的像素值,从而实现图像的平移、缩放、旋转、镜像变换、图像插值等几何变换。

关键字:图像变换、几何变换、MATLAB一、何谓数字图像处理数字图像处理(Digital Image Processing),就是利用数字计算机或则其他数字硬件,对从图像信息转换而得到的电信号进行某些数学运算,以提高图像的实用性。

例如从卫星图片中提取目标物的特征参数,三维立体断层图像的重建等。

总的来说,数字图像处理包括点运算、几何处理、图像增强、图像复原、图像形态学处理、图像编码、图像重建、模式识别等。

目前数字图像处理的应用越来越广泛,已经渗透到工业、医疗保健、航空航天、军事等各个领域,在国民经济中发挥越来越大的作用。

二、数字图像几何变换简介[3]今天数字技术时代,我们身边接触到很多的数字图像,而对数字图像的处理往往会遇到需要对图像进行几何变换的一些问题。

图像几何变换是图像显示技术中的一个重要组成部分。

在图像几何变换中主要包括图像的缩放、旋转、移动、剪取等内容。

无论照片、图画、书报、还是医学X光和卫星遥感图像等领域都会用到这些技术。

通过图像的几何变换技术,可以显著提高图像处理效率和质量,为更进一步的图像处理奠定基础。

三、MATLAB图像处理工具介绍[1]MATLAB全称是Matrix Laboratory(矩阵实验室),一开始它是一种专门用于矩阵数值计算的软件。

它绝大多数的运算都是通过矩阵这一形式进行的,这一特点也就决定了MATLAB 在处理数字图像上的独特优势。

在计算机上对图像进行数字处理的时候,首先必须对其在空间和亮度上进行数字化,二维图像进行均匀采样,就可以得到一幅离散化成M ×N 样本的数字图像,该数字图像是一个整数阵列,因而用矩阵来描述该数字图像是最直观最简便的了。

而MATLAB 的长处就是处理矩阵运算,因此用MATLAB 处理数字图像非常的方便。

我们可以应用MATLAB 的图像处理工具包实现图像平移、缩放和旋转等几何变换。

图像处理工具包是由一系列支持图像处理操作的函数组成的。

所支持的图像处理操作有:图像的几何操作、邻域和区域操作、图像变换、图像恢复与增强、线性滤波和滤波器设计、变换(DCT 变换等) 、图像分析和统计、二值图像操作等。

MATLAB 在图像中的应用都是由相应的MATLAB 函数来实现的,使用时,只需按照函数的调用语法正确输入参数即可实现图像的几何变换。

四、图像几何变换的MATLAB 实现[2]4.1、图像几何变换的概述图像几何变换的实质是改变像素的空间位置或估算新空间位置上的像素值。

图像几何变换的一般表达式:[,][(,),(,)]u v X x y Y x y =其中,[,]u v 为变换后图像像素的笛卡尔坐标,[,]x y 为原始图像中像素的笛卡尔坐标。

这样就得到了原始图像与变换后图像的像素的对应关系。

如果(,),(,)X x y x Y x y y ==则有[,][,]u v x y =即变换后图像仅仅是原图像的简单拷贝。

4.2、图像的平移变换图像平移就是将图像中所有的点都按照指定的平移量水平、垂直移动。

设(x0,y0)为原图像上的一点,图像水平平移量为tx ,垂直平移量为ty ,则平移后点(x0,y0)坐标将变为(x1,y1)。

显然(x0,y0)和(x1,y1)的关系如下:⎩⎨⎧+=+=tyy y tx x x 0101用矩阵表示如下:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡1001001001111y x ty tx y x 对该矩阵求逆,可以得到逆变换:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡1111001001100y x ty tx y x 即⎩⎨⎧-=-=tyy y tx x x 1010这样,平移后的图像上的每一点都可以在原图像中找到对应的点。

例如,对于新图中的(0,0)像素,代入上面的方程组,可以求出对应原图中的像素(-tx ,-ty )。

如果tx 或ty 大于0,则(- tx ,- ty )不在原图中。

对于不在原图中的点,可以直接将它的像素值统一设置为0或则255(对于灰度图就是黑色或白色)。

同样,若有点不在原图中,也就说明原图中有点被移出显示区域。

如果不想丢失被移出的部分图像,可以将新生成的图像宽度扩大|tx |,高度扩大| ty |。

Matlab 实现J=imread('E:\image3.jpg');figure; subplot(1,3,1); imshow(J); title('原图');s=translate(strel(1),[50,-50]); J1=imdilate(J,s); subplot(1,3,2); imshow(J1);title('左下方平移');s=translate(strel(1),[50,50]); J2=imdilate(J,s); subplot(1,3,3); imshow(J2);title('右下方平移'); 运行结果:4.3、图像的比例缩放图像比例缩放是指将给定的图像在x 轴方向按比例缩放x f 倍,在y 轴按比例缩放y f 倍,从而获得一幅新的图像。

如果x y f f =,即在x 轴方向和y 轴方向缩放的比率相同,称这样的比例缩放为图像的全比例缩放。

如果x y f f ≠,图像的比例缩放会改变原始图象的像素间的相对位置,产生几何畸变。

设原图像中的点000(,)P x y 比例缩放后,在新图像中的对应点为(,)P x y ,则比例缩放前后两点000(,)P x y 、(,)P x y 之间的关系用矩阵形式可以表示为:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡11000000100y x fy fx y x其中, x f 和y f 分别为0x 和0y 坐标的缩放因子,其大于1表示放大,小于1表示缩小。

MATLAB 实现:I=imread('E:\image3.jpg');figure;imshow(I); title('原图');J1=imresize(I,0.5,'nearest'); figure; imshow(J1);title('缩小图');J2=imresize(I,2,'nearest');figure;imshow(J2);title('放大图');运行结果:4.4、图像的镜像变换图像的镜像变换分为两种:一种是水平镜像,另外一种是垂直镜像。

图像的水平镜像操作是将图像的左半部分和右半部分以图像垂直中轴线为中心镜像进行对换;图像的垂直镜像操作是将图像上半部分和下半部分以图像水平中轴线为中心镜像进行对换。

设图像高度为lHeight,宽度为lWidth,原图中(x0,y0)经过水平镜像后坐标将变为(lWidth-x0,y0),其矩阵表达式为:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡10010001001111x y lWidth y x逆运算矩阵表达式为:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡11110001001100y x lWidth y x 即⎩⎨⎧=-=1010y y x lWidth x同样,(x0,y0)经过垂直镜像后坐标将变为(x0,lHeight-y0),其矩阵表达式为:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡10010010001111y x lHeight y x 逆运算矩阵表达式为:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡11110010001100y x lHeight y x 即⎩⎨⎧-==1010y lHeight y x xMATLAB 实现:I=imread('E:\MAN.tif');figure;subplot(1,3,1); imshow(I); title('原图');tform1=maketform('affine',[-1 0 0;0 1 0;1 0 1]); J1=imtransform(I,tform1,'nearest'); subplot(1,3,2); imshow(J1);title('水平镜像');tform2=maketform('affine',[1 0 0;0 -1 0;0 1 1]); J2=imtransform(I,tform2,'nearest'); subplot(1,3,3); imshow(J2);title('垂直镜像'); 运行结果:4.5、图像的旋转一般图像的旋转是以图像的中心为原点,旋转一定的角度。

旋转后,图像的大小一般会改变。

和图像平移一样,既可以把转出显示区域的图像截去,也可以扩大图像范围以显示所有的图像。

可以推导一下旋转运算的变换公式。

如下图所示,点(x0,y0)经过旋转θ度后坐标变成(x1,y1)。

在旋转前:⎩⎨⎧==)sin(0)cos(0θθr y r x 旋转后:⎩⎨⎧+-=-=-=+=+=-=)cos(0)sin(0)sin()cos()cos()sin()sin(1)sin(0)cos(0)sin()sin()cos()cos()cos(1θθθαθαθαθθθαθαθαy x r r r y y x r r r x 写成矩阵表达式为:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡1001000)cos()sin(0)sin()cos(111y x y x θθθθ其逆运算如下:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡1111000)cos()sin(0)sin()cos(100y x y x θθθθMATLAB 实现:I=imread('E:\WOMAN.jpg'); figure;subplot(1,2,1); imshow(I); title('原图'); [M,N]=size(I);ang=30; J=I;for i=1:M for j=1:Nx=floor((i-M/2)*cos(ang*pi/180)-(j-N/2)*(-sin(ang*pi/180))+M/2); y=floor((j-N/2)*cos(ang*pi/180)+(i-M/2)*(-sin(ang*pi/180))+N/2); if((x<M)&(y<N)&(x>0)&(y>0)) J(i,j)=I(x,y); elseJ(i,j)=0; end end endsubplot(1,2,2);imshow(J);title('图像旋转'); 运行结果:4.6、图像的剪取有时候我们为了减少图像所占存储空间,舍弃图像的无用部分,只保留感兴趣的部分,则需要用到图像的剪取。

相关文档
最新文档