【基于MATLAB的数字图像处理】大作业·综合图像处理平台_图像综合处理-程序员宅基地

技术标签: matlab  图像处理  人工智能  基于MATLAB的数字图像处理  

系列文章目录

·【基于MATLAB的数字图像处理】第一章·绪论

·【基于MATLAB的数字图像处理】第二章·视觉系统与图像处理系统

·【基于MATLAB的数字图像处理】第三章·基本图像变换

·【基于MATLAB的数字图像处理】第四章·图像增强

·【基于MATLAB的数字图像处理】第五章·图像编码

·【基于MATLAB的数字图像处理】第六章·形态学图像处理

·【基于MATLAB的数字图像处理】大作业·综合图像处理平台

文章目录

系列文章目录

文章目录

一、背景及研究的目的和意义

二、主程序介绍

2.1 基本页面介绍

2.2 菜单栏介绍

2.2.1 文件菜单栏

2.2.2 选项菜单栏

2.3 基本功能介绍

2.3.1 RGB及旋转调整

2.3.2 图像翻转

2.3.3 图像直方图

2.3.4 图像灰度图

2.3.5 添加噪声

2.3.6 反值和二值化

2.3.7 腐蚀和膨胀

2.3.8 频域操作

2.3.9 平滑操作

2.3.10 锐化操作

2.3.10 滤波操作

三、子程序介绍

3.1 引言

3.2 使用介绍

3.2.1 打开图像

3.2.2 制作Ins风

3.2.3 运动物体检测

3.2.4 特征匹配

3.2.4 人脸识别

总结


一、背景及研究的目的和意义

在日常的学习和生活中,我们难免会和各种各样的图像打交道,图像是我们获取外界信息最重要的途径,无论是手机中的摄像头,还是专业的数码摄像机,都可以将五彩斑斓的世界定格在一幅图像中,成为我们每个人生阶段美好的回忆。

但是我们获得的图像难免会伴随着很多的噪声,有时会使图像质量下降;有时会干扰我们的视觉,使拍摄出的图像效果不满意;有时甚至会出现一些特殊情况,遮挡住人脸或重要物体。这时我们需要对获得的图像进行一些图像处理,以使我们的图像观感更好,图像质量更优质。

另外,随着机器人领域的快速发展,机器人视觉已经越来越受到人们的关注,越来越多的高校也开设了数字图像处理这门课程,但对于从没接触过相关领域的小白来说,这部分学习起来会很抽象且感觉到难以理解,这款软件可以方便地帮助刚开始学习数字图像处理的学生,以更加通俗具体的方式,观察一幅图像在经过各种不同的变换后呈现的效果,以帮助初学者快速理解数字图像处理的相关知识。  

二、主程序介绍

2.1 基本页面介绍

图像的初始操作界面如图所示,大概分为这几个分区:菜单栏、图像显示区、基本图像处理按钮区、RGB三通道灰度频度实时显示区、RGB数值调整及旋转调整区,用户可根据需要进行不同的操作

另外,平台可以自动检测并输出处理后图像的实时熵值以及彩色图像的RGB三通道灰度频度折线图,以及三通道的RGB数值,用户可以根据状态指示灯的颜色,区分不同操作的成功与否。

2.2 菜单栏介绍

2.2.1 文件菜单栏

点击“文件”,点击“打开”,选择一张想要处理的图像,图像将会显示在界面中的“原图像”区域,同时会显示该图像的实时熵值和RGB三通道的灰度频度值,如下图所示为打开一个图像

点击“文件”,点击“保存”,在弹出的对话框中,选择想要保存的位置,并选择想保存的处理后图像的名称,点击“确定”,即可将处理后的图像文件保存。

2.2.2 选项菜单栏

点击“选项”,点击“重做”,可以使图像恢复到刚加载进平台的状态,恢复所有图像处理操作和按钮状。

2.3 基本功能介绍

2.3.1 RGB及旋转调整

本文采用的RGB数值计算方式:

图像旋转使用函数:imrotate(I)

用户可以转动RGB数值调整及旋转调整区的旋钮或输入数值或活动调整条都可以对图像的RGB数值及旋转进行调整

2.3.2 图像翻转

图像上下翻转使用函数:flipud(I)

图像左右翻转使用函数:fliprl(I)

点击基本图像处理按钮区的左右翻转或上下反转按钮,可以实现图像翻转,再次点击恢复到最初的图像
 

2.3.3 图像直方图

灰度直方图:灰度直方图是灰度级的函数,描述的是图像中具有该灰度级的像素的个数:其横坐标是灰度级,纵坐标是该灰度出现的频率(像素的个数,或个数与总数之比)

显示图像直方图使用的函数:imhist(I)

点击基本图像处理按钮区的“直方图”按钮,可以显示RGB图像三通道的灰度直方图,再次点击恢复

2.3.4 图像灰度图

加载进的原始图像为RGB三通道的图像,但是在大多数图像处理的操作中,我们往往需要处理的是灰度图,因此可以使用函数rgb2gray(I)函数将RGB三色图转化为灰度图,方便我们的日常处理。

点击基本图像处理按钮区的“灰度图”,显示图像灰度图和灰度直方图,熵发生相应改变,再次点击恢复

2.3.5 添加噪声

图像中的噪声主要有两种:高斯噪声和椒盐噪声。

高斯噪声:指它的概率密度函数服从高斯分布(即正态分布)的一类噪声。如果一个噪声,它的幅度分布服从高斯分布,而它的功率谱密度又是均匀分布的,则称它为高斯白噪声。高斯白噪声的二阶矩不相关,一阶矩为常数,是指先后信号在时间上的相关性。

椒盐噪声:椒盐噪声又称脉冲噪声,它随机改变一些像素值,是由图像传感器,传输信道,解码处理等产生的黑白相间的亮暗点噪声。椒盐噪声往往由图像切割引起。

在Matlab中可以使用imnoise( )函数向图像中添加噪声,通过选择不同的传入值,可以选择添加的噪声类型和均值,在平台中,可以通过在输入框中输入数字调节需要添加噪声的均值,如下图所示。

2.3.6 反值和二值化

图像反值操作部分,主要通过线性灰度映射进行实现,线性灰度映射是最简单的一种映射方法,映射函数如下:

通过改变函数中的系数a、b可以对映射进行调整,而反值则是取a=-1,b=1(最大灰度值,因为图像灰度范围已经变为0~1)时的线性灰度映射效果。

二值化则是将图像变为完全由黑和白两种灰度值表示的图像,这类图像在图像的形态学操作(如:腐蚀、膨胀、击中击不中)中应用广泛,在程序中可以通过im2bw(I)函数实现RGB三通道向二值图像的变换

2.3.7 腐蚀和膨胀

腐蚀和膨胀是图像形态学操作中的重要部分。

腐蚀是缩小和细化图像中的物体,可以看做形态学的滤波操作,这种操作是将小于结构元的图像细节从图像中滤除,下面是图像中的结构元,腐蚀实质上就是将结构元在待处理的图像集合上进行与运算的过程。

膨胀与腐蚀不同,腐蚀是一种收缩或细化的操作,而膨胀则会扩张和粗化二值图像中的物体。这两个操作所使用的的结构元是类似的。

在程序中可以通过函数imerode(I)和imdilate(I)函数实现具体操作。

点击基本图像处理按钮区的“腐蚀”或“膨胀”,可以使用使用腐蚀和膨胀,对图像进行形态学操作,再次点击恢复

2.3.8 频域操作

为了有效和快速地对图像进行处理,常常需要将原定义在图像空间的图像以某种形式转换到另外一些空间,并利用在这些空间的特有性质方便地进行一定的加工,最后再转换回图像空间以得到所需的效果。

一般将从图像空间向其他空间的变换称为正变换,而将从其他空间向图像空间的变换称为反变换或逆变换。

一般变换后的图像,大部分能量都分布于低频谱段,这对以后图像的压缩\传输都比较有利。

离散傅里叶变换(DFT)描述了离散信号的时域表示和频域表示,经过傅里叶变换可以将时域上的图像转换为频域空间进行分析,是线性系统分析和信号处理中一种非常有效的数学工具。

傅里叶变换:

Fourier变换是在图像变换中最广泛使用的一种变换,但他也存在一些问题,它的参数都是复数,在数据描述方面是实数的两倍,因此提出了离散余弦变换(DCT),离散余弦变换类似于傅里叶变换,但是只使用实数,减少了一般的计算量。

如果函数f(x)是一个连续的实偶函数,那么在进行傅里叶变换时,后面的复数项为奇函数,积分后其值为0,只剩下实数项,这样就简化了运算。

离散余弦变换:

傅里叶变换的不足之处:利用傅里叶变换只能获得信号的整个频谱,很难获得信号的局部特征,特别是对于突变信号和非平稳信号,都难以获得希望的结果;其次,在图像分析时,有时需要将信号在时域和频域中的特性或空域和频域中的特性结合起来分析,傅里叶变换不能判断某一时间段的频率成分。

为了解决这个问题,1946年Gabor先提出了加窗的Fourier变换,一定程度上克服了该缺陷,但没从根本上解决问题,因为为了提高局部可观察性,就需要加大窗口,导致计算量大增,因此提出了小波变换,小波变换以局部化函数所形成的的小波基为基底展开,它是一个时间和频率的局域变换,可以通过伸缩和平移等运算功能对函数或信号进行多尺度的细化分析。

点击基本图像处理按钮区的“频域操作”下来菜单,可以有多种频域变换供用户选择,在“处理后”图像去显示不同效果,点击“选项”、“重做”或选择“无”恢复

2.3.9 平滑操作

图像平滑处理是空域滤波的一种常见的方法,是利用像素及像素邻域组成的空间进行图像增强的方法,目的是平滑图像或锐化图像,原理是对图像进行模板运算,比如模板卷积,图像平滑操作主要是为了消除图像中的噪声。

点击基本图像处理按钮区的“平滑操作”下来菜单,可以有多种平滑变换供用户选择,在“处理后”图像去显示不同效果,点击“选项”、“重做”或选择“无”恢复

注:平滑操作主要是针对噪声,请先为图像添加一些噪声以保证效果明显且操作图像为必须事先选择为灰度图

2.3.10 锐化操作

图像锐化的主要目的是得到边缘鲜明的图像或者需要得到图像的边缘轮廓,突出图像的边缘信息,加强图像的轮廓特征。

因为边缘和轮廓都位于灰度突变的地方。所以锐化算法的实现是基于微分作用。

对一幅图像施加梯度模算子,可以增强灰度变化的幅度,对于离散函数,可以利用差分来代替微分运算

点击基本图像处理按钮区的“锐化操作”下来菜单,可以有多种锐化操作供用户选择,在“处理后”图像去显示不同效果,点击“选项”、“重做”或选择“无”恢复

注:操作图像为必须事先选择为灰度图

2.3.10 滤波操作

频域增强技术是以卷积定理为基础的,通过卷积运算,将时域空间的图像卷积,变为频域空间的相应频谱的乘积。

常用的有:低通滤波器、高通滤波器、带阻带通滤波器、同态滤波器

点击基本图像处理按钮区的“滤波操作”下来菜单,可以有多种滤波操作供用户选择,在“处理后”图像去显示不同效果,点击“选项”、“重做”或选择“无”恢复

三、子程序介绍

3.1 引言

子程序中主要设计这四个功能:制作Ins图、运动物体识别、特征匹配、人脸识别,属于偏向于应用性,并且接近于中级图像处理的操作。

3.2 使用介绍

3.2.1 打开图像

直接点击“图像1”和“图像2”面板,选择需要进行操作的两张或一张图

注:前三个功能需要选择两张图像,第四个功能只需要选择一张图像

3.2.2 制作Ins风

选择两张图像后,点击“制作Ins风”按钮,使用图像相加,对图像进行二次曝光,以制作Ins风效果,等待片刻后,在下方“结果”显示区,显示制作Ins风后的结果。

使用到的函数为imadd(X,Y)

3.2.3 运动物体检测

图像间的减法运算通常用于提取两图之间的差异,以及去除背景等方面。在图像中运动物的检测中,通过前后两个图像的减法运算,可以了解运动物体移动的程度,计算出运动速度,并画出移动轨迹

选择两张图像后,点击“运动物体检测”按钮,使用图像相减,检测两帧之间的运动物体,等待片刻后,在下方“结果”显示区,显示运动物体检测后的结果。

使用到的函数为imsubtract(X,Y)

3.2.4 特征匹配

一幅图像中包含的信息纷繁复杂,光一个通道的像素就有上千个,图像还包含三个通道,每个通道的灰度级还是8bit量化的,处理起来是十分消耗数据计算和内存的,因此我们通常寻找一些图像中的“具有代表性”的点,通过对这些点进行分析、计算,来反映图像中的信息,寻找几幅图像之间的关联。

特征点有很多种类,可以是角点(如比较著名的Harris角点,图像灰度梯度变化强烈的点)、边缘点等等,但它们都有一个共同的目的:在不同的图像中计算机还可以认识它。所以,还有一些特征点不仅用反映特征点本身和附近点的的灰度变化规律进行不同图像间的识别,还在考虑了图像的旋转和尺度变化后,添加了描述子,其中十分著名的算法是SIFT(尺度不变特征变换),另外还有一些让人们广泛接受的算法,如:SUFT、ORG等等。

在这里因为Matlab没有内嵌SIFT算法,我仅使用Matlab自带的特征检测及匹配算法,进行两幅图像间的特征匹配。

由于篇幅及任务要求,本文对涉及到的算法原理并不给出更深层次的介绍。

选择两张图像后,点击“特征匹配”按钮,使用Matlab自带的特征检测和匹配算法,进行两图像间特征匹配,等待片刻后,在下方“结果”显示区,显示特征匹配后的结果。

3.2.4 人脸识别

整体思路是寻找图片中最大的连通域,将其认定为人脸。

第一个环节均值滤波,是为了减弱图像的相关细节部分,以免毛刺影响后期连通域的形成,二值化方便形态学处理,减少运算量。考虑到人脸有黑人和白人黄种人,黑人肤色较深,在二值化之后面部区域不容易形成较大的连通域,如果采取形态学边界提取的办法,就可以避免这个问题,形态学边界提取,只要结构元素够大,也可以形成较大的封闭连通域。

然后就是纵向闭合操作,这一步我选择采用竖向长条状的结构元素进行闭合运算,因为人的脸部和颈部以及头发和衣物等等都是纵向分布的,在进行形态学边界提取的时候,容易将这些靠近的成分割裂开来,这对连通域的判断极为不利,所以用竖向长条状的结构元素在在纵向进行闭合运算,将脸部上下部的区域重新连接起来。

紧接着我又用横向长条状结构元素进行横向腐蚀运算,这是因为,人的头部以下的身体部分存在有大量连通域的时候,容易对最大连通域的判决产生干扰,又因为下半部分,多半呈纵向分布,通过横向腐蚀可以将这些大块的连通域割裂开来,但是要注意的是,割裂程度不应太大,否则会使得上一步闭合操作丧失意义。

接着,由于背景杂物等因素,同样也会产生大量连通域,这会对最后结果的判决产生干扰,因此要予以剔除。

进行了层层筛选之后,在剩下的连通域里面挑一个最大的连通域,并且尺寸形状满足要求的用矩形框框起来作为人脸检测结果。


总结

本文对图像综合处理平台的功能、使用方法、算法原理等进行了介绍,为用户呈现了一款新型简单易用的图像处理平台,同时也为数字图像处理课程的教学贡献了一份力量。

同时在编写此应用平台的过程中,作者也对本课程学到的大部分知识进行了充分的复习,感觉收获巨大,另外,作者还对图像形态学处理、特征匹配、人脸识别等中级图像处理领域进行了自主学习,拓展了事业,补充了图像处理知识领域的空白,具有十分重要的意义。

本文创新点如下:

  1. 综合多项图像处理操作
  2. 图像熵值和RGB三通道灰度值实时显示
  3. 内嵌中级图像处理操作
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_52785580/article/details/124697974

智能推荐

关于python 中h5py库安装不上的解决办法_h5py的wheel-程序员宅基地

文章浏览阅读1.1w次,点赞12次,收藏40次。关于python 中h5py库安装不上的解决办法问题解决步骤1、先安装wheel这个库,方法就是从命令行中输入pip install wheel2、下载自己对应的h5py的版本,网址如下3、下载好了就可以用命令行来安装这个库了问题最近在学吴恩达的深度学习,想着根据看的内容写点代码,但是吴恩达给的猫的数据是.h5格式的需要python中的h5py这个库的支持,但是在安装的过程中总是安装不上,先是用pip,然后用pycharm自带的下载,都是安装很长时间都安装不上,在网上查了许多教程貌似都挺麻烦的,后来用w_h5py的wheel

SSMS18.11安装失败,挂起的重启正在阻止完成安装过程_ssms安装卡住-程序员宅基地

文章浏览阅读1.2w次,点赞2次,收藏12次。安装ssms的时候卡在界面看官方ssms的安装教程,发现Micros Visual Studio Tools for Applicantions 2017是ssms下载的时候配套的库,应该是安装的时候卡在Micros Visual Studio Tools for Applicantions 2017的安装上面,所以决定从官方手动下载这个工具库。您尝试安装的产品版本比此计算机上已经安装的版本低,分析应该是我下载的Visual studio 2022版本过高,不支持下载mvs .._ssms安装卡住

[附源码]Python计算机毕业设计服装销售商城系统_分销系统开源 python-程序员宅基地

文章浏览阅读206次。项目运行环境配置:Pychram社区版+ python3.7.7 + Mysql5.7 + HBuilderX+list pip+Navicat11+Django+nodejs。项目技术:django + python+ Vue 等等组成,B/S模式 +pychram管理等等。环境需要1.运行环境:最好是python3.7.7,我们在这个版本上开发的。其他版本理论上也可以。2.pycharm环境:pycharm都可以。推荐pycharm社区版;_分销系统开源 python

Docker启动时报错:We could not resolve DockerHub using DNS._unable to retrieve dockerhub-程序员宅基地

文章浏览阅读230次。Docker启动时报错:We could not resolve DockerHub using DNS.解决方法:依次检查Firewalld、NetWorkManager、selinux的状态,并关闭关闭Firewalldsystemctl status firewalldsystemctl stop firewalldsystemctl disable firewalld..._unable to retrieve dockerhub

LightOJ1213 Fantasy of a Summation —— 快速幂-程序员宅基地

文章浏览阅读79次。题目链接:https://vjudge.net/problem/LightOJ-12131213 - Fantasy of a SummationPDF (English)StatisticsForumTime Limit:2 second(s)Memory Limit:32 MB...

swiper 前进后退按钮的显示和隐藏_swiper隐藏箭头显示-程序员宅基地

文章浏览阅读4.1k次。swiper 前进后退按钮的显示和隐藏鼠标进入和离开时,前进后退按钮显示和隐藏<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="https://unpk_swiper隐藏箭头显示

随便推点

技术人,为什么需要构建知识图谱_知识图谱构建什么人需要弄-程序员宅基地

文章浏览阅读2.4k次。转载自:http://geek.csdn.net/news/detail/132909 这个时代,信息极大丰富,人每时每刻都被各种各样的知识、信息轰炸着。如何有效的选择对自己有价值的知识,如何构建一个独属于自己的知识体系并让它为自己创造价值,变得越来越重要。只有知识经过了你的选择和应用,内化为自己的隐性经验,纳入到你的知识体系中,才能真正地为你创造财富。怎样才能建立自己的知识体_知识图谱构建什么人需要弄

解决c++读入文件时多读一个字符_c++>>读取时多一个-程序员宅基地

文章浏览阅读2.4k次,点赞6次,收藏14次。问题阐述在用 c++ ifstream 读入文件是使用 eof() 函数判断结尾总会多出一个字符产生原因其实 EOF(end of file) 这个文件结束标志是在文件的最后一个字符之后的,当读入最后一个字符的时候其实文件并没有读到 EOF 标志,只有下一次读的时候才会读到 EOF,但是在读到 EOF 的时候如果未加处理还是会把 EOF 的值看做一个字符输出,故以下代码总会多输出一个字..._c++>>读取时多一个

企业BI系统应用的切入点及五大策略_信息系统需求分析的切入点-程序员宅基地

文章浏览阅读2.7k次,点赞12次,收藏2次。从技术的角度来看,BI的技术正在走向成熟,处于一个发展的阶段,但它促使了BI的应用在成本方面开始逐步的降低,越来越多的企业在BI应用方面取得了成功。从实施的角度来出发,实施商业智能系统是一项复杂的系统工程,整个项目涉及企业管理,运作管理,信息系统,数据仓库,数据挖掘,统计分析等众多门类的知识. 因此用户除了管理咨询要选择合适的商业智能软件工具外还必须按照正确的实施方法才能保证项目得以成功。_信息系统需求分析的切入点

科赫雪花绘制- -Python + pyinstaller 打包 生成可执行程序_雪花。ico-程序员宅基地

文章浏览阅读1.6k次,点赞4次,收藏8次。科赫雪花绘制- -Python + pyinstaller 打包 生成可执行程序科赫曲线是一种像雪花的几何曲线,所以又称为雪花曲线,它是de Rham曲线的特例。科赫曲线是出现在海里格·冯·科赫的论文中,是分形曲线中的一种。(百度百科)代码目标:绘制一个由三阶的科赫曲线构成的雪花cmd命令目标:1、导入第三方库 pyinstaller2、打包代码,将其转成可执行文件(同时把自己找的nam..._雪花。ico

数学之美——自然常数e小故事和宇宙第一公式_数学之美 常数e-程序员宅基地

文章浏览阅读2.1k次,点赞4次,收藏6次。自然常数小趣事宇宙第一公式:欧拉公式伯努利微积分_数学之美 常数e

2021电赛F题openmv和K210调用openmv api巡线,完全开源。_k210 vs openmv-程序员宅基地

文章浏览阅读1.2w次,点赞30次,收藏363次。记录下201电赛F题的openmv 和 K210巡线吧,当时是借鉴了网上有个老哥的想法,也找不到是那个老哥了,抱歉了。本人菜鸟一枚,大佬们有不对的地方请指出。_k210 vs openmv