欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    图像处理课程设计.docx

    • 资源ID:17999606       资源大小:378.88KB        全文页数:23页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    图像处理课程设计.docx

    1、图像处理课程设计数字图像处理课程设计报告基于MFC的数字图像处理系统设计指导教师 学生姓名 学生学号 (部) 专业 班2014年7月1日1.目的与要求将实验1至实验8所设计的数字图像处理的算法和功能添加到同一个 MFC程序中(可以是基于对话框的程序,或者基于单/多文档的程序),形成一个基于 MFC勺图像处理系统,可以增加一些课本上没有讲到 的效果,如风格化等,开发的结果是类似 PS的一款软件。要求:用户可设置具体参数,可以通过该平台展现不同参数下的实验效果。2.主要技术和原理2.1彩色转换彩色图像转换为8位灰度图像,利用 cvCreatelmage创建图像函数语法:Ipllmage *cvCr

    2、eatelmage(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_22.2几何变换1)翻转翻转分

    3、为水平翻转和垂直翻转。cvFlip垂直,水平或既垂直又水平地翻转二维数组语法:void cvFlip( const CvArr* src, CvArr* dst=NULL, int flip_mode=0)参数:src输入数组dst输出数组,若dst = NULL,则翻转是在内部替换。flip_mode指定怎样翻转数组。若=0,则绕x轴翻转;若0,则绕y轴翻转;若 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 )

    4、旋转在旋转函数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_ (S|U|F)C。于是,矩阵的元素可以是 32位浮点型数据(CV_32F

    5、C1), 或者是无符号的8位三元组的整型数据(CV_8UC3)或者是无数的其他类型的元素。 cvGetQuadrangleSubPix使用子像素精度提取像素四边形。该函数通过指定的变换矩阵 对原图像进行相应的变换。语法:void cvGetQuadra ngleSubPix( const CvArr *src, CvArr *dst, const CvMat*map_matrix)参数:src输入图像dst 提取的四边形map_matrix 为2*3的变换矩阵A | b说明:止此函数以子像素精度从图像 src中提取四边形,并将结果存储于 dst,计算公式如 下:dstx + width(dst

    6、)/2, y+height(dst)/2 = src( A11x A2y A21x A22y b2)其中,A和b为几何形变参数,均来自映射矩阵 map_matrix。映射矩阵为:此处,非整数坐标A(x,y)T b的像素点值通过双线性插值得到。多通道图像的每一个 通道都单独计算。这个函数旋转图像后,超出原图像部分,默认的是重复边界模式。3)放大与缩小首先定义一个缩放倍数,对图像尺寸变换后利用 cvCreatelmage创建目的图像,利用cvResize图像大小变换函数。功能:函数cvResize将图像src改变尺寸得到与dst同样大小。若设定 ROI,函数 将按常规支持ROI.语法:void c

    7、vResize( const CvArr* src, CvArr* dst, int interpolation=CV_INTER_LINEAR );参数:src输入图像dst输出图像in terpolati on 插值方法,包括:(1)CV_INTER_NN -最近邻插值(2)CV_INTER_LINEAR -双线性插值(3)CV_INTER_AREA使用像素关系重采样。当图像缩小时,该方法可以避免波纹 出现。当图像放大时,类似于 CV_INTER_NN方法。(4)CV_INTER_CUBIC -立方插值2.3图像增强1 )直方图均衡化cvEqualizeHist该函数为开放计算机视觉( O

    8、penCV )库,用来使灰度图象直方图均衡化。定义:void cvEqualizeHist( const CvArr* src, CvArr* dst );参数:src输入的8-比特 单信道图图像dst输出的图像与输入图像大小与数据类型相同函数cvEqualizeHist采用如下法则对输入图像进行直方图均衡化1:计算输入图像的直方图 H2:直方图归一化,因此直方块和为 2553:计算直方图积分4:采用H作为查询表:dst(x,y)=H(src(x,y)进行图像变换。该方法归一化图像亮度和增强对比度。在cvEqualizeHist中,原始图像及目标图像必须是单通道,大小相同的 8位图像,对于彩色

    9、图像,必须先将每个通道分开,再分别进行 直方图均衡化 处理,然后将通道合并形成新的图像。 、用到了两个重要函数 Spli分割多通道数组成几个单通道数组或者从数组中提取一个通道 t和Merge从几个单通道数组组合成多通道数组或插入一个单通道数组。2 )拉普拉斯锐化cvLaplace计算图像的 Laplacian变换(拉普拉斯锐化)语法: void cvLaplace( const CvArr* src, CvArr* dst, int aperture_size=3 );参数: src输入图像.dst输出图像. aperture_size 核大小(与cvSobel中定义一样).功能:函数cvLa

    10、place计算输入图像的 Laplacian变换,方法是先用sobel算子计算二阶 x-和y-差分,再求和:d2src d2src对aperture_size=1则给出最快计算结果,相当于对图像采用如下内核做卷积:0 1 o1 -4 1类似于cvSobel函数,该函数也不作图像的尺度变换,所支持的输入、输出图像类型的组合和 cvSobel致。3)高斯低通滤波cvSmooth低通滤波(去噪声)语法:CVAPI(void) cvSmooth( const CvArr* src, CvArr* dst,int smoothtype CV_DEFAULT(CV_GAUSSIAN),in t param

    11、1 CV_DEFAULT(3),in t param2 CV_DEFAULT(0), double param3 CV_DEFAULT(0), double param4 CV_DEFAULT(0);4 )阈值切分基本原理是:通过设定不同的特征阈值,把图像象素点分为若干类。基设原始图像为f(x,y),按照一定的准则 f(x,y)中找到特征值 T,将图像分割为两个部分,分割后的图像为:若取:b0=0(黑),b仁1(白),即为我们通常所说的图像二值化。函数cvThreshold 对单通道数组应用固定阈值操作。该函数的典型应用是对灰度图像进行阈值操作 得到二值图像。(cvCmpS也可以达到此目的)或

    12、者是去掉噪声,例如过滤很小或很大象素值的图像点。 本函数支持的对图像取阈值的方法由 threshold_type 确定。形式:void cvThreshold( const CvArr* src, CvArr* dst, double threshold, double max_value, intthreshold_type );src :原始数组(单通道,8-bit of 32-bit浮点数)dst :输出数组,必须与src的类型一致,或者为8-bit。 threshold :阈值max_value :使用 CV_THRESH_BINARY 和 CV_THRESH_BINARY_INV 的

    13、最大值。 threshold_type :阈值类型 threshold_type=CV_THRESH_BINARY:女口果 src(x,y)threshold ,dst(x,y) = max_value; 否贝U ,dst ( x,y)=0;threshold_type=CV_THRESH_BINARY_INV:女口果 src(x,y)threshold,dst(x,y) = 0; 否贝U ,dst(x,y) = max_value. threshold_type=CV_THRESH_TRUNC:女口果 src(x,y)threshold , dst(x,y) = threshold; 否贝U

    14、 dst(x,y) = src(x,y).threshold_type=CV_THRESH_TOZERO:如果 src(x,y)threshold , dst(x,y) = src(x,y); 否贝U dst(x,y) = 0。 threshold_type=CV_THRESH_TOZERO_INV:如果 src(x,y)threshold , dst(x,y) = 0 ; 否贝U dst(x,y) = src(x,y).2.4图像复原1) 噪声有椒盐噪声和高斯噪声,程序首先对原始图像加入椒盐噪声或者高斯噪声,然后用中值滤波去 除椒盐噪声,均值滤波去除高斯噪声实现图像复原。2) 中值滤波中值滤

    15、波是一种非线性数字滤波器技术,经常用于去除图像或者其它信号中的噪声。这个设计思想 就是检查输入信号中的采样并判断它是否代表了信号,使用奇数个采样组成的观察窗实现这项功能。观察 窗口中的数值进行排序,位于观察窗中间的中值作为输出。然后,丢弃最早的值,取得新的采样,重复上 面的计算过程。中值滤波要寻找原始图像中对应像素赋灰度值的中间值,这是可以利用冒泡排序法寻找, 找到后再赋给目标图像。2.4特征点检测1 )高斯算子cvLaplace 是计算图像的 Laplacian 变换,是Intel开源项目opencv中的函数,要使用它应该 版本中,由于文件结构有所改变,在连接库中应该添加 error LNK

    16、2019: 无法解析的外部符号 _cvLaplace 。在程序中包含 #include ,并且在 opencv2.2 ope ncv_imgproc220d.lib ,否则会出现连接错误:void cvLaplace( const CvArr* 像.aperture_size 核大小(与 cvSobel 法是先用sobel算子计算二阶 x-和src, CvArr*中定义一样 y-差分,再求和:f 、 d2src dst(ry)= - +dst, int aperture_size=3 );src 输入图像.dst 输出图 ).函数cvLaplace 计算输入图像的 Laplacian变换,方0

    17、1o1一10S!10表达式_|对aperture_size=1 则给出最快计算结果,相当于对图像采用如下内核做卷积:cvSobel 一致。类似于cvSobel函数,该函数也不作图像的尺度变换,所支持的输入、输出图像类型的组合和2)Sobel算子在技术上,它是一离散性差分算子,用来运算图像亮度函数的灰度之近似值。在图像 的任何一点使用此算子,将会产生对应的灰度矢量或是其法矢量。 Sobel算子根据像素点上下、左右邻点灰度加权差,在边缘处达到极值这一现象检测边缘。对噪声具有平滑作用,提供较为精确的边缘方向 信息,边缘定位精度不够高。当对精度要求不是很高时,是一种较为常用的边缘检测方法。该算子包含两

    18、组 3x3的矩阵,分别为横向及纵向,将之与图像作平面卷积,即可分别得出横向及纵向的亮度差分 近似值。如果以A代表原始图像,Gx及Gy分别代表经横向及纵向边缘检测的图像,其公式如下 : | 0 4,|11 2 1ifX &-2 0 +2 A (jV n0 0 0-1 0 斗1和 +2 *1L * J A图像的每一个像素的横向及纵向梯度近似值可用以下的公式结合,来计算梯度的大小。然后可用以下公式计算梯度方向。2加3)Canny 算子Ca nny边缘检测算法:stepl:用高斯滤波器平滑图象;step2:用一阶偏导的有限差分来计算梯度的幅值和方向;step3:对梯度幅值进行非极大值抑制;step4:

    19、用双阈值算法检测和连接边缘。2.5图像变换1)傅里叶变换cvDFT功能:对图像进行一维或二维的离散傅里叶正变换或反变换语法:void cvDFT( co nst CvArr* src, CvArr* dst, i nt flags);参数:src输入数组,实数或复数dst输出数组,与输入数组有相同的类型和大小flags 变换标志,为下面值的组合:CV_DXT_FORWARD向变换,结果不被缩放CV_DXT_INVERS逆向变换,结果不被缩放CV_DXT_SCALE寸结果进行缩放,即用数组元素除以它。通常, CV_DXT_SCAL和CV_DXT_INVERS可以组合在一起使用,缩写为 CV_DX

    20、T_INV_SCALECV_DXT_ROW寸输入矩阵中每个独立的行进行正向或逆向变换。此标志允许用户同时变换多个向量, 以减少开销。这些均为宏定义的常量:#define CV_DXT_FORWARD 0#defi ne CV_DXT_INVERSE 1#define CV_DXT_SCALE 2#define CV_DXT_ROWS 4#define CV_DXT_INV_SCALE (CV_DXT_SCALE|CV_DXT_INVERSE)2)颜色空间变换cvCvtColor 颜色空间转换函数语法:void cvCvtColor(co nst CvArr * src, CvArr *dst,

    21、 i nt mode)参数:src输入的8位整数图像dst 输出的8位整数图像mode 指定 的转换模式,包括:CV_BGR2HS,CV_BGR2HLS CV_BGR2YCrCb CV_YCrCb2BGR CV_RGB2YCrCb CV_YCrCb2RQB CV_BGR2La等。3.总体方案设计3.1图像文件读入与显示图像读入时是通过用户自己选择图像文件打开,利用 MFC的单文档结构自带的菜单即可实现。图像打开使之显示时要先初始化图像, 调用程序里的Initlmage(),接着调用lmageSizeToShow()和OnDraw(CDC*pDC)使之显示在窗口中间。3.2图像处理功能的实现实现

    22、图像处理可以借助 Menu的Comman(函数实现。1)打开 Resource 选项卡,利用 Menu下的 IDR_MAINFRAME2)编辑选项。把需要实现的图像处理功能加进去,并设置快捷键。3) 点击 ClassWizard 选项打开,在 Class name 下面找到 COpe nCVImageProView 为选项增加 Comma nd函数。4) 编辑代码。代码内容为调用 CopenhagenCVImageDoc里的具体实现函数。5)在CopenhagenCVImageDo(添加具体的实现函数。4.实验结果与分析4.1彩色转换原图 灰度图4.2几何变换1)翻转原图 水平翻转图垂直翻转2

    23、)旋转45度后的图像3)放大与缩小 处理效果此处就不附图了。4.3图像增强1)直方图均衡化原图 均衡化后的图直方图均衡化是一种点操作,它逐点改变输入图像的灰度值,尽量使各个灰度级别都具有相同的数 量的像素点(即输出的直方图是平的) ,使直方图趋于平衡,这对于图像比较或分割是十分有用的。由均衡化后的图像可以看出图像对比度增强。2 )拉普拉斯锐化原图 锐化图图像的能量主要集中在其低频部分,噪声所在的频段主要在高频段,同时图像边缘信息 也主要集中在其高频部分1。这将导致原始图像在平滑处理之后,图像边缘和图像轮廓模 糊的情况出现。为了减少这类不利效果的影响,就需要利用图像锐化技术,使图像的边缘变 得清

    24、晰。拉普拉斯锐化突出了图像的细节,增强了被模糊的细节。3)高斯低通滤波可以看到效果并不明星,但是比原图模糊一些低通滤波就是允许低频分量通过,去除高频分量,有模糊平滑的作用 4 )阈值切分原图 阈值切分图图像阈值分割是一种广泛应用的分割技术, 利用图像中要提取的目标区域与其背景在灰度特性上的差异,把图像看作具有不同灰度级的两类区域 (目标区域和背景区域)的组合,选取一个比较合理的阈值,以确定图像中每个像素点应该属于目标区域还是背景区域,从而产生相应的二值图像。 二阈值分割法的特点是:适用于目标与背景灰度有较强对比的情况, 重要的是背景或物体的灰度比较单一,而且总可以得到封闭且连通区域的边界。4.

    25、4图像复原加椒盐噪声后的图像 中值滤波后的图像由以上两幅图可以清楚地看到中值滤波的作用,对去除椒盐噪声效果很好。中值滤波的步骤为:1、 将滤波模板(含有若干个点的滑动窗口)在图像中漫游,并将模板中心与图中某个像素位置重合;2、 读取模板中各对应像素的灰度值;3、 将这些灰度值从小到大排列;4、 取这一列数据的中间数据,将其赋给对应模板中心位置的像素。如果窗口中有奇数个元素,中值 取元素按灰度值大小排序后的中间元素灰度值。如果窗口中有偶数个元素,中值取元素按灰度值大小排序 后,中间两个元素灰度的平均值。因为图像为二维信号,中值滤波的窗口形状和尺寸对滤波器效果影响很 大,不同图像内容和不同应用要求

    26、往往选用不同的窗口形状和尺寸。由以上步骤,可以看出,中值滤波对孤立的噪声像素即椒盐噪声、脉冲噪声具有良好的滤波效果。由 于其并不是简单的取均值,所以,它产生的模糊也就相对比较少。4.5边缘检测原图 Sobel算子Gaussia 算子Canny算子边缘检测是图像处理和计算机视觉中的基本问题,边缘检测的目的是标识数字图像中亮度变化明显的点。 的显著变化通常反映了属性的重要事件和变化。 这些包括(i)深度上的不连续、(ii)表面方向不连续、性变化和(iv)场景照明变化。图像属性中(iii)物质属4.6图像变换1)傅里叶变换原图傅里叶变换图图像经过傅立叶变换后,得到的是图像的频域。也就是频率成分。这个

    27、频率成分表示的意义就是相邻像数之间数值(颜色,亮度等等)的变化,也就是说图像在空间上变化 的越快,他对应在频域上的数值就越大。图像经过傅立叶变换后可以提取图像的轮廓或者边界。实现过程:1.首先获取源图像的像素矩阵,2.接着图像中提取出来一部分和像素矩阵进行傅里叶变换3.计算功率谱4.对上面得到的功率谱做对数变换,以压缩灰度范围5.重新安排四个象限,使原点在图像中心6.调整显示像素的区间,保证最大值为白色,最小值为黑色2)颜色空间变换原图hsvh sH参数表示色彩信息,即所处的光谱颜色的位置。该参数用一角度量来表示,红、绿、蓝分别相隔 120度。互补色分别相差 180度。纯度S为一比例值,范围从

    28、 0到1,它表示成所选颜色的纯度和该颜色最大的纯度之间的比率。 S=0时,只有灰度。V表示色彩的明亮程度,范围从 0到1。转换时直接调用 cvCvtColor( Image, hsv, CV_BGR2HSV); 即可将源图 BGR专化为HSV空间。5.总结与体会这次课程设计收获很多。之前学过一点 MFC但只是知道个大概,具体操作还不熟悉,而这次设计让我对C+ MFC有了一个更深的认识。课程设计的第一天我就开始想办法弄清楚整个程序的结构是怎么样的。 主要的类有CMainFrame,Cdoc,CView三个类,了解了这三个类的作用后对整个程序设计就有了思路。值得 一提的是调试程序的复杂,有的功能调了一天最后也没能实现, 因为自己对处理方法的原理掌握的不透彻,还有对程序已定义的变量的理解的偏差,再有就是一些函数的参数理解不透彻。当然,调试的过程也加深 了我对图像处理函数的认识,是我在编程中巩固所学知识,锻炼了自己动手开发能力 。参考文献(参考以下格式)1图像处理和分析教程 人民邮电出版社2XX百科


    注意事项

    本文(图像处理课程设计.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开