




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上 多媒体软件设计技术课程设计报告学号姓名Email项目名称 利用VB进行图像处理 滤镜本项目功能及目标 实现4个滤镜效果:浮雕、油画、木刻、灯光。其中浮雕深度效果可通过拉杆改变调节,灯光位置调节使用鼠标单击。设计思路及其算法 根据教程P153页 图像的滤镜效果。VB中有两个操作像素的基本方法:Pset和Point。使用PSet方法可以生成像素,使用Point可以读取像素值,并在显示器上显示的颜色用RGB的值来表示。 首先,新建一个窗体Form1,在窗体上建立两个图片框picture1和picture2(picture1为经过滤镜处理后的图像,picture2为原图片)
2、,将其autosize的值设为true,然后用LoadPicture()命令给Picture1&2装入一副图像,在通过四个命令commond1,commond2,commond3,commond4的click事件调用过滤过程。浮雕滤镜通过拉杆改变参数使浮雕效果发生改变,灯光通过单击鼠标获取鼠标坐标,将鼠标坐标作为参数传递给灯光滤镜,使灯光位置随鼠标移动。 浮雕滤镜的算法是:在相邻像素的差值加上一个常数,使黑暗区域加亮一些,我们可以去同一行、同意列或对角线的相邻像素间的差值加一个常数。 油画滤镜的算法是:用当前点四周一定范围内任一点的颜色来代替当前的颜色。 木刻滤镜算法是:只需判断当前点
3、是浅色还是深色即可,浅色用白色代替,深色用黑色代替。 灯光滤镜算法是:取一点为光源,从光线末端开始想光源点逐渐增加亮度。 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() fl
4、ag1 = 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&a
5、mp; 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 Pictu
6、re1.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 +
7、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 Di
8、m 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)
9、 / 3 < 128 Then Picture1.PSet (x, y), RGB(0, 0, 0) Else Picture1.PSet (x, y), RGB(255, 255, 255) End If Next y Next x Picture1.RefreshEnd Sub'灯光滤镜Private Sub Command4_Click() flag2 = 1 标记启动灯光滤镜 Dim index1 As Integer Dim index2 As Integer index1 = 100 index2 = 100 Call Dengguang(index1, index2
10、) 'Print flag2End SubPrivate Sub Form_Load() Form1.AutoRedraw = True Form1.ScaleMode = 3 flag1 = 0 flag2 = 0End Sub'浮雕拉杆调节参数Private Sub HScroll1_Change() If flag1 > 0 Then 启动浮雕滤镜,才能通过拉杆改变浮雕效果 Picture1.Picture = Picture2.Picture Dim fd As Integer HScroll1.Min = 5 HScroll1.Max = 20 Text1.Te
11、xt = 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,
12、 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
13、), 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 '单位设为像素 Pi
14、cture1.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 = in
15、2 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 &a
16、mp;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 < 0 Then Red = 0 If Red > 255 Then Red = 255 If Green < 0 Then G
17、reen = 0 If Green > 255 Then Green = 255 If Blue < 0 Then Blue = 0 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 S
18、ingle) 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 &
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025二手房屋买卖合同标准范本
- 2025北京市家具买卖合同样本(合同版本)
- 数字化转型视角下公路货运行业效率提升的可持续发展研究
- 英语4级真题及答案
- 2025年薪酬管理1题库及答案
- 2025年高速公路项目合同管理与培训
- 2025年有限元考试题及答案
- 2025年东北白酒测评题目及答案
- 尾矿综合利用技术2025年突破与生态环境修复技术路径研究报告
- 尾矿资源化与生态修复技术融合创新在矿业可持续发展的推动作用分析
- 2025年中国建筑集团招聘面试宝典与模拟题答案
- CQB战术课件教学课件
- 汽车客运服务合同协议书
- 稽核培训课件
- 2025-2026年秋季学期一年级开笔礼校长致辞稿:执笔启智 向新而行
- 2025强制执行申请书(范文模板)
- 《法律基础知识》教案
- 2025年浙江省中考道德与法治试题答案详解讲评(课件)
- 2025年电梯安全总监职责培训考核试题及答案
- 2025年国家能源集团四川公司集团系统内招聘10人笔试参考题库附带答案详解(10套)
- 碧海BH6000-1000型无菌纸盒灌装机学习资料
评论
0/150
提交评论