

英语原文共 14 页,剩余内容已隐藏,支付完成后下载完整资料
使用Matlab和C语言的一个图像处理实验课
摘要:我们在伊利诺伊州大学的高级图像处理过程中提出新的图像处理方法Matlab和C语言混合编程。第一次正式的课程包括实验室组件,所以比以前有更多时间和精力致力于计算机算法实现。学生们将Matlab和C语言算法来完成对图像的处理和实现。我们通过学生们对实验的结果来评价Matlab和C语言对图像处理的好处。
1介绍
在过去的两年里,图像处理课程有了显著的变化。以前图像处理主要是研究生的研究课题,现在是许多本科层次的工程师的核心技能。例如,考虑到复杂的图像算法不能像JPEG和MPEG在廉价的硬件和大众消费者电子产品中应用。
以前,在本科图像处理课程中,他们所接触到的通常都是广泛而浅薄的技术层面,几乎没有概念或分析框架,并且对真实的图像处理算法经验有限。
例如,主题是关于文献变化的直方图均衡化,文献是充分设定的还是计算数据依赖灰度的一种特殊形式的转型。一种方法是将所有目录改变,这样学生就会知道这是关于直方图均衡化。这种方法被基本教科书所采用。不幸的是,这种方法的覆盖面太浅显以至于不能使用。相反,一个更有效方法是在课堂上讨论直方图均衡化的基本操作,然后将其放置在灰度级的情况下变换,,然后要求学生探索在实验室实施的细节。以这种方式,展现出从特殊情况转移到一般情况,是一个特别有效的方法。如果必要的话,学生通过获取的背景和框架能够分析和执行基本的变化。
在伊利诺伊大学图像处理课程趋向于MC这种新的图像处理方法。该课程是教老年人,为他们在工程中提供一个全面的分析框架和和所需的基本的计算机技能。该课程由讲座和实验两个部分组成,每周3小时。教科书讲解部分是由冈萨雷斯和伍兹[2]。对于实验室部分,学生使用MATLAB图像处理工具箱和C编程语言。1994年,该课程在春季学期第一次讲授。本文总结了实验室的组成部分并且评估其有效性。
2选择Matlab和C
Matlab在计算机工程课堂中使用频率一直处于领先的趋势:作为公司商业数学软件,使用范围很广泛。使用MATLAB让我们对学生的教育更加清晰,从利用Matlab的教学效果来看,我们决定依靠它来进行图像处理。我们也鼓励学生们自己用C语言进行一些图像处理的项目,因为我们预计在今后的一段时间C语言仍是在微处理器和DSP芯片中要用到的语言。
2.1教学软件的新趋势
直到最近,教授们似乎很不情愿使用商业软件。Trley是教科书电脑练习的作者,他几乎不依赖商业包装。相反,许多教科书的作者是通过定制软件来编写他们的书籍。在过去,我们相信,作者和推广者不愿限制其一个商业软件计划中的潜在市场用户。教授不愿要求学生购买商业软件,因为他们已经购买了昂贵的课本,他们也不愿将时间长期投资在没有明确指示的回报中来开发计算机练习和实验室。
最近的形势发生了巨大变化,广泛的教育市场接受电脑技术的商业软件环境。最受欢迎的软件产品是由Mathworks公司出品的MATLAB。几乎所有的美国大学都在使用Matlab并且它也取得了全球认可。越来越多的教师希望学生看到将MATLAB运用在他们的其他课程中,他们已经准备好了购买Matlab的经济计划。此外,教授知道学生投入时间学习MATLAB可能会在他们未来的教育和职业生涯中获得巨大的好处。
由于MATLAB的广泛流行,教科书作者现在可以编写包含Matlab电脑练习和项目的特定书籍,而不用担心他们的市场受到限制。事实上, Matlab应用在数学,科学,工程上的教科书已经超过60种。 “举一个例子,关于MATLAB在信号处理领域的影响,近期就已经有6名优秀的Matlab研究人员出版了相关的书籍 (3)。
2.2使用Matlab教学的好处
MATLAB是一种基于矩阵变量的交互式计算机语言。已经证明学生是很容易理解Matlab语言的;因此学生学习Matlab语言比学习其他语言更加高效。一旦他们学会了MATLAB基础,他们就可以在给定的时间内完成任务。
因为MATLAB是一个交互式的环境,学生可以体验内容的实时变化,可以强化课堂中的内容和概念。MATLAB的互动性质体现在通过发现、学习和强大的内置命令图形处理能力来帮助视觉学习,而不担心困难和繁琐的图形编程。在Matlab中学生们可以生成各种支持视觉学习样式的图形和图表。
使它适合图像处理,MATLAB语言是基于矩阵的数据结构。在C和Fortran语言中图像处理操作可能需要很多行代码来实现,而在Matlab中让人联想到地层的数学表达式就可以用一行代码来表示。(例如,看到了MATLAB3.1节中例子。)
因为Matlab的M-文件和ASCII文件包含了Matlab和图像处理工具箱中几乎所有的函数,这样使学生容易获得并实现复杂的图像处理的算法。
考虑一个典型的MATLAB执业工程师的工作寿。随着企业认识到迫切需要降低产品开发时间, 快速成型算法和开发工具已经得到了越来越多的应用,因为这是打开最佳市场窗口所必需的。工程师在设计时更频繁的采用成熟的计算机技术环境,而不是直接用C或Fortran语言编码。在学校接触MATLAB希望对学生的职业生涯起到帮助。
2.3 用C补充Matlab
在实验中选择用C语言来补充Matlab而不是与它竞争。在最近一段时间,C语言可能仍是微处理器和DSP芯片所选择的编程语言,所以我们认为C语言是Matlab中要求学生重新实现一个最初原型的算法。
此外,我们认为,在Matlab图像处理过程中某个项目使用C语言会使学生们熟悉图像处理的一些细节。
Matlab和C对于课堂中抽象的概念和完成基本的图像处理工作提供了至关重要的连接作用。
3实验
我们实验室课程由以下部分组成:
- 学生应该迅速获得图像处理的编程信心。(他们应该可以在实验室里,做一些事情,并且看到实验效果。)
- 学生应该能够完成简单的图像处理实验。
- 学生应该了解如何使用基础图像处理操作例如滤波和傅里叶变换。
- 学生应该掌握有关的人类直觉的感知。
- 学生应该对关于二维信号与系统的工作有所了解并适应。
- 学生应该开始考虑矩阵向量的计算及操作而不是元素B Y的操作。
- 学生们应该通过课堂上所接触的基础实验细节加深对抽象概念的理解。
实验任务包括以下几个主题:
- 学习系统简介
- 图像处理(C)中图像的读取,写入和查看。
- 同时对比:人类感知(C)调查韦伯效果,马赫带和人类调制传递函数(hlTF)。
- 二维傅立叶变换(C)并且实现从二维FFT中分离一维方程,使用IFFr核对结果;调查阶段的相对重要性大小。实现频率为n的doma滤波器。
- 插值(C)-实施和比较基于插值的双线性和FFT的零阶段保持。
- 成像几何(C)-使用透视投影,显示旋转对象表达几何图形。
- 半色调(Matlab和C)-使用抖动矩阵实现半色调和误差扩散。
- Runlength编码(Matlab)-实现Runlength编码的二进制图像并且改变最大最大行程比较在不同性能下的不同类型的图像。
- 预测压缩(Matlab)-比较1,4方差的还原性和7像素的推测;包括量化的预测循环。
- 变换压缩(Matlab)-重建DCT的回归系数并且比较DCT和DFT的压缩性能。
- 直方图修改(Matlab)-探索增强直方图均衡化的技术。
- 线性和中值滤波(MATLAB)-通过滤波器去除噪声比较和测量噪声的线性方差,中位数以及自适应维纳滤波;反复调查中值滤波器的应用。
- 边缘检测(Matlab)-梯度近似(罗伯茨,普鲁伊特,索贝尔)和马尔 - 希尔德雷思
对于使用C语言的实验作业,学生分别获得了典型的显示基本结构的C程序,普通的main()函数,以及包含开源的图像的函数库,读取图像,头文件,写入图像,makearray函数,滤波器,read滤波器,pseudo滤波器,高斯滤波器,常规,快速傅立叶变换和dct变换。在MATLAB的实验室,除了MATLAB广泛的功能,学生也可以使用MATLAB图像处理工具箱。工具箱包含函数文件格式I / O,颜色修改、图像功能增强,几何运算,形态学、二维滤波器设计与分析、线性和非线性过滤块处理、基于区域的处理、抖动和显示。
3.1例子
在线性和中值滤波的实验室中,学生被要求观查当一个图像反复进行中值滤波时发生了什么变化。以下几行MATLAB代码可以用来找到这样迭代的固定点(该变量I和Inew都初始化为原图片):
done = 0;
while (-done)
I = Inea;
Inew = medfilt2(I, E3 31);
done = all(all(1new == I ) ) ;
end
图1显示是一个经过固定点为3*3的中值滤波器处理后的小丑图像。
在变换压缩实验中,学生被要求执行DCT块,去掉一些系数后重新新建剩余图像的系数。下面的几行Matlab代码可以执行此操作。注意:T是8*8的DCT矩阵,I是原始图像,Iout是输出图像。
mask= [l 1 1 1 0 0 0 0
1 1 1 0 0 0 0 0
1 1 0 0 0 0 0 0
1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 01;
T = dctmtx2(8);
Idct = blkproc(1, C8 81, rsquo;P1 * x * P1” ) , 7rsquo;);
Idctc = blkproc(Idct, c8 81, rsquo;P1 .* x rsquo; , mask);
Iout = blkproc(Idctc, C8 81, rsquo;P1” * x * P1 , T);
图2是输入和输出图像的比较
3.2 经验和结论
实验室学生的实验记录和实验数据的反馈为我们提供了重要的依据。最有意义的是,当学生们认为他们完全理解一个概念的时候他们甚至可能在考试的时候可以说服教授。但是他们明白他们仍然面临着可以难倒他们的相关任务算法。强制履行所有的假设和明确的测试暴露了理解上的差距。
傅立叶变换实验室提供了一个特别好的视觉学习和洞察力的例子。这项任务的一部分是计算傅立叶变换的零初相位,计算傅立叶反变换体现的结果。对于一个学生来说查看结果的大部分能量来自于他想知道为什么结果是这样的。他的解释表明他对二维DFT的幅度和相位之间的关系获得了相当大的理解。这些关系仅仅通过课堂上的讨论是很难获得的。另一个直方图修改分配实验室,让学生利用Matlab图像处理工具箱的开放式体系结构分析和修改算法。该功能指伊马德执行对比度拉伸或结合萎缩伽玛校正。学生学习设计这个函数功能,然后扩展到彩色切分的能力。通过大量的以可读形式的专业算法给学生们创造提高自己编程能力的机会。在我们看来,实验室最具有意义的一个方面是学生们在实验中遇到了简单的在课堂上不能解决的问题和困难而通过实验室来解决他们,使他们对所学的内容有了更深层次的理解。这里有几个例子说明这个过程:
- 人类感知
一位学生指出,对于人体MTF测量,看书籍比看着屏幕更有效,并且可以从中尝试借鉴一些有用的结论。
- 人类感知
学生们在控制执行环境中遇到困难和解决困难的准确感知测量
- 插值,滤波
学生们研究图像处理时需要仔细考虑图像原来(强度)域与直接强度域间的不断转换。
- 二维傅立叶变换
学生被迫理解和学习DFT的起源和变化。
- 成像几何
在几个学生评价画好看的线条的难度时他们从计算机图形学的学科发现了一些知识的相关性。
F.Runlength编码
学生发现的测量性能的算法毫无意义,除非上下文包含重要的有关测试数据信息。
G.预测压缩
学生们必须决定用什么初始条件进行预测,以及如何传达此信息给解码器。
H.变换压缩
学生必须认识到在课堂上使用的程序没有使用相同的缩放因素,以此来弥补这些差异。(事实上,学生在离散余弦变换函数中使用帮助工具来了解不同的因素)学生们不得不去探究在DFT中输出的共轭对称复数中的64是代表实数还是虚数。这迫使他们不得不仔细考虑在DFT中那些值是真实的。
I.边缘检测
学生们必须找出如何设置在图像处理中经常出现的“神奇数字”(任意阈值)。
总体来说,在本科中使用基于Matlab和C语言编程的实验室是很有效的,应该奖励参与的学生和教授。学生们喜欢用Matlab完成工作。一些以前不熟悉C和MATLAB的学生也开始学习C语言,因为当他们到Matlab实验室的时候他们可以做更多的实验部分。通过检查实验室的实验记录,记录非常清楚的显示出学生们通过实验提
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[153066],资料为PDF文档或Word文档,PDF文档可免费转换为Word
您可能感兴趣的文章
- 饮用水微生物群:一个全面的时空研究,以监测巴黎供水系统的水质外文翻译资料
- 步进电机控制和摩擦模型对复杂机械系统精确定位的影响外文翻译资料
- 具有温湿度控制的开式阴极PEM燃料电池性能的提升外文翻译资料
- 警报定时系统对驾驶员行为的影响:调查驾驶员信任的差异以及根据警报定时对警报的响应外文翻译资料
- 门禁系统的零知识认证解决方案外文翻译资料
- 车辆废气及室外环境中悬浮微粒中有机磷的含量—-个案研究外文翻译资料
- ZigBee协议对城市风力涡轮机的无线监控: 支持应用软件和传感器模块外文翻译资料
- ZigBee系统在医疗保健中提供位置信息和传感器数据传输的方案外文翻译资料
- 基于PLC的模糊控制器在污水处理系统中的应用外文翻译资料
- 光伏并联最大功率点跟踪系统独立应用程序外文翻译资料
