网站导航网学 原创论文 网站设计 最新系统 最新研究 原创论文 获取论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 设计下载 > 其他类别 > 正文

图片浏览系统的设计与实现

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/05/06

鉴于大家对其他类别十分关注,我们编辑小组在此为大家搜集整理了“图片浏览系统的设计与实现”一文,供大家参考学习!

QQ交谈客服咨询,网学网竭诚为您服务,本站永久域名:myeducs.cn

6章 图像的局部放大技术及实现

6.1 实用价值

目前,有许多流行的图像观察软件和图像处理软件,为人们在电脑屏幕上浏览和加工美丽的图像提供了方便。然而遗憾的是,这些软件在图像放大方面却不尽如人意。它们往往只能对整幅图像进行放大,而不能随意地放大图像的局部,就连微软公司随Windows提供的画图软件也不例外。

对图像局部进行放大,具有极高的实用价值。产品推销商可以将此项技术应用于新产品的展示和推广之中,让用户能够对其产品的不同部位,如汽车的表面镀铬工艺和新型的挡风玻璃等进行放大观看。通过电脑网络上动物解剖课的学生,亦可用其放大小白鼠或是青蛙的不同部位,以便更清晰地观察血管和各种器官。就象在日常生活中,人们手持放大镜,在地图或照片上移动的情景。

本章介绍实现图像局部、平滑和无闪烁放大的算法原理,以及在Delphi中实现的技术。

6.2 算法原理

Delphi中,可利用类TcanvasCopyRect方法实现图像的放大和缩小。其功能是将源画布上的一个指定矩形区域(简称源矩形)内的象素,拷贝到目的画布上的一个指定矩形区域(简称目的矩形)中。亦可称之为象素块复制。由CopyMode属性确定拷贝的模式。在直接拷贝模式(cmSrcCopy)下,当源矩形与目的矩形相等时,图像不变;若源矩形大于目的矩形,图像则缩小;而当源矩形小于目的矩形时,图像便被放大(在目的矩形中扩展)。源矩形与目的矩形大小之比,决定图像的缩放倍数。CopyRect方法声明如下:

Procedure CopyRect(const Dest: TRect; Canvas: TCanvas; const Source: Trect);其中参数,Dest为目的矩形,Canvas是源画布,Source为源矩形。

6.3 实现步骤

新建应用程序主目录C:\Magnifier及其子目录Images,将事先制作好的位图图像Picture.bmp存入Images目录。本例中,Picture.bmp的大小为260*310象素。

启动Delphi IDE,新建项目Magnifier.dpr,主窗体单元命名为Main.pas,存入C:\Magnifier目录。在主窗体上放置一个TPanel组件,并在其中加入两个TImage组件。两个TImage组件分别命名为ForeImageBackImage,前者重叠于后者之上,并且都装入Picture.bmp位图。

6-1主窗体和各组件属性设置

Form1

BorderIcons.biMaximize

False

BorderStyle

bsNone

Color

clRed

Height

364

KeyPreview

True

Name

MainForm

Position

poScreenCenter

Width

294

WindowState

wsNormal

Panel1

Align

alNone

BevelInner

bvLowered

BevelOuter

bvRaised

BevelWidth

2

BorderStyle

bsNone

BorderWidth

2

Height

322

Name

FramePanel

Visible

Ture

 

Width

272

Image1

Align

alNone

AutoSize

True

Center

True

Height

310

Name

BackImage

Picture

Picture.bmp

Stretch

False

Visible

False

Width

260

Image2

Align

alNone

AutoSize

True

Center

True

Height

310

Name

ForeImage

Picture

Picture.bmp

Stretch

False

Visible

True

Width

260

在主单元Main.pasimplementation段声明常量和变量:

const

sSide=30;

dSide=45;

var

msHide: Boolean;

OldX, OldY, NewX, NewY: Integer;

DestRect, SourceRect : TRect;

其中,常量sSidedSide用以控制放大镜的大小和放大倍数;变量msHide控制光标(鼠标)的隐藏和打开;其它变量用以确定放大部位。

建立主窗体MainFormOnCreate事件,加入下列语句,以初始化变量及设置复制模式:

msHide:=True;

Canvas.CopyMode:=cmSrcCopy;

创建主窗体MainFormOnKeyPress事件处理程序,在其beginend之间输入语句“Close;”,当按任意键时结束程序运行。

定义过程ImageCopy,用于处理图像的放大和恢复,当移动鼠标时调用。这是实现图像局部放大最重要的过程,源代码如下。

procedure TMainForm.ImageCopy(BoxCenterX, BoxCenterY, BoxSide: Integer);

begin

with SourceRect do

begin

Left:=BoxCenterX-BoxSide;

Top:=BoxCenterY-BoxSide;

Right:=BoxCenterX+BoxSide;

Bottom:=BoxCenterY+BoxSide;

end;

with DestRect do

begin

Left:=BoxCenterX-dSide;

Top:=BoxCenterY-dSide;

Right:=BoxCenterX+dSide;

Bottom:=BoxCenterY+dSide;

end;

ForeImage.Canvas.CopyRect(DestRect, BackImage.Canvas, SourceRect);

end;

注意,在Main.pas“type”中声明过程ImageCopy

创建ForeImageOnMouseMove事件处理程序,当鼠标在图像上移动时,获取其位置,并作为过程调用的实参。此时,光标隐藏,放大镜出现。随着放大镜的移动,图像新的部位被放大,滑过的部位又恢复原状。以下为beginend之间的代码:


NewX:=X;

NewY:=Y;

if msHide then

begin

OldX:=NewX;

OldY:=NewY;

msHide:=False;

ShowCursor(False);

end else

begin

ImageCopy(OldX, OldY, dSide);

end;

ImageCopy(NewX, NewY, sSide);

OldX:=NewX;

OldY:=NewY;

建立主窗体MainFormOnMouseMove事件处理程序,当鼠标移开图像时,放大镜隐藏,光标重新出现。源代码片段如下:

if not msHide then

begin

msHide:=True;

ShowCursor(True);

ImageCopy(OldX, OldY, dSide);

end;

6.4 技术剖析

以上介绍了利用了画布的CopyRect方法,将图像以像素块从后台隐藏的TImage组件画布上向前台TImage组件的画布上拷贝,以实现图像的放大与恢复的技术。由于这一技术的采用,在图像放大前不需要存储象素,此后直接从后台TImage组件画布上恢复图像。不仅节省了内存资源,也确保了对图像的局部进行平滑、无闪烁地放大。同时,程序源代码也简洁了。

“放大镜”的中心便是鼠标的位置,这样处理的好处是使得图像在“放大镜”中均匀展开,并确保图像边缘也能同样放大。

要改变“放大镜”的大小和图像的放大倍数,只需修改常量sSidedSide的值。实际应用中,亦可灵活处置,如将它们设置成变量,由程序菜单控制。本章放大镜的大小为90*90个象素,放大倍数为1.5。这里的放大镜比真正的玻璃放大镜的效果要好得多。玻璃放大镜是用凸透镜制成的,中间与边缘的放大倍数不一致,导致图像发生形变。而且,当一边移动一边观察时,很容易使人眼花缭乱。利用TCanvasStretchDraw方法或其它方法,也可以实现图像的局部放大。另外,虽然本章介绍的算法已经相当令人满意,但还是可以作进一步修改的。例如在放大镜移动时,只放大和恢复必要的部分。

 

本站发布的计算机毕业设计均是完整无错的全套作品,包含开题报告+程序+论文+源代码+翻译+答辩稿PPT

本文选自计算机毕业设计http://myeducs.cn
论文文章部分只是部分简介,如需了解更多详情请咨询本站客服!QQ交谈QQ3710167

原创论文

设为首页 | 加入收藏 | 论文首页 |原创论文 |
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师