实验4 图像几何变换—哈哈镜制作
vc++实现图像放大、缩小、平移、旋转、各种哈哈镜变形
任课教师:曹丽
《数字图像处理》
(2012-2013学年第2学期)
实 验 报 告
姓名: 张慧
班级:10电科(2)班
学号:E10640204
vc++实现图像放大、缩小、平移、旋转、各种哈哈镜变形
实验4 图像几何变换—哈哈镜制作
一. 实验目的
熟悉图像的基本格式和数据结构。掌握图像几何变换的原理。 二.实验原理
1. 图像平移
将图像中所有的点都按照指定的平移量水平、垂直移动。设(x0, y0)是原图像上的一点,图像水平平移量为tx,垂直平移量为ty,则平移后点(x0, y0)的坐标变为(x1, y1)。
(x0, y0)与(x1, y1)之间的关系为:
以矩阵的形式表示为:
x1 x0 tx
y y t0y 1
(1)
x1 10tx x0 y 01ty y0 1
1 001 1
(2)
它的逆变换:
x0 10 tx x1 y 01 t0y y1 1 001 1
(3)
平移后的图像中每个像素的颜色是由原图像中的对应点颜色确定的。图像平移处理流程如图1所示。
2. 图像旋转
通常是以图像的中心为圆心旋转,按顺时针方向旋转,如图2所示。 旋转前:
旋转a角度后:
x0 rcosb
y rsinb 0
(4)
x1 rcos b a rcosbcosa rsinbsina x0cona y0sinay1 rsin b a rsinbcosa rcosbsina x0sina y0cosa
(5)
以矩阵的形式表示为:
vc++实现图像放大、缩小、平移、旋转、各种哈哈镜变形
图2 旋转示意图
x1 cosasina0 x0 y sinacosa0 1 y0 1 0 01 1
(6)
(6)式中,坐标系是以图像的中心为原点,向右为x轴正方向,向上为y轴正方向。它和以图像左上角为原点,向右为x轴正方向,向下为y轴正方向的坐标系之间的转换关系如图3所示。
yⅠ
图3 两种坐标系间的转换关系图
Ⅰ
xⅡ
设图像的宽度为w,高度为h,容易得到:
x 100.5w xⅡ y 0 10.5h yⅡ 1 00 1 1
(7)
逆变换为:
xⅡ 10 0.5w x y 0 10.5hⅡ y 1 00 1 1
(8)
有了以上公式,可以把变换分成三步:
第一步,将坐标系Ⅰ变成Ⅱ; 第二步,将该点顺时针旋转a角度; 第三步,将坐标系Ⅱ变回Ⅰ。
vc++实现图像放大、缩小、平移、旋转、各种哈哈镜变形
这样,我们就得到了变换矩阵,它是上面三个矩阵的级联。那么对于新图像中的每一点,就可以根据对应原图中的点,得到它的灰度。如果超出原图范围,则填成白色。要注意的是,由于有浮点运算,计算出来点的坐标可能不是整数,采用取整处理或插值来处理。
3. 图像缩放
假设x轴放大因子为c, y轴放大因子为d,缩放的变换矩阵为:
x0 y
c0
0 0d 1 00三.实验仪器
1. 计算机; 2. VC++程序;
3. 移动式存储器(软盘、U盘等)。 4. 记录用的笔、纸。
四、 实验报告内容 实验代码:
#include "stdafx.h" #include "cv.h" #include "highgui.h" #include "stdio.h" #include "stdlib.h" #include "math.h"
#define DOWNRESIZE 0 // 缩小 #define q 0.5 //缩小倍数 #define UPRESIZE 1 // 放大 #define z 1.5 //放大倍数 #define HORAO 2 // 水平外凹 #define HORTU 3 // 水平外凸 #define LADDER 4 // 梯形变形 #define TRIANGLE 5 // 三角形变形 #define SSHAPE 6 // S形变形 #define ROTATE 7 // 图片旋转 #define TRANSLATION 8 // 图片平移 #define UNDAFORM 9//波浪形
#define RANGE 100 // 水平外凹或外凸的幅度
0 x10
y 11
1
9)
(
vc++实现图像放大、缩小、平移、旋转、各种哈哈镜变形
#define PI 3.1415926
// 哈哈镜制作
int main( int argc, char** argv ) {
IplImage* pImg; //声明IplImage指针 IplImage* pImg1; //声明IplImage指针 int i,j;
int x,y; int method; CvSize size; double tmp;
int angle = 45; double factor;
float m[6]; int width_rotate; int height_rotate;
CvMat M = cvMat (2, 3, CV_32F, m);
printf("0: 缩小\n1: 放大\n2: 水平外凹\n3: 水平外凸\n4: 梯形变形\n5: 三角形变形\n6: S形变形printf("请输入数字0—7,选择你需要的变换:\n"); scanf("%d",&method);
\n7: 图片旋转\n8: 图片平移\n");
//载入图像
pImg = cvLoadImage( "gg.bmp", 1); cvNamedWindow( "Image", 1 );//创建窗口 cvShowImage( "Image", pImg );//显示图像
printf("%d,%d",pImg->width,pImg->height); switch(method) {
// 最邻近插值图像缩小 case DOWNRESIZE:
size = cvSize(q*pImg->width,q*pImg->height); for(i=0;i<pImg1->height;i++)
for(j=0;j<pImg1->width;j++) {
float srcX=(float)(j*((float)pImg->width/(float)pImg1->width)); float srcY=(float)(i*((float)pImg->height/(float)pImg1->height)); int int_srcX=(int)srcX; int int_srcY=(int)srcY;
for(int k=0;k<pImg1->nChannels;k++)
pImg1 = cvCreateImage(size,pImg->depth,pImg->nChannels);
vc++实现图像放大、缩小、平移、旋转、各种哈哈镜变形
pImg1->imageData[i*pImg1->widthStep+j*pImg1->nChannels+k]=(uchar)pImg->imageData[int_srcY*pImg->widthStep+int_srcX*pImg->nChannels+k];
b=(bUpLeft*(1-float_srcX)*(1-float_srcY)+bUpRight*float_srcX*(1-float_srcY)+
rUpLeft=pImg->imageData[int_srcY*pImg->widthStep+int_srcX*3+2]; rUpRight=pImg->imageData[int_srcY*pImg->widthStep+int_srcX*3+2]; rDownLeft=pImg->imageData[int_srcY*pImg->widthStep+int_srcX*3+2]; rDownRight=pImg->imageData[int_srcY*pImg->widthStep+int_srcX*3+2];
unsigned char bUpLeft, bUpRight, bDownLeft, bDownRight; unsigned char gUpLeft, gUpRight, gDownLeft, gDownRight; unsigned char rUpLeft, rUpRight, rDownLeft, rDownRight; unsigned char b, g, r;
bUpLeft=pImg->imageData[int_srcY*pImg->widthStep+int_srcX*3+0]; bUpRight=pImg->imageData[int_srcY*pImg->widthStep+int_srcX*3+0]; bDownLeft=pImg->imageData[int_srcY*pImg->widthStep+int_srcX*3+0]; bDownRight=pImg->imageData[int_srcY*pImg->widthStep+int_srcX*3+0]; gUpLeft=pImg->imageData[int_srcY*pImg->widthStep+int_srcX*3+1]; gUpRight=pImg …… 此处隐藏:3684字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [资格考试]石油钻采专业设备项目可行性研究报告编
- [资格考试]2012-2013学年度第二学期麻风病防治知
- [资格考试]道路勘测设计 绪论
- [资格考试]控烟戒烟知识培训资料
- [资格考试]建设工程安全生产管理(三类人员安全员
- [资格考试]photoshop制作茶叶包装盒步骤平面效果
- [资格考试]授课进度计划表封面(09-10下施工)
- [资格考试]麦肯锡卓越工作方法读后感
- [资格考试]2007年广西区农村信用社招聘考试试题
- [资格考试]软件实施工程师笔试题
- [资格考试]2014年初三数学复习专练第一章 数与式(
- [资格考试]中国糯玉米汁饮料市场发展概况及投资战
- [资格考试]塑钢门窗安装((专项方案)15)
- [资格考试]初中数学答题卡模板2
- [资格考试]2015-2020年中国效率手册行业市场调查
- [资格考试]华北电力大学学习实践活动领导小组办公
- [资格考试]溃疡性结肠炎研究的新进展
- [资格考试]人教版高中语文1—5册(必修)背诵篇目名
- [资格考试]ISO9001-2018质量管理体系最新版标准
- [资格考试]论文之希尔顿酒店集团进入中国的战略研
- 全国中小学生转学申请表
- 《奇迹暖暖》17-支2文学少女小满(9)公
- 2019-2020学年八年级地理下册 第六章
- 2005年高考试题——英语(天津卷)
- 无纺布耐磨测试方法及标准
- 建筑工程施工劳动力安排计划
- (目录)中国中央空调行业市场深度调研分
- 中国期货价格期限结构模型实证分析
- AutoCAD 2016基础教程第2章 AutoCAD基
- 2014-2015学年西城初三期末数学试题及
- 机械加工工艺基础(完整版)
- 归因理论在管理中的应用[1]0
- 突破瓶颈 实现医院可持续发展
- 2014年南京师范大学商学院决策学招生目
- 现浇箱梁支架预压报告
- Excel_2010函数图表入门与实战
- 人教版新课标初中数学 13.1 轴对称 (
- Visual Basic 6.0程序设计教程电子教案
- 2010北京助理工程师考试复习《建筑施工
- 国外5大医疗互联网模式分析




