多媒体通信课程实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《多媒体通信技术》
实验报告
项目名称多媒体实验
专业班级
学号0909
姓名
实验成绩:
批阅教师:
2014年 6 月15 日
实验2《图像处理实验》
实验学时: 4 实验地点:第一综合楼实验日期:2014年6月9日
一、实验目的
图像文件解析及处理实验的目的是让学生了解常用图像文件的格式和基本的图像处理方法,并掌握相关的编程技术。本实验不仅能让学生巩固和扩展所学理论知识,同时可提高编程实践能力,为进一步从事图像处理和多媒体技术的研究与开发奠定基础。
二、实验内容
本实验主要任务有两个:一是对Bitmap位图文件(*.bmp)的格式进行分析,编写程序从图像文件中读取像素阵列数据;二是编写程序对图像进行处理,比如:图像压缩编码、增强对比度、检测边缘、彩色变黑白、翻转或旋转、平滑去噪、缩小放大、调节透明度、等等,要求至少实现3种方式的图像处理。
要求:(1)能识别不同格式的位图文件(*.bmp),能正确地读取文件中的像素阵列数据,能根据已获取的像素数据绘制图像;(2)编程实现3种以上图像处理算法,并显示处理后的图像,以便观看处理效果。
三、实验步骤
1.在电脑上安装好相应的编程工具软件,试运行教师提供的范例程序。
2.分析范例程序的源代码,了解基本编程思路。
3.查阅有关BMP文件格式和图像处理技术的文献资料,结合范例程序源代码,深入理解图像处理原理及实现方法。
4.仿照范例程序,编写实现新的图像文件解析与处理算法。
5.调试和修改程序,直至能成功运行。
四、实验结果
本次实验分别实现了图形的增强对比度、黑白图像及浮雕三种效果
1、增强对比度:
代码:Dim bmp1 As Bitmap = PictureBox1.Image
Dim bmp2 As New Bitmap(bmp1.Width, bmp1.Height, Imaging.PixelFormat.Format24bppRgb)
' 循环扫描图像的像素,求平均颜色值.
Dim x, y As Integer
Dim pixelColor As Color
Dim avgValue(2) As Double
avgValue(0) = 0
avgValue(1) = 0
avgValue(2) = 0
Dim clrAvg As Double = 0
For x = 0 To bmp1.Width - 1
For y = 0 To bmp1.Height - 1
pixelColor = bmp1.GetPixel(x, y) 'pixelColor的属性R,G,B为Byte 类型
'avgValue(0) = avgValue(0) + CInt(pixelColor.R) '三基色分别累加
'avgValue(1) = avgValue(1) + CInt(pixelColor.G)
'avgValue(2) = avgValue(2) + CInt(pixelColor.B)
clrAvg = clrAvg + (Int(pixelColor.R) + Int(pixelColor.G) + Int(pixelColor.B)) / 3.0 '改为亮度公式计算可能更好
Next
Next
'Dim num = bmp1.Width * bmp1.Height
'avgValue(0) = CInt(avgValue(0) / num) '三基色分别求平均值
'avgValue(1) = CInt(avgValue(1) / num)
'avgValue(2) = CInt(avgValue(2) / num)
clrAvg = clrAvg / (bmp1.Width * bmp1.Height) '三基色的总平均值
avgValue(0) = clrAvg
avgValue(1) = clrAvg
avgValue(2) = clrAvg
' 循环扫描图像的像素,按比例调节颜色值.
Dim clrRgb(2) As Integer
For x = 0 To bmp1.Width - 1
For y = 0 To bmp1.Height - 1
pixelColor = bmp1.GetPixel(x, y)
If pixelColor.R > avgValue(0) Then
clrRgb(0) = CInt(pixelColor.R * factor) ' 对比度增强系数factor > 1
If clrRgb(0) > 255 Then clrRgb(0) = 255
Else
clrRgb(0) = CInt(pixelColor.R / factor)
End If
If pixelColor.G > avgValue(1) Then
clrRgb(1) = CInt(pixelColor.G * factor)
If clrRgb(1) > 255 Then clrRgb(1) = 255
Else
clrRgb(1) = CInt(pixelColor.G / factor)
End If
If pixelColor.B > avgValue(2) Then
clrRgb(2) = CInt(pixelColor.B * factor)
If clrRgb(2) > 255 Then clrRgb(2) = 255
Else
clrRgb(2) = CInt(pixelColor.B / factor)