




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第3章章 图像的几何变换图像的几何变换 杨淑莹杨淑莹 教授教授天津理工大学天津理工大学 计算机与通信工程学院计算机与通信工程学院本章要点:本章要点: 图像的平移图像的平移 图像的镜像变换图像的镜像变换 图像的缩放图像的缩放 图像的转置图像的转置 图像的旋转图像的旋转3.1 3.1 图像的平移图像的平移1. 理论基础理论基础 图像平移(Translation)是将图像中所有的点都按照指定的平移量,进行水平、垂直移动。 设初始坐标为(x0,y0)的点 经过平移(tx,ty)后 坐标变为(x1,y1)。 1. 1. 理论基础理论基础 tx 坐标原点 (x0,y0) ty (x1,y1) 图3-1
2、像素平移示意图 显然(x0,y0)和(x1,y1)的关系如下: x1=x0+tx y1=y0+ty2. 2. 理论验证理论验证xyy(0,0)(0,0)xy(0,0)3. 流程设计流程设计 (1) 取得原图的数据区指针。(2) 通过对话框输入偏移量tx,ty。(3) 开辟一个同样大小的缓冲区。(4) 对原图依次循环每个像素,每读入一个像素点(x0,y0),根据它的坐标,找到目标图像的位置(x1=x0-tx,y1=y0-ty),将像素(x0,y0)处的颜色值赋给新图中的(x1,y1)。4. 4. 编程实现编程实现 for( i = 0; i wide; i+) for(int j = 0; j
3、= 0) & (i0 = 0) & (j0 height) lpDst = (LPBYTE)temp + lLineBytes *(height - 1 - j0) + i0; *lpDst = *lpSrc; else* (unsigned char*)lpDst) = 255; /3.2 图像的镜像变换图像的镜像变换1 理论基础理论基础 图像的镜像变换分为两种:一种是水平镜像,另一种是垂直镜像。 图像的水平镜像操作是以原图像的垂直中轴线为中心,将图像分为左右两部分进行对称变换; 图像的垂直镜像操作是以原图像的水平中轴线为中心,将图像分为上下两部分进行对称变换。 镜像变换后图的高和宽都不变。
4、 1.1.理论基础理论基础-水平镜像水平镜像 设图像高度为Height,宽度为Width, 原图中的(x0,y0)经过水平镜像后, 坐标将变成(Width-x0,y0)。即: x1=Width-x0 y1=y01.1.理论基础理论基础-垂直垂直镜像镜像 点(x0,y0)经过垂直镜像后, 坐标将变成为(x0,Height-y0),即: x1=x0 y1=Height-y02 2理论验证理论验证 (a)原图 (b)水平镜像处理效果图 (c)垂直镜像处理效果图 图3-2 镜像处理3. 3. 流程设计流程设计 (1) 取得原图的数据区指针。(2) 开辟一个同样大小的缓冲区。(3) 每个像素依次循环。
5、在水平镜像中,将原图中的像素点的水平坐标变成镜像后的坐标(用图像的宽度减去坐标值)在显示到图像上。 垂直镜像中,则对垂直坐标做相应的处理。4.4.编程实现编程实现-水平镜像水平镜像for(j = 0; j height; j+) for(i = 0; i wide;i+) lpSrc = (LPBYTE)p_data +wide *j + i; lpDst = (LPBYTE)temp + wide* j+ wide - i; *lpDst = *lpSrc; 4.4.编程实现编程实现-垂直镜像垂直镜像for(i = 0; i wide;i+) for(j = 0; j 1且ky1时,原图像被
6、放大。 放大图像时,产生了新的像素,可通过插值算法来近似处理。 例如:当kx=ky=2时,图像放大2倍, 原图中的某一个像素,对应新图的4个像素。 (a)原图中的某一个像素 (b)对应新图的4个像素 图3-3 图像放大示意图1 1缩小图像理论基础缩小图像理论基础 当kx1且ky1时,原图像被缩小。 例如,当kx=ky=0.5时,图像被缩到一半大小,原图中4个像素对应新图中的一个像素。此时缩小后的图像中的(0,0)像素对应于原图中的(0,0)、(0,1)、(1,0)、(1,1)像素一个; 以此类推。在原图基础上,每行隔一个像素取一点,每割一行进行操作。如下图3-4所示。 (a)原图中的某4个像素
7、 (b)对应新图的1个像素 图3-4 图像缩小示意图 从上可见,放大与缩小的原理不同。2.2. 理论验证理论验证 (c)长宽各放大2倍的效果图 (a)原图 (b)长宽缩小0.5倍的效果图 3.3.流程设计流程设计 (1) 取得原图的数据区指针。(2) 通过对话框获得放大整数比例:kx,ky。更改图象的宽度和高度。(3) 每个像素依次循环。计算该象素在原图象中的坐标,将原图的象素值赋给目标象素相应位置kx*ky个值。4.4.编程实现编程实现-放大图像放大图像 / for(j = 0; j height-1; j+) for(i = 0; i wide-1; i+) lpSrc = (LPBYTE
8、)p_data + wide * j + i;for(int n=0;nk1;n+)for(int m=0;mk2;m+) lpDst = (LPBYTE)temp + newwide *(j*k1+ n) + i*k2+m; *lpDst = *lpSrc;4 4编程实现编程实现-缩小图像缩小图像for(j = 0; j newheight-1; j+) for(i = 0; i = 0) & (i0 = 0) & (j0 height) lpSrc = (LPBYTE)p_data + wide * j0 + i0;*lpDst = *lpSrc; else *lpDst = 255; 小
9、结 本章主要介绍了图象的预处理中最基本的几何变换处理,包括图像的平移、图像的镜像变换、图像的缩放、图像的转置、图像的旋转。这些是进行图象几何校正的基本方法。第三章第三章 图像的几何变换图像的几何变换 (第二讲)(第二讲)本章编程关键点本章编程关键点n开辟新的目标图像内存空间。开辟新的目标图像内存空间。n计算目标图像或原图像的位置。计算目标图像或原图像的位置。n将原图像的像素值赋给目标区将原图像的像素值赋给目标区域的位置。域的位置。3.3 3.3 图像的镜像变换图像的镜像变换水平镜像:水平镜像:垂直中轴线为中心,将图像分为垂直中轴线为中心,将图像分为左右两部分;左右两部分;垂直镜像:垂直镜像:水
10、平中轴线为中心,将图像分为水平中轴线为中心,将图像分为上下两部分。上下两部分。 镜像变换后图的镜像变换后图的高和宽都不变高和宽都不变。 x1=Width-x0 x1=Width-x0y1=y0y1=y0图像水平镜像变换图像水平镜像变换110001001100yxfWidthyx x1=x0 x1=x0 y1=Height-y0y1=Height-y0110010001100yxfHeightyx图像垂直镜像变换图像垂直镜像变换(1)(1)取得原图的数据区指针。取得原图的数据区指针。(2)(2)开辟一个同样大小的缓冲区。开辟一个同样大小的缓冲区。(3)(3)每个像素依次循环:每个像素依次循环:水
11、平镜像:用图像的宽度减去原像素的坐标值。水平镜像:用图像的宽度减去原像素的坐标值。垂直镜像:用图像的高度减去原像素的坐标值。垂直镜像:用图像的高度减去原像素的坐标值。将像素(将像素(x0,y0 x0,y0)处的颜色值赋给新图中的)处的颜色值赋给新图中的(x1,y1x1,y1)实现步骤实现步骤for(j = 0; j height; j+) for(i = 0; i wide;i+) lpSrc = (LPBYTE)p_data +wide *j + i;lpDst = (LPBYTE)temp + wide* j+ wide - i; *lpDst = *lpSrc; 水平镜像程序代码水平镜像
12、程序代码 for(i = 0; i wide;i+)for(j = 0; j height; j+)lpSrc = (LPBYTE)p_data + wide * j+i;lpDst = (LPBYTE)temp + wide * (height - j - 1)+i;*lpDst = *lpSrc;垂直镜像程序代码垂直镜像程序代码效果对比图效果对比图3.4 3.4 图像的转置图像的转置 将图像像素的将图像像素的x x坐标和坐标和y y坐标坐标互换互换。将。将改变改变图像的高度和宽图像的高度和宽度,转置后图像的度,转置后图像的高度和宽度高度和宽度将互换将互换。 x1=y0 x1=y0 y1=x
13、0y1=x0lpSrc = (LPBYTE)p_data+ lpSrc = (LPBYTE)p_data+ lLineBytes lLineBytes * * j + i; j + i;lpDst = (LPBYTE)temp + lpDst = (LPBYTE)temp + lNewLineBytes lNewLineBytes* * i+ j; i+ j;程序代码程序代码图像转置图像转置效果对比图效果对比图3.5 图像的旋转 必须指明图像绕着什么旋必须指明图像绕着什么旋转。一般图像的旋转是以图转。一般图像的旋转是以图像的像的中心为原点中心为原点,旋转一定,旋转一定的的角度角度。 旋转后,一
14、般会旋转后,一般会改变改变图像图像的大小。的大小。 11000cossin0sincos100yxyx旋转后:旋转后: x1=x0cos( )+y0sin() y1=-x0sin()+y0cos()图像旋转图像旋转for(y1=0;y1Hnew;y1+)for(x1=0;x1=0) & (x0=0) & (y01kx1且且ky1ky1时,原图像被放大,面时,原图像被放大,面积增加。积增加。 由于放大图像时产生了新的像素,由于放大图像时产生了新的像素,可通过插值算法来近似处理。可通过插值算法来近似处理。 当当kx=ky=2kx=ky=2时,图像放大时,图像放大2 2倍,原图倍,原图中的某一个像素
15、,对应新图的中的某一个像素,对应新图的4 4个像素。个像素。 图像放大图像放大 表表3.11 2 3 42 3 4 05 6 7 76 6 3 3 表表3.21 1 2 2 3 3 4 41 1 2 2 3 3 4 42 2 3 3 4 4 0 02 2 3 3 4 4 0 05 5 6 6 7 7 7 75 5 6 6 7 7 7 76 6 6 6 3 3 3 36 6 6 6 3 3 3 3图像放大图像放大 当当kx1kx1且且ky1ky newimagei*kx+mj*ky+n 放大实现步骤放大实现步骤for(j = 0; j height-1; j+)for(i = 0; i wide
16、-1; i+) lpSrc = (LPBYTE)p_data + wide * j + i;for(int n=0;nk1;n+) for(int m=0;mk2;m+)lpDst = (LPBYTE)temp + newwide *(j*k1+ n) + i*k2+m;*lpDst = *lpSrc;放大程序代码放大程序代码n依次循环每个像素。依次循环每个像素。n计算该象素在原图象中的坐标,计算该象素在原图象中的坐标,将原图的象素值赋给目标象素将原图的象素值赋给目标象素相应位置。相应位置。 newimageij=imagei/yj/y缩小实现步骤缩小实现步骤for(j = 0; j newheight-1; j+)for(i = 0; i = 0) & (i0 = 0) & (j0 height) lpSrc = (LPBYTE)p_data + wide * j0 + i0;*lpDst = *lpSrc; / 复制象素复
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025金华武义县人力资源限公司招聘1名项目制员工模拟试卷(含答案详解)
- 2025年乐山高新区管委会直属事业单位公开考核招聘工作人员的模拟试卷及1套完整答案详解
- 关于继续履行合同的通知书6篇
- 设备租赁维修技术协议合同
- 驻校卫生员考试题库及答案
- 物种起源考试题库及答案
- 主体结构考试题库及答案
- 支护工考试题库及答案
- 2025年新疆农作物制种种植保险合同协议
- 2025年广西梧州市辅警考试真题及答案
- 戴海崎心理与教育测量第4版课后习题答案
- 设备保管协议
- 中石油职称英语通用教材
- 某火电厂输煤系统土建工程监理细则
- 室外消防钢丝网骨架塑料复合PE管施工及方案
- 超声引导下坐骨神经阻滞
- 焊接质量手册
- GB/T 29049-2012整樘门垂直荷载试验
- 【上课用】 高三数学一轮复习-错位相减法课件
- 《放飞烦恼-拥抱快乐-》-心理健康p课件
- 交管12123驾驶证学法减分题库与答案
评论
0/150
提交评论