1-27 王锟 计算机图形学

时间:2024.5.13

127王锟计算机图形学

课程设计报告

题目:图像处理(Image Processing) 课程:计算机图形学

班级:12信息与计算科学1班 姓名:王锟

学号:20120810010127

学校:华东交通大学

学院:理学院

指导老师:蒋先刚

目录

目录 ........................................................................................................ - 1 - 概述 ........................................................................................................ - 2 -

一、 设计需求...................................................................................... - 3 -

2.1 设计目的 .................................................................................. - 3 -

2.2 系统需求分析 .......................................................................... - 3 -

2.2.1 系统设计主要内容 ......................................................... - 3 -

2.2.2 系统开发环境和工具 ..................................................... - 3 -

二、 设计原理...................................................................................... - 4 -

三、 系统运行界面和功能 ................................................................. - 4 -

四、 源程序代码 ................................................................................. - 8 -

a. 图像放大 .................................................................................... - 8 - b. 图像缩小 .................................................................................... - 8 - c. 图像浮雕 .................................................................................... - 8 - d. 图像曝光 .................................................................................... - 9 - e. 灰度图像扩张 .......................................................................... - 10 - 心得体会 .............................................................................................. - 12 - 参考文献 .............................................................................................. - 12 - - 1 -

概述

计算机图形学(Computer Graphics,简称CG)是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学。简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形的计算、处理和显示的相关原理与算法。是计算机科学的一个分支领域,主要关注数字合成与操作视觉的图形内容。计算机图形学研究的是应用计算机产生图像的所有工作,不管图像是静态的还是动态的,可交互的还是固定的,等等。图形API是允许程序员开发包含交互式计算机图形操作的应用而不需要关注图形操作细节或任务系统细节的工具集。计算机图形学有着广泛的应用领域,包括物理、航天、电影、电视、游戏、艺术、广告、通信、天气预报等几乎所有领域都用到了计算机图形学的知识,这些领域通过计算机图形学将几何模型生成图像,将问题可视化从而为各领域更好的服务。

图像处理就是对图像信息加工以满足人的视觉心理或应用需求的方法。图像处理方法有光学方法和电子学方法。从20世纪60年代起随着电子计算机和计算技术的不断提高和普及,数字图像处理进入了高速发展时期,而数字图像处理就是利用数字计算机或其它的硬件设备对图像信息转换而得到的电信号进行某些数学处理以提高图像的实用性。 图像处理在遥感技术,医学领域,安全领域,工业生产中有着广泛的应用,其中在医学应用中的超声、核磁共振和CT等技术,安全领域的模式识别技术,工业中的无损检测技术尤其引人注目。

计算机进行图像处理一般有两个目的:(1)产生更适合人观察和识别的图像。

(2)希望能由计算机自动识别和理解图像。数字图像的边缘检测是图像分割、目标区域的识别、区域形状提取等图像分析领域的重要基础,图像处理和分析的第一步往往就是边缘检测。 物体的边缘是以图像的局部特征不连续的形式出现的,也就是指图像局部亮度变化最显著的部分,例如灰度值的突变、颜色的突变、纹理结构的突变等,同时物体的边缘也是不同区域的分界处。图像边缘有方向和幅度两个特性,通常沿边缘的走向灰度变化平缓,垂直于边缘走向的像素灰度变化剧烈。根据灰度变化的特点,图像边缘可分为阶跃型、房顶型和凸缘型。 - 2 -

一、设计需求

2.1 设计目的

以图形学算法为目标,从理论上对几种经典的边缘检测算法进行分析,并用Delphi实现这些算法,深入研究。继而策划、设计并实现一个能够表现计算机图形学算法原理的或完整过程的演示系统,并能从某些方面作出评价和改进意见。通过完成一个完整程序,经历策划、设计、开发、测试、总结和验收各阶段,达到:巩固和实践计算机图形学课程中的理论和算法;最后,通过实例图像对不同边缘检测算法的效果进行分析,找出各种算法的适用范围。通过本课题的研究学习表现计算机图形学算法的技巧;培养认真学习、积极探索的精神。

2.2 系统需求分析

2.2.1 系统设计主要内容

1. 实现图像导入(可以打开新的图像实现处理)

2. 实现图像放大和缩小(改变图像的大小产生新的图像)

3. 实现图像曝光(曝光的原则是,我们应该判断这三个组件RGB值是否小于128,

则颠倒这个组件的值。换句话说,我们将这个组件的值是255减去旧值)

2.2.2 系统开发环境和工具

开发工具:Borland Delphi 7

系统环境:windows 7 64位旗舰版

- 3 -

Computer Graphics—Computer Processing

二、设计原理

1) 实现图像的导入:导入一个图像时我们应该使用Delphi双重缓冲功能,解决

图像导入;为了使表单上的图像可以被处理,必须导入图像转换为位图。

2) 实现图像的放大和缩小:首先,我们应该创建两个图像对象TestBMP和

ProcessedBmp形象。TestBMP为了输入图像和ProcessedBmp处理图像。然后我们设置高度和宽度ProcessedBmp对于TestBMP的倍数。然后调用系统函数StretchBlt()来处理图像TestBMP。

3) 实现图像曝光:首先我们遍历每个扫描线在Y轴方向,然后遍历每个像素的

RGB值扫描行,我们应该判断是否这三个组件RGB值小于128,则颠倒这个组件的值。换句话说,我们将这个组件的值是255减去旧值。

三、系统运行界面和功能

127王锟计算机图形学

初始界面

谢悦亮 20120810010124 - 4 -

Computer Graphics—Computer Processing

127王锟计算机图形学

图像缩小

图像放大

谢悦亮 20120810010124

127王锟计算机图形学

- 5 -

Computer Graphics—Computer Processing

图像曝光

127王锟计算机图形学

图像浮雕

谢悦亮 20120810010124

127王锟计算机图形学

- 6 -

Computer Graphics—Computer Processing

关于我们

谢悦亮 20120810010124

127王锟计算机图形学

- 7 -

Computer Graphics—Computer Processing

四、源程序代码

a. 图像放大

procedure TImageProcessForm.ImageAmplicationClick(Sender: TObject); //图像放大 begin

TestBMP.Assign(WillbeChangedBmp);

ProcessedBmp.Width := TestBMP.Width * 2;

ProcessedBmp.Height := TestBMP.Width * 2;

StretchBlt(

ProcessedBmp.Canvas.Handle,0, 0, ProcessedBmp.Width, ProcessedBmp.Height,

TestBMP.Canvas.Handle,0, 0, TestBMP.Width, TestBMP.Height,SRCCOPY

);

ChangedBmp.Assign(ProcessedBmp);

ShowChangedBmp;

end;

b. 图像缩小

procedure TImageProcessForm.imageDecressClick(Sender: TObject);

begin

TestBMP.Assign(ChangedBmp);

ProcessedBmp.Width := TestBMP.Width div 2;

ProcessedBmp.Height := TestBMP.Width div 2;

StretchBlt(

ProcessedBmp.Canvas.Handle,0, 0, ProcessedBmp.Width, ProcessedBmp.Height,

TestBMP.Canvas.Handle,0, 0, TestBMP.Width, TestBMP.Height,SRCCOPY

);

ChangedBmp.Assign(ProcessedBmp);

ShowChangedBmp;

end;

c. 图像浮雕

procedure TImageProcessForm.imageReliefClick(Sender: TObject);

var

x,y,i,j,red,green,blue: Integer;

color1,color2: TColor;

begin

TestBMP.Assign(WillbeChangedBmp);

谢悦亮 20120810010124 - 8 -

Computer Graphics—Computer Processing x:=TestBMP.Width;

y:=TestBMP.Height;

{ x := Imagerelief.width;

y := Imagerelief.Height; }

for i := 1 to x-2 do

For j := 1 to y -2 do

begin

color1 := TestBMP.Canvas.Pixels[i,j];

color2 := TestBMP.Canvas.Pixels[i+1,j+1];

red := abs(GetRValue(Color1)-GetRValue(Color2)+128);

Green := abs(GetGValue(color1)-getGvalue(Color2)+128);

blue := abs(GetBValue(color1)-getBvalue(Color2)+128);

if Red >255 then

Red := 255

else if Red<0 then

Red := 0;

if Green >255 then

Green := 255

else if Green<0 then

Green := 0;

if blue >255 then

blue := 255

else if blue<0 then

blue := 0;

TestBMP.Canvas.Pixels[i,j] := rgb(red,green,blue);

end;

ChangedBmp.Assign(TestBMP);

ShowChangedBmp;

end;

d. 图像曝光

procedure TImageProcessForm.BaoGuangClick(Sender: TObject);

var

p: PByteArray;

x, y: Integer;

begin

TestBMP.Assign(WillbeChangedBmp);

for y := 0 to TestBMP.Height - 1 do

begin

p := TestBMP.scanline[y];

for x := 0 to TestBMP.Width - 1 do

begin

if p[x * 3] < 128 then

谢悦亮 20120810010124 - 9 -

Computer Graphics—Computer Processing p[x * 3] := not p[x * 3]; { TODO : 各分量取反 }

if p[x * 3 + 1] < 128 then

p[x * 3 + 1] := not p[x * 3 + 1];

if p[x * 3 + 2] < 128 then

p[x * 3 + 2] := not p[x * 3 + 2];

end;

end;

ChangedBmp.Assign(TestBMP);

ShowChangedBmp;

end;

e. 灰度图像扩张

procedure TImageProcessForm.GrayDilateClick(Sender: TObject);

var

p1, p2, p3, p4,p5,p6: pbytearray;

RvalueArray:array[0..24]of Integer;

i, j: integer;

begin

Self.DoubleBuffered := True;

ProcessedBmp.assign(WillbeChangedBmp);

TestBMP.Assign(WillbeChangedBmp);

for j := 2 to ProcessedBmp.Height - 3 do

begin //处理相邻五条扫描线

p1 := TestBMP.ScanLine[j];

p2 := ProcessedBmp.ScanLine[j - 1];

p3 := ProcessedBmp.ScanLine[j];

p4 := ProcessedBmp.ScanLine[j + 1];

p5 := ProcessedBmp.ScanLine[j + 2];

p6 := ProcessedBmp.ScanLine[j - 2];

for i := 2 to ProcessedBmp.Width - 3 do

begin

RvalueArray[0] := p2[3 * (i - 2) + 2];

RvalueArray[1] := p2[3 * (i-1) + 2];

RvalueArray[2] := p2[3 * i + 2];

RvalueArray[3] := p2[3 * (i+1) + 2];

RvalueArray[4] := p2[3 * (i+2) + 2];

RvalueArray[5] := p3[3 * (i - 2) + 2];

RvalueArray[6] := p3[3 * (i - 1) + 2];

RvalueArray[7] := p3[3 * i + 2];

RvalueArray[8] := p3[3 * (i + 1) + 2];

RvalueArray[9] := p3[3 * (i + 2) + 2];

RvalueArray[10] := p4[3 * (i - 2) + 2];

RvalueArray[11] := p4[3 * (i - 1) + 2];

谢悦亮 20120810010124 - 10 -

Computer Graphics—Computer Processing RvalueArray[12] := p4[3 * i + 2];

RvalueArray[13] := p4[3 * (i + 1) + 2];

RvalueArray[14] := p4[3 * (i + 2) + 2];

RvalueArray[15] := p5[3 * (i -2) + 2];

RvalueArray[16] := p5[3 * (i -1) + 2];

RvalueArray[17] := p5[3 * i + 2];

RvalueArray[18] := p5[3 * (i + 1) + 2];

RvalueArray[19] := p5[3 * (i + 2) + 2];

RvalueArray[20] := p6[3 * (i - 2) + 2];

RvalueArray[21] := p6[3 * (i - 1) + 2];

RvalueArray[22] := p6[3 * i + 2];

RvalueArray[23] := p6[3 * (i + 1) + 2];

RvalueArray[24] := p6[3 * (i + 2) + 2];

SelectionSort(RvalueArray);

p1[3 * i + 2] := RvalueArray[24];

p1[3 * i + 1] := RvalueArray[24];

p1[3 * i] := RvalueArray[24];

end;

end;

ChangedBmp.Assign(TestBMP);

ShowChangedBmp;

end;

谢悦亮 20120810010124 - 11 -

Computer Graphics—Computer Processing

心得体会 经过了一阶段计算机图形学的学习,对于图形学中基本图形的生成算法有了一定的了解。深度研究图形学,需要高深的数学知识,且每一个细化的方向需要的知识也不一样。图形学是计算机科学与技术学科的活跃前沿学科,被广泛的应用到生物学、物理学、化学、天文学、地球物理学、材料科学等领域。我深深感到这门学科涉及的领域之广是惊人的,可以说博大精深。在这个计算机的时代什么都要用到计算机技术,图形也是我们生活中重要的部分,所以我们得好好学好图形学。

参考文献

[1]. 计算机图形学的算法基础(英文版·第二版)

谢悦亮 20120810010124 - 12 - (美) David F. Rogers

更多相关推荐:
计算机图形学学习心得体会

计算机图形学学习心得体会计算机科学与技术与技术班学号1计算机图形学计算机图形学ComputerGraphics简称CG狭义上是一种研究基于物理定律经验方法以及认知原理使用各种数学算法处理二维或三维图形数据生成可...

计算机图形学学习体会

让设计成为现实我对计算机图形学的认识10049410级景观一班苏莞琴计算机图形学包含的主要内容计算机图形学ComputerGraphic是人类设计手法不断演进的产物这门学科主要研究通过计算机处理用几何数据和数学...

计算机图形学感想

计算机图形学感想小学期的导论课里老师们从偏微分方程代数学组合概率论非线性方程组解法计算数学简介几何学最优化运筹学和计算机图形学八个方面为切入点给我们讲解了数学的一些分支上的知识老师的讲解拓宽了我们的知识面增加了...

计算机图形学学习的心得体会

对计算机图形学课程学习的心得体会通过一个学期的学习,了解了什么是计算机图形学、什么是图形API、为什么需要计算机图形学以及计算机图形学在各个领域的应用。计算机图形学是一种使用数学算法将二维或三维图形转化为计算机…

计算机图形学学习体会

计算题图形学课程学习体会计算机图形学是研究用计算机生成处理和显示图形的一门学科他的重要性体现在人们越来越强烈的需要和谐的人机交互环境UI已经成为软件的重要组成部分以图形的方式表示抽象的概念和数据已经成为信息领域...

计算机图形学心得体会

计算机图形学心得体会姓名:学号:20xx03284班级:计科11202序号:31院系:计算机科学学院通过一个学期的学习,经过老师细心的讲解,我对图形学这门课有了基础的认识,从您的课上我学到了不少知识,基本上对图…

计算机图形学 总结

第一章绪论计算机图形学的基本概念计算机图形学是研究怎样用数字计算机生成处理和显示图形的一门学科图形计算机图形学的研究对象构成图形的要素几何要素几何属性点线面体非几何要素视觉属性明暗灰度色彩纹理透明性线型线宽表示...

计算机图形学 图形变换

实验五图形变换一实验目的1掌握图形变换的基本方法2初步掌握映射菜单消息和捕获键盘消息的方法二实验内容及要求123以三角形为例使用VisualC实现二维图形的平移旋转和缩放功能每人单独完成实验按要求撰写实验报告写...

计算机图形学实验报告

武汉工业学院数学与计算机学院计算机图形学专业班级学号姓名指导老师实验报告20xx年5月25日第二章直线生成算法21实验原理211中点Bresenham算法22实验内容请使用中点Bresenham算法来生成直线实...

计算机图形学实验报告

实验报告课程名称计算机图形学学院信息科学与工程学院专业数字媒体技术班级20xx级姓名李义学号20xx010520xx20xx年12月19日山东科技大学教务处制目录实验一环境设置3实验二直线的生成算法4实验三圆的...

计算机图形学大作业

大连民族学院计算机图形学期末论文学院计算机科学与工程专业计算机科学与技术班级学号姓名成绩一问题描述11基本要求了解计算机图形学中的基本原理和方法并能利用程序设计语言实现12实验内容1利用程序设计语言进行二维及三...

计算机图形学第五次实验报告

计算机图形学实验报告实验十一真实感图形一实验教学目标与基本要求初步实现真实感图形并实践图形的造型与变换等二理论基础运用几何造型几何投影及透视变换真实感图形效果消隐纹理光照等有关知识实现1用给定地形高程数据绘制出...

计算机图形学学习心得(45篇)