数字图像处理界面切换技术结课论文

时间:2019-05-12 07:54:52下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《数字图像处理界面切换技术结课论文》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《数字图像处理界面切换技术结课论文》。

第一篇:数字图像处理界面切换技术结课论文

彩色图像界面切换技术研究与设计

摘 要

数字图像处理(Digital Image Processing)是通过计算机对图像进行去除噪声、增强、复原、分割、提取特征等处理的方法和技术。在日常生活中,图像处理已经得到了广泛应用,例如:电脑人像艺术,电视中的特殊效果,自动售货机钞票的识别,邮政编码的自动识别和利用指纹、虹膜、面部等特征的身份识别等。图像的特技切换是计算机软件开发,尤其是多媒体软件设计中经常遇到的问题。

本文就所学到的微薄知识对利用VB程序设计实现彩色图像界面切换技术做以基本阐述。

关键字:数字图像处理 计算机软件开发 界面切换

一、数字图像处理概述: 数字图像处理是通过计算机对图像进行去除噪声、增强、复原、分割、提取特征等处理的方法和技术。数字图像处理的产生和迅速发展主要受三个因素的影响:一是计算机的发展;二是数学的发展(特别是离散数学理论的创立和完善);三是广泛的农牧业、林业、环境、军事、工业和医学等方面的应用需求的增长。图像处理中,输入的是质量低的图像,输出的是改善质量后的图像,常用的图像处理方法有图像增强、复原、编码、压缩等。图像处理技术在许多应用领域受到广泛重视并取得了重大的开拓性成就,属于这些领域的有航空航天、生物医学工程、工业检测、机器人视觉、公安司法、军事制导、文化艺术等,使图像处理成为一门引人注目、前景远大的新型学科。

数字图像处理的目的:一般来说,图像进行处理(或加工、分析)的主要目的有三个方面:

(1)提高图像的视感质量,如进行图像的亮度、彩色变换,增强、抑制某些分,对图像进行几何变换等,以改善图像的质量。

(2)提取图像中所包含的某些特征或特殊信息,这些被提取的特征或信息往往为计算机分析图像提供便利。提取特征或信息的过程是模式识别或计算机视觉的预处理。提取的特征可以包括很多方面,如频域特征、灰度或颜色特征、边界特征、区域特征、纹理特征、形状特征、拓扑特征和关系结构等。

(3)图像数据的变换、编码和压缩,以便于图像的存储和传输。

不管是何种目的的图像处理,都需要由计算机和图像专用设备组成的图像处理系统对图像数据进行输入、加工和输出。

在日常生活中,图像处理已经得到了广泛应用。例如:电脑人像艺术,电视中的特殊效果,自动售货机钞票的识别,邮政编码的自动识别和利用指纹、虹膜、面部等特征的身份识别等。

二、系统总体分析 2.1 窗口设计

图像的界面切换主要是指图像进入界面时的显示方式,也就是按不同的规律显示图像中的各个像素点。

根据需要在窗体上配置必要的控件,并修改相应的值,如图1所示,图片框用于显示图像,命令按钮“获取图像”用于选择指定图像文件,并且将图像显示在图片框内。命令按钮“退出”用于退出该窗口,其他命令的具体作用将在下文列举。

图1 添加控件及修改名称

以同样的方式添加其他控件按钮,如上下对接进入、从坐上到右下进入、从中央到四周扩散、以斜线方式进入、以渐显方式进入、利用Bitlit函数实现界面切换和以工字型进入等控件按钮。如图2所示:

图2 窗格及控件按钮

2.2 程序设计及实现过程

下面通过几个具有代表性的界面切换实现过程,对界面切换技术加以简单阐述。2.2.1 读图像数据

单击“读图像数据”命令按钮,相应的单击事件程序为: Private Sub Command1_Click()’以二进制的方式打开文件对话框中用户选择的图像文件 On Error GoTo Err CommonDialog1.Filter = “(*.*)|*.*|(*.gif)|*.gif|(*.bmp)|*.bmp|(*.jpg)|*.jpg” CommonDialog1.ShowOpen Picture1.Picture = LoadPicture(CommonDialog1.FileName)Err: Exit Sub End Sub Private Sub Command2_Click()End 通过该程序选择.jpg文件实现图像的读取,如图3所示。

图3 获取图像的实现

2.2.2 图像从上下对接进入界面

图像以上下对接方式进入界面时,首先显示图像的第一行和最后一行,然后显示图像的第二行和倒数第二行,以此类推,最后将图像中所有的像素显示出来。其实现过程如图4所示。

图4 图像以上下对接方式进入界面的过程图

对该控制命令进行VB编程如下: Private Sub Command3_Click()Picture2.Picture = Picture3.Picture width2 = Picture1.ScaleWidth height2 = Picture1.ScaleHeight

For j = 0 To height2 / 2

For i = 0 To width2jj1

For j = 0 To i

c1 = Picture1.Point(i, j)

rr1 = c1 Mod 256

gg1 = c1 / 256 Mod 256

bb1 = c1 / 65536 If j < height2 And i < width2 Then Picture2.PSet(i, j), RGB(rr1, gg1, bb1)

c2 = Picture1.Point(j, i)

rr2 = c2 Mod 256

gg2 = c2 / 256 Mod 256

bb2 = c2 / 65536 If j < width2 And i < height2 Then Picture2.PSet(j, i), RGB(rr2, gg2, bb2)

Next j Next i End Sub 2.2.4 图像从中央向四周扩散进入界面

图像从中央向四周扩散进入界面时,首先显示的是中心点像素,然后显示图像中心点周围的像素,依次类推,每次显示当前已显示像素的周围一圈像素,最后将图像中所有像素显示出来.如图6所示。

图6 图像从中央向四周扩散进入界面

图像从中央向四周扩散进入界面的程序代码如下: Picture2.Picture = Picture3.Picture w = Picture1.ScaleWidth h = Picture1.ScaleHeight x0 = w 2 y0 = h 2 rmax = Int(Sqr(x0 ^ 2 + y0 ^ 2))For r = 1 To rmax

dc = 1 /(6.28 * r)

For c = 0 To 6.28 Step dc

x = x0 + r * Cos(c)

y = y0 + r * Sin(c)

c1 = Picture1.Point(x, y)

If x >= 0 And x < w1 Then

rr1 = c1 Mod 256

gg1 = c1 / 256 Mod 256

bb1 = c1 / 65536

Picture2.PSet(x0, y0), RGB(rr1, gg1, bb1)

Picture2.PSet(x, y), RGB(rr1, gg1, bb1)

End If

Next c Next r End Sub 2.2.5 图像以斜线方式进入界面

图像以斜线方式进入界面时,首先显示图像的左上角像素,然后以斜线方式显示当前已显示像素的下一个斜线上的像素,最后将图像中所有像素都显示出来。显示过程如图7所示。

图7 图像以斜线方式进入界面的过程图

其对应的程序代码为: Picture2.Picture = Picture3.Picture w = Picture1.ScaleWidth

h = Picture1.ScaleHeight Max = If(h < w, w, h)For d = 0 To 2 * Max y = d For x = 0 To d

If x < w And y < h Then

c1 = Picture1.Point(x, y)

rr1 = c1 Mod 256

gg1 = c1 / 256 Mod 256

bb1 = c1 / 65536

Picture2.PSet(x, y), RGB(rr1, gg1, bb1)

End If

y = y1 Step 2

For i = 0 To w1 Step 2

For i = 1 To w1 Step 2

For i = 1 To w1 Step 2

For i = 0 To w-1 Step 2

c1 = Picture1.Point(i, j)

rr1 = c1 Mod 256

gg1 = c1 / 256 Mod 256

bb1 = c1 / 65536

Picture2.PSet(i, j), RGB(rr1, gg1, bb1)

Next i Next j End Sub 2.2.7利用Bitblt函数实现界面切换

Bitblt是Windows API函数,它用于从源对象向目标对象成块复制图形,该函数对指定的源设备环境区域中的像素进行位块(bit block)转换,以传送到目标设备环境。其实现过程如图9所示:

图9 Bitblt图像进入效果

其实现程序为:

Picture2.Picture = Picture3.Picture

w = Picture1.ScaleWidth

h = Picture1.ScaleHeight For i = 0 To w / 10 + 1

For j = 0 To 10

Bitblt Picture2.hDC, j * w / 10, 0, i, h, Picture1.hDC, j * w / 10, 0, &HCC0020

DoEvents

Delay 100000

Next j Next i End Sub

三、课程总结及心得体会

通过本学期对数字图像处理课程的学习,我掌握了基本的知识和操作技能,了解了数字图像处理作为一门理论性和实用性很强学科,在日常生活中有很多的用处,例如电脑人像艺术,电视中的特殊效果,自动售货机钞票的识别,邮政编码的自动识别和利用指纹、虹膜、面部等特征的身份识别等。本文仅就简单的界面切换技术以巩固所学的基本VB操作能力和图像处理知识,这是我大学学习中的又一项技能。

第二篇:《数字图像处理》结课小论文

2013-2014年第一学期《数字图像处理》科目考查卷

专业:通信工程 班 级: 任课教师:王新新 姓名: 学 号: 成 绩:

一 Deblurring Images Using the Wiener Filter ——使用维纳滤波器进行图像去模糊简介

在人们的日常生活中,常常会接触很多的图像画面,而在景物成像的过程中有可能出现模糊,失真,混入噪声等现象,最终导致图像的质量下降,我们现在把它还原成本来的面目,这就叫做图像还原。引起图像的模糊的原因有很多,举例来说有运动引起的,高斯噪声引起的,斑点噪声引起的,椒盐噪声引起的等等,而图像的复原也有很多,常见的例如逆滤波复原法,维纳滤波复原法,约束最小二乘滤波复原法等等。它们算法的基本原理是,在一定的准则下,采用数学最优化的方法从退化的图像去推测图像的估计问题。因此在不同的准则下及不同的数学最优方法下便形成了各种各样的算法。而我接下来要介绍的算法是一种很典型的算法,维纳滤波复原法。它假定输入信号为有用信号与噪声信号的合成,并且它们都是广义平稳过程和它们的二阶统计特性都已知。维纳根据最小均方准则,求得了最佳线性滤波器的的参数,这种滤波器被称为维纳滤波器。

维纳滤波器是最小均方差准则下的最佳线性滤波器,它在图像处理中有着重要的应用。本文主要通过介绍维纳滤波的结构原理,以及应用此方法通过MATLAB函数来完成图像的复原。关键词:维纳函数、图像复原。

二 维纳滤波器结构

维纳滤波自身为一个FIR或IIR滤波器,对于一个线性系统,如果其冲击响应为h(n),则当输入某个随机信号x(n)时,式(1)

这里的输入 

式(2)

式中s(n)代表信号,v(n)代表噪声。我们希望这种线性系统的输出是尽可能地逼近s(n)的某种估计,并用s^(n)表示,即

式(3)

因而该系统实际上也就是s(n)的一种估计器。这种估计器的主要功能是利用当前的观测值

x(n)以及一系列过去的观测值x(n-1),x(n-2),……来完成对当前信号值的某种估计。维纳滤波属于一种最佳线性滤波或线性最优估计,是一最小均方误差作为计算准则的一种滤波。设信号的真值与其估计值分别为s(n)和)s^(n),而它们之间的误差

式(4)

则称为估计误差。估计误差e(n)为可正可负的随机变量,用它的均方值描述误差的大小显然更为合理。而均方误差最小,也就是

式(5)

最小。利用最小均方误差作为最佳过滤准则比较方便,它不涉及概率的描述,而且以它导出的最佳线性系统对其它很广泛的一类准则而言是属最佳。

图1 维纳滤波器一般结构

三、维纳滤波器的局限

维纳滤波复原法存在着几个实质性的局限。第一,最有标准是基于最小均方误差的且对所有误差等权处理,这个标准在数学上可以接受,但却是个不适合人眼的方式,原因在于人类对复原错误的感知在具有一致灰度和亮度的区域中更为严重,而对于出现在暗的和高梯度区域的误差敏感性差得多。第二,空间可变的退化不能用维纳滤波复原法复原,而这样的退化是常见的。第三,维纳滤波不能处理非平稳信号和噪声。

四、模拟仿真

运行程序及结果

% 读入图像

The example reads in an RGB image and crops it to be 256-by-256-by-3.The deconvwnr function can handle arrays of any dimension.I = imread('peppers.png');I = I(10+[1:256],222+[1:256],:);figure;imshow(I);title('Original Image');

图2 原始图像

% 图像模拟模糊处理。模拟一个真实的图像,可以模糊。摄像机运动。示例创建一个point-spread函数PSF,对应直线运动在31个像素(LEN = 31),在11度角(θ= 11)。模拟模

糊,过滤器是使用imfilter convolved与形象。

Simulate a a real-life image that could be blurred e.g., by camera motion.The example creates a point-spread function, PSF, corresponding to the linear motion across 31 pixels(LEN=31), at an angle of 11 degrees(THETA=11).To simulate the blur, the filter is convolved with the image using imfilter.LEN = 31;THETA = 11;PSF = fspecial('motion',LEN,THETA);Blurred = imfilter(I,PSF,'circular','conv');figure;imshow(Blurred);title('Blurred');

图3图像模拟模糊处理

%恢复模糊图像。真正的PSF由模糊变清晰,这个例子执行三个修复

wnr1 = deconvwnr(Blurred,PSF);figure;imshow(wnr1);title('Restored, True PSF');

图4恢复模糊图像

% 第二个恢复使用估计PSF,模拟运动模糊长度的两倍长(LEN)。

wnr2=deconvwnr(Blurred,fspecial('motion',2*LEN,THETA));figure;imshow(wnr2);title('Restored, “Long” PSF');

图5两倍长模糊处理

%第三恢复使用估计PSF,模拟运动两倍陡峭的角度模糊角度(θ)。

wnr3=deconvwnr(Blurred,fspecial('motion',LEN,2*THETA));figure;

imshow(wnr3);title('Restored, Steep');

图6两倍陡峭的角度处理

% 模拟加性噪声。模拟使用态分布随机数相加噪声,并将它添加到模糊图像,模糊。

noise = 0.1*randn(size(I));BlurredNoisy = imadd(Blurred,im2uint8(noise));figure;imshow(BlurredNoisy);title('Blurred & Noisy');

图7模拟加性噪声处理

%恢复图像模糊处理。

恢复模糊和噪声图像使用一个逆滤波器,假设zero-noise,并比较这第一个结果实现了在步骤3中,wnr1。噪声呈现在原始的数据显著放大。

wnr4 = deconvwnr(BlurredNoisy,PSF);figure;imshow(wnr4);title('Inverse Filtering of Noisy Data');

图8恢复噪声图像

%控制噪声放大,NSR功能提供了信噪比。

NSR = sum(noise(:).^2)/sum(im2double(I(:)).^2);wnr5 = deconvwnr(BlurredNoisy,PSF,NSR);figure;imshow(wnr5);title('Restored with NSR');

图9 NSR功能恢复噪声图像

%不同NSR值影响恢复的结果。小NSR值放大噪声

wnr6 = deconvwnr(BlurredNoisy,PSF,NSR/2);figure;imshow(wnr6);title('Restored with NSR/2');

图10 小NSR功能恢复噪声图像

%使用自相关来提高图像恢复

改进模糊的恢复和嘈杂的图像,提供完整的自相关函数(ACF)噪音,NCORR,和信号,ICORR NP = abs(fftn(noise)).^2;NPOW = sum(NP(:))/prod(size(noise));% noise power NCORR = fftshift(real(ifftn(NP)));% noise ACF, centered IP = abs(fftn(im2double(I))).^2;IPOW = sum(IP(:))/prod(size(I));% original image power ICORR = fftshift(real(ifftn(IP)));% image ACF, centered

wnr7 = deconvwnr(BlurredNoisy,PSF,NCORR,ICORR);figure;imshow(wnr7);title('Restored with ACF');

图11 自相关来提高图像恢复

%探索修复提供了有限的统计信息:权力的噪音,NPOW,和一个单维的自相关函数的真实形象,ICORR1 ICORR1 = ICORR(:,ceil(size(I,1)/2));wnr8 = deconvwnr(BlurredNoisy,PSF,NPOW,ICORR1);figure;imshow(wnr8);title('Restored with NP & 1D-ACF');

图12 单维自相关来提高图像恢复

五、结论与心得体会

通过这个实验,使我们更加深刻和具体的了解到了维纳滤波的原理,功能以及在图像处理方面的应用。维纳滤波器是对噪声背景下的信号进行估计,它是最小均方误差准则下的最佳线性滤波器。在实验的过程中,我发现采用维纳滤波复原可以得到比较好的效果,这个算法可以使估计的点扩散函数值更加接近它的真实值。但实现维纳滤波的要求是输入过程是广义平稳的;输入过程的统计特性是已知的。根据其他最佳准则的滤波器也有同样的要求。然而,由于输入过程取决与外界信号,干扰环境,这种环境的统计特性常常是未知的,变化的,因而这两个要求很难满足,这就促使人们研究自适应滤波器。

通过本次实验,深深地了解了图像处理是一门既有用又有难度的一门学科,需要我们认真的学习,自己在学习上还有很多的漏洞,在以后的学习中会更加的努力上进,做一个引以为自豪的人。

参考文献

《数字图像处理》,2007年,清华大学出版社。

《数字图像处理(第3版)》,2010年,科教出版社。

《基于0penCV的计算机视觉技术实现》,2001,科学出版社。《计算机图像处理》,2005,武汉大学出版社。

第三篇:数字图像matlab结课作业[模版]

clear all;close all;I=imread('e:5.tif');imshow(I);I_gray=rgb2gray(I);figure,imshow(I_gray);I_gray_hist=imhist(I_gray);figure,imshow(I_gray_hist);Ibw=im2bw(I_gray,0.7);figure,imshow(Ibw);

第四篇:多媒体技术结课论文

多媒体技术结课论文

————多媒体技术在虚拟现实领域的应用

姓名张宏亮

班级10信科1班

学号10780107

系部电子与信息工程系

摘要:本文全面回顾了虚拟现实技术的发展历史和研究背景,介绍了虚拟现实技术的构成和技术特点,分析了虚拟现实系统在遥现技术、仿真技术、对象可视化技术等方面的应用现状,并论述了虚拟现实系统的发展。

关键词:虚拟现实 虚拟环境 虚拟现实系统

首先,我们来说一下什么是虚拟现实技术,虚拟现实技术(Virtual Reality),又称灵境技术,是90年代为科学界和工程界所关注的技术。它的兴起,为人机交互界面的发展开创了新的研究领域;为智能工程的应用提供了新的界面工具;为各类工程的大规模的数据可视化提供了新的描述方法。这种技术的特点在于,计算机产生一种人为虚拟的环境,这种虚拟的环境是通过计算机图形构成的三度空间,或是把其它现实环境编制到计算机中去产生逼真的“虚拟环境”,从而使得用户在视觉上产生一种沉浸于虚拟环境的感觉。这种技术的应用,改进了人们利用计算机进行多工程数据处理的方式,尤其在需要对大量抽象数据进行处理时;同时,它在许多不同领域的应用,可以带来巨大的经济效益。

1965年,Sutherland在篇名为<<终极的显示>>的论文中首次提出了包括具有交互图形显示、力反馈设备以及声音提示的虚拟现实系统的基本思想,从此,人们正式开始了对虚拟现实系统的研究探索历程。随后的1966年,美国MIT的林肯实验室正式开始了头盔式显示器的研制工作。在这第一个HMD的样机完成不久,研制者又把能模拟力量和触觉的力反馈装置加入到这个系统中。1970年,出现了第一个功能较齐全的HMD系统。基于从60年代以来所取得的一系列成就,美国的Jaron Lanier 在80年代初正式提出了“Virtual Reality”一词。

80年代,美国宇航局(NASA)及美国国防部组织了一系列有关虚拟现实技术的研究,并取得了令人瞩目的研究成果,从而引起了人们对虚拟现实技术的广泛关注。1984年,NASA Ames研究中心虚拟行星探测实验室的M.McGreevy 和J.Humphries博士组织开发了用于火星探测的虚拟环境视觉显示器,将火星探测器发回的数据输入计算机,为地面研究人员构造了火星表面的三维虚拟环境。在随后的虚拟交互环境工作站(VIEW)项目中,他们又开发了通用多传感个人仿真器和遥现设备。

进入90年代,迅速发展的计算机硬件技术与不断改进的计算机软件系统相匹配,使得基于大型数据集合的声音和图象的实时动画制作成为可能;人机交互系统的设计不断创新,新颖、实用的输入输出设备不断地进入市场。而这些都为虚拟现实系统的发展打下了良好的基础。[1]

其次,纵观虚拟现实的研究现状,VR 技术最早在20 世纪中期由美国VPL探索公司和它的创始人JaronLanier 提出这一概念, 后来美国宇航局(NASA)的艾姆斯空间中心利用流行的液晶显示电视和其它设备,开始研制低成本的虚拟现实系统,推动了该技术硬件的进步。目前,虚拟现实技术已获得了长足的发展。在国内,20 世纪80 年代末开始进行研究,目前还处于初级阶段。

美国作为VR 技术的发源地,其研究水平基本上就代表国际VR 发展的水平。目前美国在该领域的基础研究主要集中在感知、用户界面、后台软件和硬件四个方面。[2]

美国宇航局(NASA)的Ames实验室研究主要集中在以下方面:将数据手套工程化,使其成为可用性较高的产品;在约翰逊空间中心完成空间站操纵的实时仿真;大量运用了面向座舱的飞行模拟技术;对哈勃太空望远镜的仿真。现在正致力于一个叫“虚拟行星探索”(VPE)的试验计划。[3] 现在NASA己经建立了航空、卫星维护VR 训练系统,空间站VR训练系统,并且已经建立了可供全国使用的VR 教育系统。北卡罗来纳大学(UNC)的计算机系是进行VR 研究最早的大学,他们主要研究分子建模、航空驾驶、外科手术仿真、建筑仿真等。

LomaLinda 大学医学中心的DavidWarner 博士和他的研究小组成功地将计算机图形及VR 的设备用于探讨与神经疾病相关的问题,首创了VR 儿科治疗法。

麻省理工学院(MIT)是研究人工智能、机器人和计算机图形学及动画的先锋,这些技术都是VR 技术的基础,1985年MIT成立了媒体实验室,进行虚拟环境的正规研究。

华盛顿大学华盛顿技术中心的人机界面技术实验室(HITLab),将VR 研究引入了教育、设计、娱乐和制造领域。从90 年代初起,美国率先将虚拟现实技术用于军事领域,主要用于以下四个方面:虚拟战场环境;进行单兵模拟训练;实施诸军兵种联合演习;进行指挥员训练。

在VR 开发的某些方面,特别是在分布并行处理、辅助设备(包括触觉反馈)设计和应用研究方面,英国是领先的,尤其是在欧洲。英国主要有四个从事VR 技术研究的中心:[4]

Windustries(工业集团公司),是国际VR 界的著名开发机构,在工业设计和可视化等重要领域占有一席之地;BritishAerospace(英国航空公司BAe)的Brough分部,正在利用VR技术设计高级战斗机座舱;DimensionInternational, 是桌面VR的先驱。该公司生产了一系列的商业VR 软件包,都命名为Superscape;DivisonLTD公司在开发VISION、ProVision 和Su2pervision系统P模块化高速图形引擎中,率先使用了Transputer和i860 技术。

日本主要致力于建立大规模VR 知识库的研究,在虚拟现实的游戏方面的研究也处于领先地位。

京都的先进电子通信研究所(ATR)正在开发一套系统,它能用图像处理来识别手势和面部表情,并把它们作为系统输入;富士通实验室有限公司正在研究虚拟生物与VR 环境的相互作用,他们还在研究虚拟现实中的手势识别,已经开发了一套神经网络姿势识别系统,该系统可以识别姿势,也可以识别表示词的信号语言。[2] 日本奈良尖端技术研究生院大学教授千原国宏领导的研究小组于2004 年开发出一种嗅觉模拟器,只要把虚拟空间里的水果拉到鼻尖上一闻,装置就会在鼻尖处放出水果的香味,这是虚拟现实技术在嗅觉研究领域的一项突破。

我国VR 技术研究起步较晚,与国外发达国家还有一定的差距,但现在已引起国家有关部门和科学家们的高度重视,并根据我国的国情,制定了开展VR 技术的研究计划。九五规划、国家自然科学基金委、国家高技术研究发展计划等都把VR 列入了研究项目。国内一些重点院校,已积极投入到了这一领域的研究工作。

北京航空航天大学计算机系是国内最早进行VR 研究、最有权威的单位之一,并在以下方面取得进展:着重研究了虚拟环境中物体物理特性的表示与处理;在虚拟现实中的视觉接口方面开发出部分硬件,并提出有关算法及实现方法;实现了分布式虚拟环境网络设计,可以提供实时三维动态数据库、虚拟现实演示环境、用于飞行员训练的虚拟现实系统、虚拟现实应用系统的开发平台等。

浙江大学CAD&CG国家重点实验室开发出了一套桌面型虚拟建筑环境实时漫游系统,还研制出了在虚拟

环境中一种新的快速漫游算法和一种递进网格的快速生成算法;哈尔滨工业大学已经成功地虚拟出了人的高级行为中特定人脸图像的合成、表情的合成和唇动的合成等技术问题;清华大学计算机科学和技术系对虚拟现实和临场感的方面进行了研究;西安交通大学信息工程研究所对虚拟现实中的关键技术——立体显示技术进行了研究,提出了一种基于JPEG 标准压缩编码新方案,获得了较高的压缩比、信噪比以及解压速度;北方工业大学CAD研究中心是我国最早开展计算机动画研究的单位之一,中国第一部完全用计算机动画技术制作的科教片《相似》就出自该中心。

再次,虚拟现实技术的构成,从本质上说,虚拟现实就是一种先进的计算机用户接口,它通过给用户同时提供诸如视、听、触等各种直观而又自然的实时感知交互手段、最大限度地方便用户的操作,从而减轻用户的负担、提高整个系统的工作效率。

虚拟现实的定义可以归纳如下:虚拟现实是利用计算机生成一种模拟环境(如飞机驾驶舱、操作现场等),通过多种传感设备使用户“投入”到该环境中,实现用户与该环境直接进行自然交互的技术。虚拟现实技术因此具有以下四个重要特征:[5]

所谓多感知性就是说除了一般计算机所具有的视觉感知外,还有听觉感知、力觉感知、触觉感知、运动感知、甚至包括味觉感知、嗅觉感知等。理想的虚拟现实就是应该具有人所具有的感知功能。

又称临场感,它是指用户感到作为主角存在于模拟环境中的真实程度。理想的模拟环境应该达到使用户难以分辨真假的程度。

交互性是指用户对模拟环境内物体的可操作程度和从环境得到反馈的自然程度(包括实时性)。例如,用户可以用手去直接抓取环境中的物体,这时手有握着东西的感觉,并可以感觉物体的重量,视场中的物体也随着手的移动而移动。

是指虚拟环境中物体依据物理定律动作的程度。例如,当受到力的推动时,物体会向力的方向移动、或翻倒、或从桌面落到地面等。

虚拟现实系统的模型表示如图1。用户通过传感装置直接对虚拟环境进行操作,并得到实时三维显示和其它 反馈信息(如触觉、力觉反馈等)。当系统与外部世界通过传感装置构成反馈闭环时,在用户的控制下,用户与虚拟环境间的交互可以对外部世界产生作用(如遥操作等)。

虚拟现实系统主要由以下六个模块构成检测模块:检测用户的操作命令,并通过传感器模块作用于虚拟环境。

反馈模块:接受来自传感器模块信息,为用户提供实时反馈。

传感器模块:一方面接受来自用户的操作命令,并将其作用于虚拟环境;另一方面 将操作后产生的结果以各种反馈的形式提供给用户。

控制模块:对传感器进行控制,使其对用户、虚拟环境和现实世界产生作用。

建模模块:获取现实世界组成部分的三维表示,并由此构成对应的虚拟环境。

最后,来说一下虚拟现实技术的实际应用,虚拟现实技术的应用前景是很广阔的。它可应用于建模与仿真、科学计算可视化、设计与规划、教育与训练、遥作与遥现、医学、艺术与娱乐等多个方面,遥现技术[6]是指当实际上在某一个地方时,可以产生在另一个地方的感觉。虚拟现实涉及到体验由计算机产生的三维虚拟环境,而遥现则涉及到体验一个遥远的真实环境。遥现技术在实际应用中需要虚拟环境的指导。例如,在遥控宇宙空军站的开发计划中,从安全性以及费用的角度考虑,我们有必要使用空间机器人。这种空间机器人的特点是由地面上的操作员进行遥操作,或进行部分自主操作。对于像零件更换的固定操作可以完全自主进行,而对于故障检修等难以预测的操作则有必要依赖于遥操作。这时,虚拟现实技术和遥现技术将发挥重要的作用。为研究新一代空间机器人的遥操作技术,日本开发了宇宙开发地面实验平台。该实验平台有人-机交互、计算机系统以及机器人系统所构成。现在,在该实验平台上进行了零件更换等空间机器人的典型操作实验,实现了实验平台的基本功能。

虚拟环境是计算机生成的具有沉浸感的环境,它对参与者生成诸如视觉、听觉、触觉、味觉等各种感官信息,给参与者一种身临其境的感觉。因此,虚拟环境是一种新发展的、具有新含义的一种人机交互系统。

飞行仿真系统由四部分组成,即飞行员的操纵舱系统显示外部图象的视觉系统产生运动感的运动系统计

算和控制飞行运动的计算机系统。

计算机系统是飞行仿真系统的中枢,用它来计算飞行的运动、控制仪表及指示灯、驾驶杆等信号。视觉系统和运动系统与虚拟现实密切相关,其中,视觉系统向飞行员提供外界的视觉信息。该系统由产生视觉图象的“图象产生部”和将产生的信号提供给飞行员的“视觉显示部”组成。在图象产生部,随着计算机图形学的发展,现在使用称为CGI(Computer Generated Imagery)的视觉产生装置。在CGI中利用纹理图形驾驶可以产生云彩、海面的波浪等效果。另外,利用图象映射驾驶可以从航空照片上将农田以及城市分离出来,并作为图象数据加以利用。视觉显示部向飞行员提供具有真实感的图象,图象的显示有无限远显示方式、广角方式、半球方式以及立体眼镜和头盔式显示器等四种方式。

作为飞行仿真系统的构成部分,运动系统向飞行员提供一种身体感觉,它使得驾驶舱整体产生运动,根据自由度以及驱动方式的不同,可以分为万向方式、共动型吊挂方式、共动型支撑方式以及共动型六自由度方式等。利用该运动系统,飞行员可以感觉到实际飞机一样的运动感觉。

研究人员设计了一种与虚拟生物对话的仿真系统。在该系统中,虚拟世界中的虚拟生物和现实世界中的生物一样,可以决定自己的行动,并且能够动态地应付周围的情况。对于人的挑逗也能够根据情况的不同作出各种复杂的反应,甚至能够进行对话。通过引进虚拟生物,可以实现系统的自主性、交互性及其自然的魅力。

各个国家在传统上习惯于通过举行实战演习来训练军事人员和士兵,但是这种实战演练,特别是大规模的军事演习,将耗费大量资金和军用物资,安全性差,而且还很难在实战演习条件下改变状态,来反复进行各种战场态势下的战术和决策研究。近年来,虚拟现实技术的应用,使得军事演习在概念上和方法上有了一个新的飞跃,即通过建立虚拟战场来检验和评估武器系统的性能。例如一种虚拟战场环境,它能够包括在地面行进的坦克和装甲车,在空中飞行的直升机、歼击机、导弹等多种武器平台,并分别属于红、兰交战双方。

在科学研究中,人们总会面对大量的随机数据,为了从中得到有价值的规律和结论,需要对这些数据进行认真分析。例如,为了设计出阻力小的机翼,人们必须详细分析机翼的空气动力学特性。因此人们发明了风洞实验方法,通过使用烟雾气体使得人们可以用肉眼直接观察到气体与机翼的作用情况,因而大大提高了人们对机翼的动力学特性的了解。虚拟风洞的目的是让工程师分析多旋涡的复杂三维性质和效果、空气循环区域、旋涡被破坏时的乱流等,而这些分析利用通常的数据仿真是很难可视化的。[7] 在学习过程中,学生总有许许多多的疑问有待解答。虚拟物理实验室[8]的设计使得学生可以通过亲身实践―做、看、听来学习的方式成为可能。使用该系统,学生们可以很容易的演示和控制力的大小、物体的形变与非形变碰撞、摩擦系数等物理现象。为了显示物体的运动轨迹,可以对不同大小和质量的运动物体进行轨迹追踪。还可以停止时间的推移,以便仔细观察随时间变化的现象。学生可以通过使用数据手套与系统进行各种交互。

在现行的电力控制室的设计中,控制台以及显示器的设计一般是用和实物同等大小的模型。研究人员使用虚拟现实技术研制了一个辅助设计控制室的系统。使用该系统可以自由地改变控制室内的配色、照明、报警、显示器的画面构成,以及各种仪表的配置等室内环境。另外,用户还可以在室内移动,以便从不同方向观察室内情况。

现在人们正在研究将图形与实际图象进行融合的系统。使用该系统可以用虚拟空间监视远方的现场,也可以给用户一种自由往返于虚拟空间和远方现场的感觉。但是,目前还没有合适的输出装置。相信这种需要必将会促进虚拟现实技术中硬件装置的研制。

正如其它新兴科学技术一样,虚拟现实技术也是许多相关学科领域交叉、集成的产物。

它的研究内容涉及到人工智能、计算机科学、电子学、传感器、计算机图形学、智能控制、心理学等[9]。我们必须清醒地认识到,虽然这个领域的技术潜力是巨大的,应用前景也是很广阔的,但仍存在着许多尚未解决的理论问题和尚未克服的技术障碍。客观而论,目前虚拟现实技术所取得的成就,绝大部分还仅仅限于扩展了计算机的接口能力,仅仅是刚刚开始涉及到人的感知系统和肌肉系统与计算机的结合作用问题,还根本未涉及“人在实践中得到的感觉信息是怎样在人的大脑中存储和加工处理成为人对客观世界的认识”这一重要过程[10]。只有当真正开始涉及并找到对这些问题的技术实现途径时,人和信息

处理系统间的隔阂才有可能被彻底的克服了。我们期待这有朝一日,虚拟现实系统成为一种对多维信息处理的强大系统,成为人进行思维和创造的助手和对人们已有的概念进行深化和获取新概念的有力工具。

参考文献

[1] 汪成为,高文,王行仁.灵境(虚拟现实)技术的理论、实现及应用 清华大学出版社 1996.[2] 姜学智,李忠华.国内外虚拟现实技术的研究现状[J].辽宁工程技术大学学报,2004,23(2):2382240

[3] 蒋庆全.国外VR 技术发展综述[J].飞航导弹,2002,(1):27234

[4] 吴迪,黄文骞.虚拟现实技术的发展过程及研究现状[J].海洋测绘,2002,22(6):15217

第五篇:数字图像处理课设报告

数字图像处理课程设计报告

细胞识别

目录

第一部分

1、实验课题名称--------------------3

2、实验目的--------------------------3

第 1 页

3、实验内容概要--------------------3 第二部分

1、建立工程文件--------------------3

2、图像信息获取--------------------4

3、如何建立下拉菜单--------------6

4、标记Mark点----------------------6

5、二值化9

6、填洞---9

7、收缩---10

8、获取中心点------------------------11

9、细胞计数---------------------------13

10、All-steps---------------------------13

11、扩展功能-------------------------14 第三部分

12、各步骤结果和错误举例------16 第四部分

13、心得体会--------------------------22

第一部分

1、实验课题:细胞识别

2、实验目的:对血液细胞切片图片进行各种处理,最终得出细胞的数目、面积等信息。

3、实验内容概要:基于VC++6.0软件下的细胞识别,通过细胞的标记、二

第 2 页 值化、填洞、收缩、获取中心点、计数等过程完成实验目的。

第二部分——实验具体步骤

1、建立工程文件

① 新建MFC工程项目:--MFC AppWizard、工程名

② 拷贝cdib.h,cdib.cpp到工程文件夹,再向工程里添加

③ doc.h添加变量:m_lpDib 和头文件#include”cdib.h”

④ doc.cpp:变量(m_lpDib)的new、delete

第 3 页

⑤ doc.cpp: Serialize()

2、图像信息获取

① 读取图像参数View.cpp: OnDraw()m_pDib->Draw()如果图像不为空的话,那么就执行如下主要代码:

② 点击键,建立类向导,在messages中添加OnInitialUpdate()函数,添加代码实现对自动打开固定图片。

③ 通过鼠标右击,点击建立类向导,在messages中添加OnMouseMove()函数,添加代码实现获取所要信息,即实现鼠标在图像任一位置移动时可以直观的读取相对应位置的信息。可以在屏幕上显示鼠标所指点的坐标以及RGB、HSI和灰度值,通过HSI的可以选取合适的阈值来找到细胞以及边界。

第 4 页 ④ 为了RGB图像转化为人眼更容易识别的HSI模型,我们可以通过添加成员函数RgbtoHsi来实现这一功能。

HSI模型与RGB模型的转化关系

(添加函数时,可以右击类窗口中的view.h,选中add member function,之后选择函数的返回值类型和函数描述,其它默认不变)

确定后在里面添加实现函数功能的代码。

3、添加下拉菜单

在resourceview那栏的找到菜单按键设置

第 5 页 双击,后在里面添加所需按键

每个按键的ID号为注意在填写为IDR_加菜单大写。

之后右击按键,建立类向导添加按键所需函数

4、标记mark 分为四步

1.找出mark(red)点和maybemark(blue)点

2.将maybemark(blue)点变成mark(black red)点

3.将mark(black red)点变成edge(yellow(fullred&&fullgreen))点 4.edge点滤波

基本思想:Mark点指的是我们要寻找的细胞内的点。我们先获取每一个像素点的RGB分量,然后我们将其转化成HSI分量,将H分量进行归一化,因为S的范围是0到1,所以我们要进行尺度的一致,这样才具有可计算性。然后我们通过每个像素点的H分量和S分量的值与细胞内部的H分量和S分量计算欧几里得距离,设定一个Mark门限值(我们这里将MarkDoor设置为0.09,大家可以行设置合适的参数),小于这个门限值我们就当做是细胞的内部,然后对细胞进行标记(Red)。还需要设定一个Maybe Mark门限值(我们这里将Maybe MarkDoor设置为0.15,大家可以行设置合适的参数),我们大于Mark门限值小于Maybe Mark门限值时,我们暂时看成是细胞,我们进行Maybe Mark的标记(Blue)。否则的话,我们需要考虑,一些不是Mark和Maybe Mark点的*lpSrc==0我们区别一下赋值为1,*lpSrc==255

第 6 页 我们区别一下赋值为254,*(lpSrc+1)==255我们区别一下赋值为254.这样的话,我们在后面判断是否为Mark点的时候,我们只需要判断*lpSrc是否为0就可以了,判断Maybe Mark点时只需要判断*(lpSrc)是否为255就可以了。对于边缘的判断只需要判断*(lpSrc+1)是否为255就可以了。

将细胞标记为Mark用红色(255,0,0)标记出来,将可能是的细胞标记为MayBe Mark用蓝色(0,0,255)标记出来。将MayBeMark To Mark的区域用亮红(128,0,0)表示,将不可能是细胞的区域、细胞边界分别用绿色标记出来。操作过程:(1)根据H、S的欧几里得距离sqrt(s2+h2)来大致的确定哪些是细胞(Mark)和可能是细胞(Maybe Mark)的点。

(2)根据Maybe Mark点周围的情况,如果它的上下左右四个方向有Mark点,则将Maybe Mark点变成Mark点。

(3)用Sobel算子来做边缘的提取边界(0,255,255)(255,255,0),使用3*3的模板,使用欧几里得距离来判断是否为边缘。

两种Sobel算子如下:

第 7 页

主要代码如下:

doubletmp1=pixel[0]+2*pixel[1]+pixel[2]-pixel[6]-2*pixel[7]-pixel[8];doubletmp2=pixel[0]+2*pixel[3]+pixel[6]-pixel[2]-2*pixel[5]-pixel[8];double edge=sqrt(tmp1*tmp1+tmp2*tmp2);

if(edge>edgeDoor)*(lpDst+1)=255;//Sobel判断该点是否edge//edgeDoor=40(4)edge滤波

就是去除全边缘点(四周都是背景或边缘)(强度为5)

5、二值化

基本思想:将原有彩色图像变换为二值图像,其中细胞0X80(128)用Gray(灰色)标记出来,边缘0xF0(240)用Bright(亮色)标记出来,其他表示为0。主要代码:

第 8 页

6、填洞

将细胞中或者细胞相邻的地方的较小的背景填成细胞的背景,填完的细胞背景的灰度值是129,因为都被访问过了,然后将边缘去掉。

填洞的基本思想:首先将细胞或边缘内的黑点置为vistied = 0x01,以该黑点为中心,在其上下左右侧进行访问是否有未访问的黑点,若有则将上方黑点压栈,且上下左右侧的黑点置已访问。将堆栈顶端的数据弹出,作为新的种子进行扩散,即以该元素为基点,判断其周围是否存在未访问黑点,若有则继续压栈,重复操作。直到找到最后一点,此点四周均不存在未访问黑点,结束访问。若洞像素数小于100大于50,洞内像素数及其初进栈的点(56,(409,222))时,则进行填洞。填洞的过程就是将非mark点转化为mark点。

主要标记访问代码:

填洞函数主要代码分析:

填完洞后,进行下面操作:

如果图像中只有已访问黑点0x01则将其恢复成0;如果图像中只有Edge点0xf0则将 Edge置为黑点。这样图像中只有黑色的背景以及灰色的细胞mark(0x80)点。

主要代码:

第 9 页

7、收缩

收缩的目的是为了方便计数。通过扫描图像,对图像进行预先的3次腐蚀,判断所生成边界点,然后根据原理判定是否标注该点,存放所标志的中心点,便于统计细胞个数及计算细胞半径。

由Mark生成边界,我们有四邻域生成边界和八邻域生成边界。判断该点是否为Mark点,如果是Mark点的话,我们判断i、j是否是我们选取图片的边界,如果是的话,我们将该点变成边缘点,否则我们判断它的上下左右(周围八个点)是否有非Mark点,如有有,则将这边变成边缘点,反之,不变。

8邻域收缩操作代码(4邻域与8邻域思想相同):

第 10 页

8、获取中心点

根据前面所作工作统计获得的中心点个数,去掉一系列不符合要求的点得出最终的细胞个数、细胞的平均半径和平均面积,用对话框输出统计结果。

操作过程如下:

① 首先我们要去除访问标志,是我们先前一次在判断是否需要保存点的时候(MarkIt(int i, int j)),我们将边缘点都标记成访问过了,这时在处理下一次遍历图片发现中心点的时候,我们要进行判断点是否要保存就没有办法做了,所以在没进行一次图片的遍历之前我们都需要去除访问标志。主要代码:*lpSrc&=NO_VISITED;//0xfe// 清除visited标志

最后位 置0操作

② 需要判断是否是边界以外的点,这里我们只处理边界内部的点,对于边界外部的点不加以查找中心点。对于内部的点,我们先要判断是否是孤立的边缘点,即判断该边缘点的上下左右四个点都不是Mark点和边缘点我们认为是孤立的边缘点,但是我们在这里也要去除半径不大于2的孤立点,因为我们认为它的半径太小,是噪声。如果是半径大于2的孤立点,我们对他进行标记成中心点,对半径做一点补偿(pt.radius=k+pre_shrink_count+4,4为补偿)。然后在入队。

主要代码如下:

{

第 11 页 if(k<3)// 如果进行第一次收缩即消失的点则认为该点是噪点,不进行保存直接进行下一次收缩

continue;

// 孤立的点

*lpSrc |=CENTERED;//0x2 对孤立点加上中心点标志0xf2//后面shrink时为0x02

// 保存一下CENTER_POINT信息(圆心,半径)

pt.x=i;pt.y=j;pt.radius=k + pre_shrink_count + 4;// +4放大补偿,k为把此圆收缩到一点所经历的收缩次数

points_temp.push_back(pt);continue;}

③ 需要判断是否需要保存该点,我们在判断它的上下左右是否有没有访问过的边缘点,这里我们运用递归函数来找相连通的边缘点,如果是全边缘点的时候我们就需要保存,即将m_bFullEdge=1。在保存的函数中我们将该点变成中心点,然后半径补偿然后我们来对该点入队(保存),然后将该点设置成没有访问过的点,因为下面在做该点的上下左右是否为访问过的,访问过才保存,因为这个点已经保存过了,所以要将保存过的点设置成没有访问过,我们必须将这点变成没有访问过。然后判断该点的周围八点是否是访问过的,如果访问过就保存该点,这里也是运用递归函数来实现的。

对中心点处理:

a)独立的中心点直接存储

b)相邻的中心点通过递归求质心作为圆心,最大半径作为新的半径,合并各中心为一点

主要代码如下:

pt.x=tot_x/tot_num;//质心 pt.y=tot_y/tot_num;pt.radius=max_radius;//取最大半径作为质点中心点半径 *(lpSrc-(pt.y-j)*lLineBytes+pt.x-i)|=CENTERED;//质点置为中心点 points.push_back(pt);c)相近但不相邻的点,求质心为圆心,最大半径为半径(直到无相近点)

主要代码如下:

if(abs(x0-x)+abs(y0-y)<10)// 相近

{

/*pt=points.at(j);if(points.at(i).radius

pt=points.at(i);*/ points.at(i).x=(x+x0)/2;//取均值,保存最大半径

第 12 页

points.at(i).y=(y+y0)/2;points.at(i).radius=max(points.at(i).radius,points.at(j).radius)+4;pt=pt=points.at(i);d)在无相近点的情况下,若半径小于8,则删除。

主要代码如下:

if(bdelete)

{

} e)两圆相交,若其中一圆非相交部分面积小于50%,则删除

主要代码如下:

if(total

9、细胞计数

打开我们处理前的图片,根据前面保存中心点的队列,我们知道中心点的位置和细胞的半径,然后我们重新的导入细胞的图片,在上面画圆,标出细胞。然后我们获取细胞内部的HSI的最大值和最小值,计算出细胞的平均面积和个数。主要代码如下:

msg.Format(“共有%d个细胞,平均半径%d,平均面积%d : H(%3.1f,%3.1f)S(%3.2f,%3.2f)I(%3.2f,%3.2f)”, m_vCenterPoints.size(),(int)(totr/m_vCenterPoints.size()+.5),(int)(tota/m_vCenterPoints.size()+.5), 360.0*min[0]/255.0,360.0*max[0]/255.0, 1.0*min[1]/255.0,1.0*max[1]/255.0, 1.0*min[2]/255.0,1.0*max[2]/255.0);

10、All-steps

第 13 页 可以一次性实现细胞识别的所有操作步骤

设置控制按键的权限,点击update_command_ui ,键入控制条件

每步操作时给cellprocess设置不同数值,表示那步进行过,只能进行规定的下步操作,从而在运行过程中放置按键误触导致程序崩溃。

11、扩展:

区域选择:

第 14 页

建立类向导:OnButtonDown 和OnButtonUp 键入代码:

在OnDraw中添加下列代码

注意:bool 变量m_bDrag要定义在view.cpp文件头部,定义在view.h会出现第一次区域选择时出现错误。

添加复位按键:

第 15 页

点击该键后会重新读取图像(和图像自动打开代码一样)

第三部分

12、各步骤结果和错误举例

① 各步骤结果图

a.Mark(Red)& MayBe Mark(Blue)

maybemark to mark(black red)第 16 页

edge information and edge filter

twovalue

fillholes 第 17 页

shrink

findcenter 第 18 页

count

出现的错误举例:

Mousemove 程序中出现问题: 1.错误:

没有加#include “MainFrm.h”头文件 2.错误

第 19 页

error C2248: 'm_wndStatusBar' : cannot access protected member declared in class 'CMainFrame'

需将protected: // control bar embedded members CStatusBar m_wndStatusBar;CToolBar

m_wndToolBar;

protected变为public 供用户操作使用

MouseMove函数中((CMainFrame*)AfxGetMainWnd())->m_wndStatusBar.SetPaneText(0,str);使str.Format中内容显示在标准窗口图像的左下方bar

3.MouseMove的坐标判决放在for循环外,鼠标移动到图像外,程序会崩溃。解决:改变坐标判决代码的位置

通见问题:

在ClassView中的类视图不见了,在FileView视图中该类的.h和.cpp文件仍然存在

解决方案:先保存workspace,然后关闭工程,删除此工程目录中的.ncb文件,重新打开workspace 原因:classview显示混乱 在类中添加的成员变量和成员函数不能显示出来,即使显示出来了变量或函数,双击后不能跳至正确的位置。

第 20 页

Edge information中出现问题

正常

不正常

memcpy(lpNewDIBBits,lpSrc,lHeight *lLineBytes);代码应放在图像处理前,参考图像是初始状态的图像,把第一步的四个小步骤分开写在不同的函数内时,因为每一小步的操作都会改变图像的状态,如果把: memcpy(lpNewDIBBits,lpSrc,lHeight *lLineBytes);写在maybemark_to_mark之后那么参考图像就不是原始图像

发现:做到shrink时,看到收缩后的图像效果很差,和标准收缩图像相差较大,经调试后发现问题(没注意 ppt最后一页有,老师在qq群在中也提到过)。

Shrink操作后,关闭图像,出现问题 GenEdge4()函数中出现问题 for(int j=0;j

{

lpSrc =(unsigned char *)pDoc->m_lpDib->m_lpImage + lLineBytes*(lHeight-1-j)-1;

for(int i=0;i

{

lpSrc++;......和

for(int j=0;j

for(int i=0;i

{

第 21 页 lpSrc =(unsigned char *)pDoc->m_lpDib->m_lpImage + lLineBytes*(lHeight-1-j)-i;....for循环问题 有差异

后面起始点地址为dot1 前面起始点地址为 dot1+1,不处理四周边界

可以把第二个for循环语句中前面的i=0 改成i=1.观察图像,发现Shirnk后未保存填洞点,结果只有 0x00 0x80 0xf0 //

*lpSrc &=NO_EDGE_POINT;//至关重要

少写后,程序一直崩溃。

这段代码在GenEdge函数中,在shrink步骤中没影响,但在找中心点过程中用到这个函数时,这段代码就十分必要。否则程序会在运行findcenter时直接崩溃。

中心点标志 0x02

不是0xf2

Temp.at(n).y 等同于 temp[n].y

13、心得体会

通过对本次数字图像处理课程设计的学习,进一步加深了对数图知识的理解,同时也基本掌握了VC++软件的使用方法。从一开始的连图像都无法打开,到最后在老师上课的资料以及同学的帮助和学长的参考程序下终于完成了一幅细胞图像的整个识别过程。自己一向在编程方面有所欠缺,通过咨询老师和同学还有百度,自己也慢慢理解了所写程序代码的含义,间接地提高了自己写代码与识别代码的能力。

通过一个星期多的学习,我对细胞识别的基本思想有了深一步的理解,也让我对c语言相关的知识得到了回顾。此次课程设计给我们提供了一个既能学习又能锻炼的机会,使我们养成了查找资料(主要是在百度上查阅一些代码的含义)的习惯,将理论与实际相结合起来,锻炼了分析问题和实际解决问题的能力。提高了适应能力,为今后的学习和实践打下了基础。

第 22 页

下载数字图像处理界面切换技术结课论文word格式文档
下载数字图像处理界面切换技术结课论文.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    微型计算机控制技术结课论文

    微型计算机控制技术论 文 学 院 : 信息科学与工程学院 专业班级 : 自动化1206 学 号 : 0909122921 姓 名 : 丁志成 指导老师 : 贺建军 完成日期 : 2015年5月20日 计算机控制技......

    微型计算机控制技术结课论文(推荐五篇)

    微型计算机控制技术论 文 学 院 : 信息科学与工程学院 专业班级 : 电气1106班 学 号 : 0909112923 姓 名 : 蒋颖 指导老师 : 贺建军 完成日期 : 2014年5月4日 计算机控制技术......

    汽车驾驶技术课程结课论文

    汽车驾驶技术与交通安全结课论文 论驾车途中突发事件的安全自救 学 院 专 业: 姓 名: 任课老师: 中国·珠海 二○一三年 十二月信息学院 学 号: 职 称: [键入文字] [键入文......

    经济法结课论文

    经济法学结课论文 学院:经贸学院 专业:工商管理 学号:1124130 班级:11241 姓名:贾茹有限责任公司股权转让法律问题研究 摘要:有限公司与股份公司相比,由于其具有设立门槛低、组......

    报关结课论文

    浅谈报关员记分考核 桂林理工大学 外国语学院英语07-2班 记分考核是海关对报关员实行岗位考核的一种教育和管理措施,对于无法区分责任主体是报关员还是其他单位或个人的,海......

    工程地质结课论文(★)

    《工程地质学》期末课程论文 学号11160271 编写姓名 冉晨路专业班级土木1103 所属学院 北京交通大学海滨学院 提交日期 2013年4月30日 泥石流成因与防治 姓名:冉晨路 学号:111......

    纳米技术结课论文

    “纳米技术”结课论文 ——纳米技术在医学方面的应用 以前提起“纳米”这个词语,只知道是一个长度单位,对其了解甚微,而随着近几年纳米技术日新月异的发展和广泛应用,感觉“纳米......

    纳米技术结课论文

    纳米技术 学院 : 姓名 :学号 : 指导教师: 论文特色: 本论文详细的介绍了关于碳纳米管技术的各种制备方法,以及一些新的制备碳纳米管的思路,体现了这种新型材料的优缺点。 摘要: 概......