分享

软件工程图像处理 实验报告:总结 计划 汇报 设计 可编辑

 清风似梦 2016-12-11

图像处理技术实验报告

专业班级:软件工程0707

名:

号:

指导教师:

东北大学 软件学院

2010 12

1

1/9页

数字图像处理技术简介

随着科学技术的不断发展,计算机的更新速度不断提高,人们的思想文化素质的提高,对图像的要求也越来越高。因此把原始图像与计算机结合起来,从而创作出许多更加完美的图像,满足人们的需求。计算机图像处理,是指利用计算机对图像进行一系列加工,以便获得人所们需要的效果。图像是人类获取和交换信息的主要来源,人类感知外界信息,80%以上是通过视觉得到的。因此,图像处理的应用领域必然涉及到人类生活和工作的方方面面。图像处理或图像分析方法的应用越来越广泛,其主要理论基础是形态数学,立体学,集合论等。图像处理或图像分析方法的应用越来越广泛,其主要理论基础是形态数学,立体学,集合论等。图像处理的应用领域很广,大致可以分为六大领域以及十余个子领域

图像处理虽然也可以用光学方法或模拟技术来实现,但目前主要是利用计算机来实现,称为数字图像处理。因此,图像处理一般是指数字图像处理。常见的图像处理有图像数字化、图像编码、图像增强、图像复原、图像分割与图像分析等。经过处理后的图像,一定能够更好的被用于工业或者个人目的。为此开发这个数字图像处理软件,能够处理一些图像,并对图像处理技术此方面进行深入的研究。

基本图像处理技术

图像的颜色是由三种基本颜色,即红(R)、绿(G)、蓝(B)有机组合而成的,称为三基色。每种基色可取0255的值,因此由三基色可组合成(256*256*256)1677万种颜色,每种颜色都有其对应的RGB值。对一幅彩色图像的各像素值进行变换并依变换后的新像素值重新显示,则可以实现不同的显示效果

过滤技术

包括锐化、浮雕、风化、腐蚀。这里介绍两种分别是锐化和浮雕。

1.位图图像的锐化处理的算法如下:

计算源图像像素f(i,j)的像素值与边缘上相邻像素f(i-1,j-1) 像素值之差的绝对值的百分比之和,然后将该值作为处理后图像像素g(i,j)的像素值。例如:

rr=r1+0.25*abs(r1-r2)或者 0.25改为0.5也可

gg=g1+0.25*abs(g1-g2)

bb=b1+0.25*abs(b1-b2)

式中r1,g1,b1分别为f(i,j)的红、绿、蓝分量值, r2,g2,b2分别为f(i-1,j-1)的红、绿、蓝分量值, rr,gg,bb分别为g(i,j)的红、绿、蓝分量值。

2位图图像的浮雕处理的算法是

2

2/9页

G(i,j)= f(i,j)- f(i-1,j)+常数

式中,G(i,j)为处理后图像的像素值,f(i,j)为源图像的像素值,F(i-1,j)为前一个相邻像素的值。常数一般取128。即

rr=r1-r2+128

gg=g1-g2+128

bb=b1-b2+128

式中, r1,g1,b1分别为为源图像的像素f(i,j)的红、绿、蓝分量值;r2,g2,b2分别为前一个相邻像素f(i-1,j)的红、绿、蓝分量值,rr,gg,bb分别为处理后图像的像素G(i,j)的红、绿、蓝分量值。

3彩色图像变换

包括彩色转灰度、彩色转黑白、平滑处理、逆反处理和霓红处理。这里介绍一下彩色转灰度和逆反处理。

1.彩色图像生成灰度图像的一般算法如下:

Col=Picture1.Point(x,y)

r= Col AND &0xff

g=( Col AND &0xff00)/256

b=( Col AND &0xff0000)/(256*256)

rr=gg=bb=(r+g+b)/3

其中Col为获取到的像素值f(i,j)r,g,b分别为原像素值f(I,j)的分量值,rr,gg,bb分别为处理后g(i,j)的分量值。

2. 位图图像的逆反处理的算法如下:

rr=255-r gg=255-g

bb=255-b

式中,r,g,b分别为源图像像素f(i,j)的红、绿、蓝分量值,rr,gg,bb分别为处理后像素g(i,j)的红、绿、蓝分量值。

根据现在社会的需求,要得到不同的图像效果也是理所当然的。在VB中,我们创建一些窗体。包括主窗体frmMain、工作区窗体frmPaint、工具窗体frmTool、调色板窗体frmColorcharge、历史框窗体Hstory、新建窗体frmNew图像大小frmSize、控制窗体frmControl,其它为一些功能窗体,如对比度增强frmDuibidu,图像合成frmHechengFFT分析frmFFT

详细设计阶段的根本目标是确定应该怎样具体的实现所要求的系统。也就是设计出程序的“蓝图”,在接下来的编码阶段里,这些描述将被直接翻译成程序设计所使用的语言。也就是说,详细设计的结果决定了最终的程序代码的质量。

4.1打开图像

源程序如下:

Private Sub huoqutuxiang_Click()

On Error GoTo Err

3

3/9页

CommonDialog1.Filter = '(*.*)|*.*|(*.gif)|*.gif|(*.bmp)|*.bmp|(*.jpg)|*.jpg'

CommonDialog1.ShowOpen

Picture1.Picture = LoadPicture(CommonDialog1.FileName)

Picture3.Picture = Picture1.Picture Picture4.Picture = Picture1.Picture Exit Sub

Err:

Exit Sub

End Sub

4.2逆反处理

源程序如下:

Private Sub Nifanchuli_Click() Picture2.Picture = Picture3.Picture Picture2.Picture = Picture4.Picture Label3.Caption = '正在处理中...'

DoEvents

width1 = Picture1.ScaleWidth

height1 = Picture1.ScaleHeight For i = 0 To width1 - 1

For j = 0 To height1 - 1

c = Picture1.Point(i, j)

r1 = c Mod 256 '获得红色值

g1 = c / 256 Mod 256 '获得绿色值

b1 = c / 65536 '获得蓝色值

rr = 255 - r1 '逆反处理

gg = 255 - g1

bb = 255 - b1

If rr < 0="" then="" rr="0:" if="" rr=""> 255 Then rr = 255

If gg < 0="" then="" gg="0:" if="" gg=""> 255 Then gg = 255

If bb < 0="" then="" bb="0:" if="" bb=""> 255 Then bb = 255

Picture2.PSet (i, j), RGB(rr, gg, bb) Next j

Next i

Label3.Caption = '处理后结果'

End Sub

4.3霓虹处理

源程序如下:

4

4/9页

Private Sub nihongchuli_Click() Label3.Caption = '处理中...'

Picture2.Picture = Picture3.Picture Picture2.Refresh

DoEvents

width1 = Picture1.ScaleWidth height1 = Picture1.ScaleHeight A = 1: b = 1

For i = 0 To width1

For j = 0 To height1

p1 = Picture2.Point(i, j)

p2 = Picture2.Point(i + 1, j) p3 = Picture2.Point(i, j + 1) Red = Sqr((p1 Mod 256 - p2 Mod 256) ^ 2 + (p1 Mod 256 - p3 Mod 256) ^ 2)

Green = Sqr((p1 / 256 Mod 256 - p2 / 256 Mod 256) ^ 2 + (p1 / 256 Mod 256 -

p3 / 256 Mod 256) ^ 2)

Blue = Sqr((p1 / 65536 - p2 / 65536) ^ 2 + (p1 / 65536 - p3 / 65536) ^ 2)

Picture2.PSet (i, j), RGB(Red, Green, Blue)

Next j

Next i

Label3.Caption = '处理效果图:'

End Sub

4.4平滑处理

源程序如下:

Private Sub Pinghuachuli_Click() Picture2.Picture = Picture3.Picture Label3.Caption = '正在处理中...'

DoEvents

width1 = Picture1.ScaleWidth height1 = Picture1.ScaleHeight For i = 1 To width1 - 2

For j = 1 To height1 - 2

c1 = Picture1.Point(i - 1, j - 1) c2 = Picture1.Point(i, j - 1) c3 = Picture1.Point(i + 1, j - 1) c4 = Picture1.Point(i - 1, j) c5 = Picture1.Point(i, j)

c6 = Picture1.Point(i + 1, j)

5

5/9页

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多