写在前面

HIT大三上学期视听觉信号处理课程中视觉部分的实验一,经过和学长们实验的对比发现每一级实验要求都不一样,因此这里标明了是2019年秋季学期的视觉实验一。

由于时间紧张,代码没有进行任何优化,实验算法仅供参考。

实验要求

  1. 实现给图像添加高斯噪声椒盐噪声 ,要求显示添加噪声之后的结果图。
  2. 实现图像的空域滤波:中值滤波均值滤波算法,并选取适合的方法对1中的图像进行平滑处理,要求显示处理之后的结果。
  3. 实现图像的边缘检测:Roberts算子Sobel算子
  4. 选做:实现对BMP文件头的读取,并解析BMP图像文件。 PS:图像单通道形式读取

实验代码

代码首先贴在这里,仅供参考

源代码

知识总结

这一部分总结实验过程中查询的博客,介绍完成本实验所需的知识,并对其记录以便之后复习。

首先需要实现一个对bmp文件读取的程序,这里首先需要了解bmp图像的格式
BMP文件格式详解(BMP file format) 这里我使用的文件读取方式是packunpackpython中struct.pack()函数和struct.unpack()函数Python使用struct处理二进制(pack和unpack用法)

bmp文件读取程序中,如何保存读出的图像数据自己决定,但最好使用numpy库将其保存为数组,方便后续进行各种处理。(这里我选择将其按像素点储存为一维数组,理解上较为简单,但后续算法实现需要算一下下标,导致程序不是很简洁。)

接下来进行的各种操作都是在灰度图上进行的,因此首先需要将bmp图像数据转化成灰度图像数据
图像处理:图像灰度化

之后是实现高斯噪声和椒盐噪声
高斯噪声和椒盐噪声的python程序实现

均值滤波和中值滤波
图像处理:中值滤波&均值滤波

Roberts算子和Sobel算子
灰度图像--图像增强 Robert算子、Sobel算子

实验总结

很简单的一个实验,总时间加起来大致6个小时左右(后面几个算法程序结构都是完全一样的,看懂算法原理直接替换核心代码就可以了。