文档详情

图像处理课程设计.doc

发布:2017-01-10约8.32千字共14页下载文档
文本预览下载声明
《数字图像处理》课程设计报告 题 目 __________________________________ ______________________________________ 指导教师__________________________ 学生姓名__________________________ 学生学号__________________________ _______________________________院(部)_________专业_____________班 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
显示全部
相似文档