《多媒体软件设计技术》课程设计报告_第1页
《多媒体软件设计技术》课程设计报告_第2页
《多媒体软件设计技术》课程设计报告_第3页
《多媒体软件设计技术》课程设计报告_第4页
《多媒体软件设计技术》课程设计报告_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

多媒体软件设计技术课程设计报告学号姓名Email项目名称 利用VB进行图像处理 滤镜本项目功能及目标 实现4个滤镜效果:浮雕、油画、木刻、灯光。其中浮雕深度效果可通过拉杆改变调节,灯光位置调节使用鼠标单击。设计思路及其算法 根据教程P153页 图像的滤镜效果。VB中有两个操作像素的基本方法:Pset和Point。使用PSet方法可以生成像素,使用Point可以读取像素值,并在显示器上显示的颜色用RGB的值来表示。 首先,新建一个窗体Form1,在窗体上建立两个图片框picture1和picture2(picture1为经过滤镜处理后的图像,picture2为原图片),将其autosize的值设为true,然后用LoadPicture()命令给Picture1&2装入一副图像,在通过四个命令commond1,commond2,commond3,commond4的click事件调用过滤过程。浮雕滤镜通过拉杆改变参数使浮雕效果发生改变,灯光通过单击鼠标获取鼠标坐标,将鼠标坐标作为参数传递给灯光滤镜,使灯光位置随鼠标移动。 浮雕滤镜的算法是:在相邻像素的差值加上一个常数,使黑暗区域加亮一些,我们可以去同一行、同意列或对角线的相邻像素间的差值加一个常数。 油画滤镜的算法是:用当前点四周一定范围内任一点的颜色来代替当前的颜色。 木刻滤镜算法是:只需判断当前点是浅色还是深色即可,浅色用白色代替,深色用黑色代替。 灯光滤镜算法是:取一点为光源,从光线末端开始想光源点逐渐增加亮度。 2源程序文件的组成Lezg.jpg工程1.vbpForm1.frm工程1.vbw程序的源代码Public flag1 As Integer Public flag2 As Integer标记Private Sub clear_Click()清除滤镜效果 Picture1.Picture = Picture2.Picture 清除标记 flag1 = 0 flag2 = 0End Sub浮雕滤镜Private Sub Command1_Click() flag1 = 1 Dim pi1&, pi2& Dim x, y Dim a, b As Long Dim Red, Green, Blue As Integer a = 1 b = 1 xx = Picture1.ScaleWidth yy = Picture1.ScaleHeight For x = 1 To xx - 2 For y = 1 To yy - 2 pi1& = Picture1.Point(x, y) pi2& = Picture1.Point(x + a, y + b) Red = Abs(pi1& Mod 256) - (pi2& Mod 256) + 128) Green = Abs(pi1& And &HFF00) / 256&) Mod 256&) - (pi2& And &HFF00) / 256&) Mod 256&) + 128) Blue = Abs(pi1& And &HFF0000) / 65536) - (pi2& And &HFF0000) / 65536) + 128) Picture1.PSet (x, y), RGB(Red, Green, Blue) Next y Next x Picture1.Refresh Print flag1End Sub油画滤镜Private Sub Command2_Click() Dim pi& Dim x, y Dim a, b As Integer Dim Red, Green, Blue As Integer xx = Picture1.ScaleWidth yy = Picture1.ScaleHeight For x = 2 To xx - 3 For y = 2 To yy - 3 a = Rnd * 3 - 1 b = Rnd * 3 - 1 pi = Picture1.Point(x + a, y + b) Red = (pi& Mod 256) Green = (pi& And &HFF00) / 256&) Mod 256&) Blue = (pi& And &HFF0000) / 65536) Picture1.PSet (x, y), RGB(Red, Green, Blue) Next y DoEvents Next x Picture1.RefreshEnd Sub木刻滤镜Private Sub Command3_Click() Dim pi& Dim x, y Dim a, b As Integer Dim Red, Green, Blue As Integer a = 1 b = 1 xx = Picture1.ScaleWidth yy = Picture1.ScaleHeight For x = 0 To xx For y = 0 To yy pi = Picture1.Point(x, y) Red = (pi& Mod 256) Green = (pi& And &HFF00) / 256&) Mod 256&) Blue = (pi& And &HFF0000) / 65536) If (Red + Green + Blue) / 3 0 Then 启动浮雕滤镜,才能通过拉杆改变浮雕效果 Picture1.Picture = Picture2.Picture Dim fd As Integer HScroll1.Min = 5 HScroll1.Max = 20 Text1.Text = HScroll1.Value fd = HScroll1.Value Dim pi1&, pi2& Dim x, y Dim a, b As Long Dim Red, Green, Blue As Integer a = fd / 10 b = fd / 10 xx = Picture1.ScaleWidth yy = Picture1.ScaleHeight For x = 1 To xx - 2 For y = 1 To yy - 2 pi1& = Picture1.Point(x, y) pi2& = Picture1.Point(x + a, y + b) Red = Abs(pi1& Mod 256) - (pi2& Mod 256) + 128) Green = Abs(pi1& And &HFF00) / 256&) Mod 256&) - (pi2& And &HFF00) / 256&) Mod 256&) + 128) Blue = Abs(pi1& And &HFF0000) / 65536) - (pi2& And &HFF0000) / 65536) + 128) Picture1.PSet (x, y), RGB(Red, Green, Blue) Next y Next x Picture1.Refresh End IfEnd SubPrivate Sub open_Click() Picture1.Picture = LoadPicture(App.Path + lezg.jpg) Picture2.Picture = Picture1 Picture1.AutoRedraw = True Picture2.AutoRedraw = True Picture1.ScaleMode = 3 Picture2.ScaleMode = 3 单位设为像素 Picture1.AutoSize = True Picture2.Width = Picture1.Width Picture2.Height = Picture1.Height 自动调节Picture1和Picture2的大小End Sub灯光滤镜Private Sub Dengguang(ByRef in1 As Integer, ByRef in2 As Integer) Dim pi1&, pi2& Dim X1, Y1 Dim a, b As Integer Dim Red, Green, Blue As Integer a = in1 b = in2 xx = Picture1.ScaleWidth yy = Picture1.ScaleHeight For X1 = 1 To xx For Y1 = 1 To yy pi1 = Picture1.Point(X1, Y1) If Sqr(a - X1) * (a - X1) + (b - Y1) * (b - Y1) - 40 0 Then Red = (pi1& Mod 256) + 200 * (1 - (Sqr(a - X1) * (a - X1) + (b - Y1) * (b - Y1) + 1) / 40) Green = (pi1& And &HFF00) / 256&) Mod 256&) + 200 * (1 - (Sqr(a - X1) * (a - X1) + (b - Y1) * (b - Y1) + 1) / 40) Blue = (pi1& And &HFF0000) / 65536) + 200 * (1 - (Sqr(a - X1) * (a - X1) + (b - Y1) * (b - Y1) + 1) / 40) If Red 255 Then Red = 255 If Green 255 Then Green = 255 If Blue 255 Then Blue = 255 Picture1.PSet (X1, Y1), RGB(Red, Green, Blue) End If Next Y1 Next X1 Picture1.RefreshEnd Sub根据鼠标坐标改变灯光位置Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single) Dim index1 As Integer Dim index2 As Integer Picture1.Picture = Picture2.Picture 获取当前鼠标坐标 Me.Cls Me.Caption = x & , & y Label1.Left = X Label1.Top = Y Label1.Caption = 当前位置:X= & X & Y= & Y index1 = x index2 = y If flag2 0 Then 启动灯光滤镜,才能改变灯光位置 Call Dengg

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论