实验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)
End If
Dim newColor As Color = Color.FromArgb(clrRgb(0), clrRgb(1), clrRgb(2)) bmp2.SetPixel(x, y, newColor) ' 设置像素的新颜色。 Next Next
' 设置PictureBox 控件,以便显示图像 PictureBox2.Image = bmp2
图像显示:
2、黑白图像处理:
代码: 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 = CInt ((Int(pixelColor.R) + Int(pixelColor.G) + Int(pixelColor.B)) / 3.0) ' 改为亮度公式计算可能更好
Dim newColor As Color = Color.FromArgb(clrAvg, clrAvg, clrAvg) bmp2.SetPixel(x, y, newColor) ' 设置像素的新颜色。 Next Next
PictureBox2.Image = bmp2 PictureBox2.Show()
图像显示:
3、浮雕效果:
代码: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 pixelColor1 As Color Dim avgValue(2) As Double
avgValue(0) = 0 avgValue(1) = 0 avgValue(2) = 0
Dim clrAvg1 As Double = 0 Dim clrAvg2 As Double = 0 Dim clrAvg3 As Double = 0
For x = 1 To bmp1.Width - 2
For y = 1 To bmp1.Height - 2
pixelColor = bmp1.GetPixel(x, y) 'pixelColor 的属性R,G ,B 为Byte 类型 pixelColor1 = bmp1.GetPixel(x - 1, y - 1) 'pixelColor 的属性R,G ,B 为Byte 类型 'If (x - 1) 255 Then x = 255 'If (y - 1) > 255 Then y = 255
'avgValue(0) = avgValue(0) + CInt(pixelColor.R) '三基色分别累加 'avgValue(1) = avgValue(1) + CInt(pixelColor.G) 'avgValue(2) = avgValue(2) + CInt(pixelColor.B)
clrAvg1 = CInt ((Int(pixelColor.R) - Int(pixelColor1.R) + 128)) ' 改为亮度公式计算可能更好(三色的平均值
clrAvg2 = CInt ((Int(pixelColor.G) - Int(pixelColor1.G) + 128)) clrAvg3 = CInt ((Int(pixelColor.B) - Int(pixelColor1.B) + 128)) If clrAvg1 255 Then clrAvg1 = 255 If clrAvg2 > 255 Then clrAvg2 = 255 If clrAvg3 > 255 Then clrAvg3 = 255 'If (y - 1) 255 Then x = 255 'If (y - 1) > 255 Then y = 255
Dim newColor As Color = Color.FromArgb(clrAvg1, clrAvg2, clrAvg3) '[当前-左上角+平均值颜色值(~255)]
bmp2.SetPixel(x, y, newColor) ' 设置像素的新颜色。 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) ' 设置PictureBox 控件,以便显示图像 PictureBox2.Image = bmp2 PictureBox2.Show()
图像显示:
五、 实验小结:
通过本次实验我基本熟悉了图像处理的实例应用,清楚了几种边缘检测中常用的算子的效果;掌握了几种模板的作用。达到了实验的目的。
实验3《图像处理实验》
实验学时: 4 实验地点: 第一综合楼 实验日期: 2014年6月 13日
一、实验目的
数据压缩技术是多媒体应用和音视频传输系统的核心技术之一。变换编码是最常用的图像压缩方法之一,JPEG 和JPEG2000等图像标准都采用了变换编码方法。本实验的主要任务是设计一个基于变换编码的图像压缩和解压缩程序。这是一个综合性的设计类实验,包括:图像分块、图像变换、信号量化、像素扫描、熵编码等过程以及上述逆过程。指导教师给出部分范例程序(比如图像分块变换、编码等正向操作函数),学生利用所学理论知识分析程序设计思路,并逐个模块进行测试,然后仿照范例程序编写其余的函数(比如图像逆变换、解码等所有逆向操作函数)。通过实验,学生将更深入地了解图像压缩原理及实现方法,而且编程能力也将得到进一步提高。 二、实验内容
1. 编写两个函数,分别实现对图像进行分块Image2Block 和合并图像分块Block2Image 的功能。分块函数Image2Block 输入参数是二维图像数据、分块尺寸以及图像边缘填充模式(1:填充0,2:重复边缘像素值),输出结果为图像分块阵列;合并函数Block2Image 的输入参数是分块阵列和原始图像的尺寸。
2. 编写两个函数,分别实现二维DCT 变换Block2Dct 和逆变换Dct2Block 。正变换Block2Dct 函数的输入参数是二维矩阵,输出参数是DCT 变换系数;逆变换Dct2Block 函数的输入参数是二维DCT 系数,输出参数是逆变换后的矩阵。
3. 编写两个函数,分别实现DCT 变换系数的量化Dct2Quant 和逆量化Quant2Dct 。量化函数Dct2Quant 的输入参数是原始的DCT 变换系数和量化步长矩阵;逆量化函数Quant2Dct 的入参数是量化后的DCT 变换系数和量化步长矩阵。
4. 编写两个函数,分别实现对图像进行分块DCT 变换并量化Image2DctQ 及其逆过DctQ2Image 。函数Image2DctQ 调用前面的分块Imag2Block 和变换Block2Dct 以及量化 Dct2Quant 等三个函数,实现对图像进行分块DCT 变换并量化。函数DctQ2Image 调用相应的逆函数来实现上述逆过程。
5. 编 写两 个函 数,实 现 图 像 的 变 换 编 码Image2Transform 和 解 码
Transform2Image 。函数Image2Transform 调用Image2DctQ 对图像分块变换和量化,然后对量化后的DCT 系数进行ZigZag 扫描,最后进行行程编码RLE (以及霍夫曼编码, 任选);函数Image2Transform 调用相应的逆函数来实现上述逆过程。 三、实验步骤:
1. 在自己电脑上安装好编程软件,并配置好开发环境。本实验建议使用MATLAB 工具软件,学生也可自由选择其它编程语言和工具。
2. 复习有关图像变换编码的理论知识,掌握DCT 变换原理和JPEG 图像压缩原理。还有一个前提条件是,必须熟悉MATLAB 或其它将使用的编程语言和工具。
3. 运行和调试指导教师给出的部分范例程序,结合相关理论知识,并参考源代码中给出的注释,分析各算法思路和编程方法;仿照示例,编写实验任务规定的其它程序模块。 4. 调试和修改程序,直至运行成功。并记录实验结果。
四、实验结果
调用blkproc 函数实现图像分块,调用DCT2及IDCT2实现压缩变换。以下是代码及效果图: (1)、 I = imread('lena.bmp' );
I2 =blkproc(I,[5 5],'std2(x)*ones(size(x))'); imshow(I)
figure, imshow(I2,[]);
图像分块后可看出明显边缘现象
:
(2)、 A=imread('lena.bmp' );
imshow(A)
C=dct2(A); %进行余弦变换 figure;
B=log(abs(C)); imshow(B)
colormap(jet(64)); %显示为64级灰度
colorbar; %显示颜色条,显示变换后的系数分布
C(abs(C)
imshow(D) ;
分别输出原图、色条以及反变换后的图像,变换后的图像明显可以看出像素点的减少,图像被压缩:
五、实验小结:
多媒体指导老师每个模块的详细指导,让我们对图像压缩程序及相关的函数程序有了初步的了解,通过实验,更深入地了解图像压缩原理及实现方法,而且编程能力也将得到进一步提高,巩固了所学知识。
实验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)
End If
Dim newColor As Color = Color.FromArgb(clrRgb(0), clrRgb(1), clrRgb(2)) bmp2.SetPixel(x, y, newColor) ' 设置像素的新颜色。 Next Next
' 设置PictureBox 控件,以便显示图像 PictureBox2.Image = bmp2
图像显示:
2、黑白图像处理:
代码: 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 = CInt ((Int(pixelColor.R) + Int(pixelColor.G) + Int(pixelColor.B)) / 3.0) ' 改为亮度公式计算可能更好
Dim newColor As Color = Color.FromArgb(clrAvg, clrAvg, clrAvg) bmp2.SetPixel(x, y, newColor) ' 设置像素的新颜色。 Next Next
PictureBox2.Image = bmp2 PictureBox2.Show()
图像显示:
3、浮雕效果:
代码: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 pixelColor1 As Color Dim avgValue(2) As Double
avgValue(0) = 0 avgValue(1) = 0 avgValue(2) = 0
Dim clrAvg1 As Double = 0 Dim clrAvg2 As Double = 0 Dim clrAvg3 As Double = 0
For x = 1 To bmp1.Width - 2
For y = 1 To bmp1.Height - 2
pixelColor = bmp1.GetPixel(x, y) 'pixelColor 的属性R,G ,B 为Byte 类型 pixelColor1 = bmp1.GetPixel(x - 1, y - 1) 'pixelColor 的属性R,G ,B 为Byte 类型 'If (x - 1) 255 Then x = 255 'If (y - 1) > 255 Then y = 255
'avgValue(0) = avgValue(0) + CInt(pixelColor.R) '三基色分别累加 'avgValue(1) = avgValue(1) + CInt(pixelColor.G) 'avgValue(2) = avgValue(2) + CInt(pixelColor.B)
clrAvg1 = CInt ((Int(pixelColor.R) - Int(pixelColor1.R) + 128)) ' 改为亮度公式计算可能更好(三色的平均值
clrAvg2 = CInt ((Int(pixelColor.G) - Int(pixelColor1.G) + 128)) clrAvg3 = CInt ((Int(pixelColor.B) - Int(pixelColor1.B) + 128)) If clrAvg1 255 Then clrAvg1 = 255 If clrAvg2 > 255 Then clrAvg2 = 255 If clrAvg3 > 255 Then clrAvg3 = 255 'If (y - 1) 255 Then x = 255 'If (y - 1) > 255 Then y = 255
Dim newColor As Color = Color.FromArgb(clrAvg1, clrAvg2, clrAvg3) '[当前-左上角+平均值颜色值(~255)]
bmp2.SetPixel(x, y, newColor) ' 设置像素的新颜色。 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) ' 设置PictureBox 控件,以便显示图像 PictureBox2.Image = bmp2 PictureBox2.Show()
图像显示:
五、 实验小结:
通过本次实验我基本熟悉了图像处理的实例应用,清楚了几种边缘检测中常用的算子的效果;掌握了几种模板的作用。达到了实验的目的。
实验3《图像处理实验》
实验学时: 4 实验地点: 第一综合楼 实验日期: 2014年6月 13日
一、实验目的
数据压缩技术是多媒体应用和音视频传输系统的核心技术之一。变换编码是最常用的图像压缩方法之一,JPEG 和JPEG2000等图像标准都采用了变换编码方法。本实验的主要任务是设计一个基于变换编码的图像压缩和解压缩程序。这是一个综合性的设计类实验,包括:图像分块、图像变换、信号量化、像素扫描、熵编码等过程以及上述逆过程。指导教师给出部分范例程序(比如图像分块变换、编码等正向操作函数),学生利用所学理论知识分析程序设计思路,并逐个模块进行测试,然后仿照范例程序编写其余的函数(比如图像逆变换、解码等所有逆向操作函数)。通过实验,学生将更深入地了解图像压缩原理及实现方法,而且编程能力也将得到进一步提高。 二、实验内容
1. 编写两个函数,分别实现对图像进行分块Image2Block 和合并图像分块Block2Image 的功能。分块函数Image2Block 输入参数是二维图像数据、分块尺寸以及图像边缘填充模式(1:填充0,2:重复边缘像素值),输出结果为图像分块阵列;合并函数Block2Image 的输入参数是分块阵列和原始图像的尺寸。
2. 编写两个函数,分别实现二维DCT 变换Block2Dct 和逆变换Dct2Block 。正变换Block2Dct 函数的输入参数是二维矩阵,输出参数是DCT 变换系数;逆变换Dct2Block 函数的输入参数是二维DCT 系数,输出参数是逆变换后的矩阵。
3. 编写两个函数,分别实现DCT 变换系数的量化Dct2Quant 和逆量化Quant2Dct 。量化函数Dct2Quant 的输入参数是原始的DCT 变换系数和量化步长矩阵;逆量化函数Quant2Dct 的入参数是量化后的DCT 变换系数和量化步长矩阵。
4. 编写两个函数,分别实现对图像进行分块DCT 变换并量化Image2DctQ 及其逆过DctQ2Image 。函数Image2DctQ 调用前面的分块Imag2Block 和变换Block2Dct 以及量化 Dct2Quant 等三个函数,实现对图像进行分块DCT 变换并量化。函数DctQ2Image 调用相应的逆函数来实现上述逆过程。
5. 编 写两 个函 数,实 现 图 像 的 变 换 编 码Image2Transform 和 解 码
Transform2Image 。函数Image2Transform 调用Image2DctQ 对图像分块变换和量化,然后对量化后的DCT 系数进行ZigZag 扫描,最后进行行程编码RLE (以及霍夫曼编码, 任选);函数Image2Transform 调用相应的逆函数来实现上述逆过程。 三、实验步骤:
1. 在自己电脑上安装好编程软件,并配置好开发环境。本实验建议使用MATLAB 工具软件,学生也可自由选择其它编程语言和工具。
2. 复习有关图像变换编码的理论知识,掌握DCT 变换原理和JPEG 图像压缩原理。还有一个前提条件是,必须熟悉MATLAB 或其它将使用的编程语言和工具。
3. 运行和调试指导教师给出的部分范例程序,结合相关理论知识,并参考源代码中给出的注释,分析各算法思路和编程方法;仿照示例,编写实验任务规定的其它程序模块。 4. 调试和修改程序,直至运行成功。并记录实验结果。
四、实验结果
调用blkproc 函数实现图像分块,调用DCT2及IDCT2实现压缩变换。以下是代码及效果图: (1)、 I = imread('lena.bmp' );
I2 =blkproc(I,[5 5],'std2(x)*ones(size(x))'); imshow(I)
figure, imshow(I2,[]);
图像分块后可看出明显边缘现象
:
(2)、 A=imread('lena.bmp' );
imshow(A)
C=dct2(A); %进行余弦变换 figure;
B=log(abs(C)); imshow(B)
colormap(jet(64)); %显示为64级灰度
colorbar; %显示颜色条,显示变换后的系数分布
C(abs(C)
imshow(D) ;
分别输出原图、色条以及反变换后的图像,变换后的图像明显可以看出像素点的减少,图像被压缩:
五、实验小结:
多媒体指导老师每个模块的详细指导,让我们对图像压缩程序及相关的函数程序有了初步的了解,通过实验,更深入地了解图像压缩原理及实现方法,而且编程能力也将得到进一步提高,巩固了所学知识。