图像处理课程设计.doc
文本预览下载声明
《数字图像处理》课程设计报告
题 目 __________________________________
______________________________________
指导教师__________________________
学生姓名__________________________
学生学号__________________________
_______________________________院(部)_________专业_____________班
2014年7月1日
1.目的与要求
将实验1至实验8所设计的数字图像处理的算法和功能添加到同一个MFC程序中(可以是基于对话框的程序,或者基于单/多文档的程序),形成一个基于MFC的图像处理系统,可以增加一些课本上没有讲到的效果,如风格化等,开发的结果是类似PS的一款软件。
要求:用户可设置具体参数,可以通过该平台展现不同参数下的实验效果。
2.主要技术和原理
2.1彩色转换
彩色图像转换为8位灰度图像cvCreateImage创建图像函数
语法:IplImage *cvCreateImage(CvSize size, int depth, int channels)
参数:size:图像的宽、高。depth:图像图元深度。channels每个图元的颜色通道数。
返回值:IplImage结构体。
cvCvtColor色彩空间转换函数
语法:void cvCvtColor(const CvArr* src, CvArr* dst, int code)
参数:src为源图像的不定数组,CvArr*指针,一般情况为IplImage型指针。Dst:目的地址的CvArr指针,一般为IplImage型结构体。Code:色彩转换空间,
常数定义为CV_src_color_space2dst_color_space
2.2几何变换
1)翻转
翻转分为水平翻转和垂直翻转。
cvFlip垂直,水平或垂直又水平翻转二维数组
void cvFlip( const CvArr* src, CvArr* dst=NULL, int flip_mode=0)
参数:src 输入数组dst 输出数组,若dst = NULL,则翻转是在内部替换数组函数cvFlip以三种方式之一翻转数组行和列下标是以0为基点的
if flip_mode = 0,则dst(i,j)=src(rows(src)-i-1,j),绕x轴旋转
if flip_mode 0,则dst(i,j)=src(i,cols(src1)-j-1),绕y轴旋转
if flip_mode 0,则dst(i,j)=src(rows(src)-i-1,cols(src)-j-1),绕x轴和y轴旋转
2)旋转
在旋转函数Rotate中通过angle大小控制旋转角度。
cvMat初始化矩阵函数
语法:CvMat cvMat(int rows, int cols, int type, void *data=NULL)
参数:rows矩阵行数,cols矩阵列数,type元素类型,data可选项,指向分配给矩阵头的数据指针。
OpenCV中重要的矩阵变换函数,使用方法为cvMat* cvCreateMat ( int rows, int cols, int type ); 这里type可以是任何预定义类型,预定义类型的结构如下:CV_bit_depth (S|U|F)Cnumber_of_channels。于是,矩阵的元素可以是32位浮点型数据(CV_32FC1),或者是无符号的8位三元组的整型数据(CV_8UC3),或者是无数的其他类型的元素。,)
其中,A和b为几何形变参数,均来自映射矩阵map_matrix。映射矩阵为:
map_matrix=
此处,非整数坐标的像素点值通过双线性插值得到。多通道图像的每一个通道都单独计算。
这个函数旋转图像后,超出原图像部分,默认的是重复边界模式。
3)放大与缩小
首先定义一个缩放倍数,对图像尺寸变换后利用cvCreateImage创建目的图像,利用cvResize图像大小变换函数。
功能:函数 cvResize 将图像 src 改变尺寸得到与 dst 同样大小。若设定 ROI,函数将按常规支持 ROI.
语法:void cvResize( const CvArr* src, CvArr* dst, int interpolation= CV_INTER_LINEAR );
参数:src 输入图像
dst 输出图像
interpolation 插值方法,包括:
CV_INT
显示全部