# 图像处理应用系统的开发
# 平台选择
对于本实验,我选择的编程语言是python,开发平台是pycharm+anaconda,选择python作为我的开发语言的原因是,python是一种语法简单的脚本化语言,python可以调用很多第三方库,包括我采用的当下比较热门的图像处理库OpenCV,学习成本较低,代码可读性也很高。选择pycharm的原因是,比起python自带的IDE,它内置了语法补全、语法高亮的功能的功能,最新版的pycharm也可以一键安装所需的python版本,非常方便,同时加上anaconda,它包含了许多开发需要的python科学包,如numpy等,并且可以方便的使用conda命令,比起pip命令更加方便。
# 处理技术介绍
(如果是算法设计,需要给出算法的基本思想介绍;如果是媒体处理,需要给出处理的基本思路)
1. 阈值二值化:这里我采用的是二分阈值化,实现非常简单,首先,图像必须转化为灰度图像,对于RGB空间而言,需要将他们取平均,得到的为灰度值,对这个灰度图像设置一个阈值,超过这个阈值的像素点,显示为黑色图像,低于这个阈值的像素点设置为白色,阈值范围在[0,255]。
2. 边缘检测:边缘是指图像中图像像素值变化明显的位置。这些变化明显的位置常常是图像中需要关注的位置,对这些关键位置的检测,就叫做边缘检测。也就是需要对这些位置求导数,这里一般有两种常用的算子,我采用了canny算子,即梯度方向的二阶导数过零点,但首先需要使用高斯滤波来降噪,以排除噪点的影响(为了说明高斯滤波降噪的重要性,我设置了一个check方法来对比),接着使用canny算子来计算边缘部分, 在获得梯度大小和方向后,将对图像进行全面扫描,以去除可能不构成边缘的所有不需要的像素。为此,在每个像素处,检查像素是否是其在梯度方向上附近的局部最大值,最后采用双阈值法得到最终图像,它的原理是,在非极大值抑制后的边缘点中,设置两个阈值TH和TL,梯度值超过TH的为强边缘,小于TH大于TL的为弱边缘,小于TL的不是边缘,可以肯定的是,强边缘必然是边缘点,因此必须将T1设置的足够高,以要求像素点的梯度值足够大(变化足够剧烈),而弱边缘可能是边缘,也可能是噪声,如何判断呢?当弱边缘的周围8邻域有强边缘点存在时,就将该弱边缘点变成强边缘点,以此来实现对强边缘的补充。最终得到了一张边缘检测之后的视频图像。
3. 轮廓检测:算法是将所有沿着相同的连续点的曲线设置为相同的颜色,首先把图像去噪处理,然后转化成二值图,对于这个二值化的图像,掏空内部点,绘制轮廓,然后将绘制出的轮廓在原图像上显示即可。
4. 图像滤波:在尽量保持图像原始特征的前提下,对图像的噪声进行抑制,原理上是采用一个滤波器进行滤波操作,滤波是一个邻域算子,根据周围像素点的值来确定该点像素点的值,这里我实现了两种滤波操作,高斯滤波和均值滤波,均值滤波的实现方式比较简单,就是对一个像素去5*5的像素和,再取平均数,用这个平均数去替代这个像素点的值,直至所有像素点均完成迭代,高斯滤波是采用一种线性平滑滤波器,对于服从正态分布的噪声有很好的抑制作用。对比均值滤波,其不同在于它的滤波器的模板系数随着距离模板中心的增大而减小(服从二维高斯分布)
5. 色彩转换,这个功能较为简单,主要是实现了不同色彩空间的转化功能,我选择实现的是RGB到HSV的颜色空间转化功能,然后通过调控色调和饱和度,再映射回RGB空间可以看到色彩转换后的结果。
6. 提高对比度:首先通过计算得到一个对比度阈值,然后将其进行(8,8)的直方图均衡化操作,然后将这个操作应用到每一帧的图像上,采用的同样是先转化为其他的颜色模型,这里我选择转化为lab模型,然后进行对比度增强操作,再转化到RGB空间即可
7. 人脸识别和笑脸识别:人脸识别主要是采用基于harr特征的级联分类器进行实现,级联分类器的函数是通过大量带人脸和不带人脸的图片通过机器学习得到的。对于人脸识别来说,需要几万个特征,通过机器学习找出人脸分类效果最好、错误率最小的特征。训练开始时,所有训练集中的图片具有相同的权重,对于被分类错误的图片,提升权重,重新计算出新的错误率和新的权重。直到错误率或迭代次数达到要求。这种方法叫做Adaboost,最终的分类器是一个强分类器,它是众多弱分类器的组合,实现上首先调用分类器函数选出人脸区域,然后再把人脸区域绘制出来即可,同理如果要进行人眼检测,就要用训练好的人眼的配置文件,然后基础区域选择人脸区域,画出人眼即可。
8. 更加精确的人脸识别:在做人脸识别的过程中,由于OpenCV内置的级联分类器只是靠机器学习原理进行分类,虽然即便是可以经过自己的样本经过正样本和负样本的训练,但经训练后发现效果仍旧不好,因此,我决定采用深度学习的keras和TensorFlow框架搭建的CNN(卷积神经网络)去训练一个自己的分类器。训练过程采用我自己的1000张样本以及同学的1000张样本实现,训练时采用交叉验证的思想随机划分数据集,因为是小样本学习,训练过程采用我的cpu,最终训练的时长为2h左右,使用时首先采用OpenCV框选出人脸区域,然后将人脸区域传入得到对应的分类标签,再根据标签来判断是自己还是他人。
# 本实验的设计性和创新性体现
1. 将OpenCV这一python大名鼎鼎的图像处理库与当下比较简易的图形化界面技术相结合,做到了可以让用户通过简单的操作来直观地感受课堂中讲授的部分图像处理技术的结果,如高斯滤波,阈值二分类、边缘检测等,操作简单且不同功能之间的切换迅速,代码的编写也经过多次重构,纯按照相关原理编写,有利于后续的学习。
2. 考虑到OpenCV自带的级联分类器的人脸识别作用的局限性,即只能识别出有人脸,但不能识别出是谁的人脸,且识别的准确度也有待提升,因此了解了CNN在人脸识别中的用法,当把图像矩阵化后,规定一个权值矩阵,这个权值与图像结合保证每个像素点都被结合一起,并经过卷积运算得到一个新的矩阵,经过多次卷积运算后的图像进入池化层,对于卷积后的图像只按照规则取部分像素点,该操作用于减少训练量,然后全连接层用于生成和输入时相同量的像素图,最后输出层加入损失函数的计算,用于预测误差,一旦前向传播完成,反向传播就会开始更新权重与偏差,以减少误差和损失。而后自己采集数据并编写程序训练了一个CNN的人脸识别分类器,可以识别出某一张图像是不是本人,可以与OpenCV的识别情况进行对比,直观地感受区别。
### 实现步骤
**图像处理系统主题部分代码**
```python
#导入相关包
import PySimpleGUI as sg
import numpy as np
import cv2
from predict import *
# 打开内置摄像头
cap = cv2.VideoCapture(0)
# 背景色
sg.theme('Reddit')
# 定义窗口布局,创建不同功能的按钮
layout = [
[sg.Image(filename='', key='image')],
[sg.Radio('默认状态', 'Radio', True, size=(10, 1))],
[sg.Radio('阈值二值化', 'Radio', size=(10, 1), key='thresh'),
sg.Slider((0, 255), 128, 1, orie
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
资源包含文件:课程lunwen+源码+答辩PPT 详细介绍参考:https://biyezuopin.blog.csdn.net/article/details/124643500?spm=1001.2014.3001.5502
资源推荐
资源详情
资源评论
收起资源包目录
基于Python的人脸人眼图像识别处理系统.zip (23个子文件)
基于Python的人脸人眼图像识别处理系统 课程论文.docx 5.12MB
基于Python的人脸人眼图像识别处理系统 源码
find_path.py 30B
main.py 9KB
predict.py 4KB
make_cnn.py 10KB
LICENSE 1KB
get_data.py 1KB
手势识别.py 2KB
.gitignore 2KB
face_dataset.py 2KB
README.md 20KB
截图
图片6.png 704KB
图片2.png 67KB
6(BMTGOVGN42HGLP@ENLF}F.png 476KB
TN}]9{}R(XN3~_FJ07OT}C5.png 336KB
图片3.png 49KB
EAK6`%T]R`]]~CYGGY1P%QS.png 40KB
图片1.png 32KB
图片4.png 371KB
9UFCYT$P~ASQR_@C0NVCOHE.png 164KB
)~T@FF$TWUVKT{}1D6N[Z$N.png 145KB
图片5.png 674KB
基于Python的人脸人眼图像识别处理系统 答辩PPT.pptx 6.26MB
共 23 条
- 1
资源评论
- 小米CEO创始人雷军2022-12-22终于找到了超赞的宝藏资源,果断冲冲冲,支持!
- weixin_466314202023-06-12资源内容详细,总结地很全面,与描述的内容一致,对我启发很大,学习了。
- m0_743485432022-11-02资源简直太好了,完美解决了当下遇到的难题,这样的资源很难不支持~
- m0_603270182022-06-21用户下载后在一定时间内未进行评价,系统默认好评。
- fl_rr2022-12-03资源有一定的参考价值,与资源描述一致,很实用,能够借鉴的部分挺多的,值得下载。
shejizuopin
- 粉丝: 1w+
- 资源: 1299
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- java毕业设计-基于SSM框架的传统服饰文化体验平台【代码+部署教程】
- 优化领域的模拟退火算法详解与实战
- NewFileTime-x64.zip.fgpg
- 基于Python和HTML的Chinese-estate-helper房地产爬虫及可视化设计源码
- 基于SpringBoot2.7.7的当当书城Java后端设计源码
- 基于Python和Go语言的开发工具集成与验证设计源码
- 基于Python与JavaScript的国内供应商管理系统设计源码
- aspose.words-20.12-jdk17
- 基于czsc库的Python时间序列分析设计源码
- 基于Java、CSS、JavaScript、HTML的跨语言智联平台设计源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功