数字图像处理系列(一)---绪论
发布日期:2022-02-12 16:06:53 浏览次数:6 分类:技术文章

本文共 2846 字,大约阅读时间需要 9 分钟。

chapter1–绪论

  随着疫情的影响,各个大学都开始实施线上授课。我也就算是慢慢结束这慵懒的生活。打算就这每个星期上课的内容做一点点笔记,在每个星期进行梳理,并发布出来,作为一个分享,并让大家给我这个小白看看是不是我的想法有什么错误的地方,以及还需要在那些地方进行改善,哈哈哈,下面就是内容。


1.图像处理的应用实例

人脸识别

人脸识别的过程:

即:输入图像->计算特征-> 逐一比较(库) -> 得到用户ID

质量检测

1.利用可见光的特性,可以利用一般的摄像头对物体表面进行成像,从而

对物体的表面进行分析,实现对产品的质量检测。
2.利用X X 射线的穿透能力,可以形成反映物体内部结构的图像,从而对物体
的内部结构进行分析,实现对产品的内部进行质量检测。

可见随着科技的进步,为了方便我们的生活和提高我们的生活质量,我们生活中随处可见的地方都应用到了数字图像处理技术。


2.图像的概念

####图和像

说到图我们往往会和像产生关联,在之前的时间,我一直都没有屈服什么是图,什么是像,下面我们就把这个概念给理清:

  1. 图是什么? 物体投射或反射光的分布
  2. 像是什么?人的视觉系统对图的接受在大脑中形成的印象或反映

这样说来其实图像就是客观和主观的结合。

模拟图像和数字图像

模拟图像可以用连续的函数进行表示,其函数表示为

I=F(x,y)

其主要特点是:光照强度光照位置。我们之前使用的胶片相机就是使用这个方法成像的。但是随着计算机的发展,计算机只能识别二进制,图像也向着数字化进行发展,因此产生了数字图像。

数字图像由矩阵(数列构成)。其特点是:空间位置灰度。而且还产生了像素这个概念。而数字图像就是由被称作像素的小块区域组成的二维矩阵。其是离散的,其对于单射灰度图像而已,一个像素的范围是0-255


3.什么是数字图像处理

数字图像处理就是利用计算机系统对数字图像进行各种目的的处理从计算机处理的角度可以由高到低将数字图像分为三个层次

图像处理——>图像分析——>图像理解

  • 图像处理:就是对于图像进行像素级别的处理,达到改善视觉效果的作用,主要应用于图像到图像的过程
  • 图像分析: 对图像进行分割以及对于感兴趣部分的特征提取,建立对于图像的描述。
  • 图像理解—我认为是通过图像还原对于现实事物的分析(大神的世界我不懂)

4.例子:指纹识别系统

其过程是:

  • 输入原始的灰度图像,进行去噪声(干扰信息),增强对比度(提高信息量)来实现对于整体化的增强
  • 分割,进行二值化和细化,增强局部特征(其实这步我也懵的)
  • 进行特征提取,使用库进行指纹识别匹配,输出ID

5.使用工具:

  • Visual Studio 2015 及以上(我用VS2019)
  • OpenCV 3.0 及以上()
  • Watch imag插件(用于调试时显示和监视图像变量,直接在VS软件添加扩展)

6.代码作业和例子

1.实现读取图片的功能

//实现读取图片的功能#include
#include
using namespace std;using namespace cv;int main(void){ Mat image = imread("D:/Vistual studio editor/Code/数字图像处理/1.jpg",0)//读入的是灰度图 Gray=R*0.3+G*0.59+B*0.11 if(image.empty()) { cout<<"无法找到文件!"<

2.实现读取摄像头

//实现读取摄像头#include
#include
using namespace std;using namespace cv;int main(void){ //打开摄像头 VideoCapture objVideo; objVideo.open(1) while(1) { Mat image; objVideo>>image; imshow("image", image); //显示图像 waitkey(10); } return 0; }

3.对像素的灰度值进行灰度获取(放入文本中)和进行灰度的反转

#include
#include
#include
#include
int main(){ Mat mImg = imread("D:/图片/壁纸/动漫/1.jpg", 1); if(mImg.empty()) { cout<< "文件无法找到,请先检查路径是否正确" << endl; return -1; } Mat grayImage; cvtColor(mImg, grayImage, COLOR_BGR2GRAY); //将图像转换为灰度图 ---Gray=R*0.3+G*0.59+B*0.11 //获得图像高度和宽度 int height_image = grayImage.rows; int width_image = grayImage.cols; //设置文件流查看全部灰度,以写模式打开文件 ofstream outfile; outfile.open("D:/学习课程/大三下学期/数字图像处理/gray.txt"); //查看各个像素的灰度 for (int row = 0; row < height_image; ++row) { for (int col = 0; col < width_image; ++col) { //获取灰度图像row行,col列的像素值,最大255 int gray_number = grayImage.at
(row, col); outfile << gray_number << ' '; //输入文本 //修改灰度,进行倒反过来 grayImage.at
(row, col) = 255 - gray_number; } outfile << ' ' << endl; } outfile.close(); namedWindow("change_image", WINDOW_AUTOSIZE); //窗口始应图像大小 imshow("change_image", grayImage); waitKey(0); return 0;}

第一周的数字图像处理学习就告一段落了,之后我会每一星期都学一篇来巩固一下学习的过程,一起加油!!!

转载地址:https://blog.csdn.net/weixin_46563862/article/details/105096763 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Markdomn语法基础
下一篇:hexo搭建个人博客的过程

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年03月31日 17时48分37秒