数字图像处理-绪论

news2024/12/26 22:46:48

数字图像处理-绪论

文章目录

    • 前言
    • 一、闲谈
    • 二、什么是数字图像处理?
      • 2.1. 什么是数字图像?
        • 2.1.1. 可见光图像
        • 2.1.2. 不可见光图像
      • 2.2. 什么是数字图像处理?
    • 三、数字图像处理的前世今生
      • 3.1. 数字图像处理的前世
      • 3.2. 数字图像处理的今生
    • 四、数字图像处理的应用
      • 4.1. 伽马射线成像
      • 4.2. X射线成像
      • 4.3. 紫外波段成像
      • 4.4. 可见光及红外波段成像
      • 4.5. 微波波段成像
      • 4.6. 无线电波段成像
    • 五、怎么对数字图像进行处理?
    • 小结、

前言

本专栏为对《数字图像处理》(作者:冈萨雷斯)一书学习与总结归纳,用于记录书中内容,以及个人理解。若有所误解与不足处,还望斧正。

一、闲谈

在这本书中,有十七页用于介绍绪论的部分。整个绪论部分的结构框架为,数字图像处理是什么?为什么要对数字图像进行处理?数字图像处理的应用有哪些?怎么对数字图像进行处理?以及数字图像处理系统的介绍五个部分。其中应用部分占比最大,诚然,如果数字图像处理没有用途的话,那么数字图像处理一书就少了些许引人入胜的韵味。整体框架的布局是值得学习的,本篇博客也将以这个框架进行展开。

数字图像的处理介质并不止计算机,还有光学仪器等物理操作,但由于本人主要利用计算机实现数据处理,因此物理手段及其他处理策略在本栏中并不会侧重说明。

二、什么是数字图像处理?

一幅图像通常把它定义为一个二维函数f(x,y),其中x和y是空间(平面)坐标。任何一对空间坐标(x,y)处的幅值f称为图像在该点处的强度或者灰度。当x,y和灰度值f是有限的离散数值时,称该图像为数字图像。数字图像处理是指借助于数字计算机来处理数字图像。

从图像处理到计算机视觉这个连续的统一体有三种典型的计算处理,即低级、中级和高级处理。

  1. 低级处理涉及初级操作,如降低噪声的图像预处理、对比度增强和图像锐化。以输入输出都是图片为特征。
  2. 中级处理涉及诸多任务,譬如(把一幅图像分为不同的区域或目标)分割,减少这些目标物的描述,以使其更适合计算机处理及对不同目标的分类(识别)。中级图像处理以输入为图像但输出是从这些图像中提取的特征(如边缘、轮廓及各物体的标识等)为特征。
  3. 高级处理涉及“理解”已识别目标的总体,以及在连续统一体的远端执行与视觉相关的认知功能。

2.1. 什么是数字图像?

然而在开始『什么是数字图像处理?』这个大问题之前,个人认为应该先了解什么是数字图像。图像,在平常认知中即为所见即所得, 从早晨睁眼到夜里入睡,几乎时时刻刻都在接受着图像信息。但我们并不会深究图像这一概念的基本构成(最小组成单位),也不会深究我们所看见的色彩变化存在着什么样的规律。

个人认为,图像是可被设备、仪器捕获的离散数据信息。根据肉眼是否直接可见,可将图像分为两大类,可见光图像和不可见光图像。
在这里插入图片描述

2.1.1. 可见光图像

可见光图像即我们肉眼所能看到的赤橙黄绿青蓝紫,本质上是由三原色构成。除了色彩丰富的图片外,还有黑白图片,这也属于可见光图像的范畴。而在电脑中,图像的常用存储策略为二维数据存储。每一个元素(像素)根据其坐标方位存放不同的数值进而实现图像在计算机中的存储。

二进制图像(黑白图像):这一类图像每个像素点非0即1。在计算机中0通常表示黑,1通常表示白。

binary_image = np.array([
    [0, 1],
    [1, 0]
])

在这里插入图片描述

灰度图像:此类图像每个像素点包含8bit颜色信息。

gray_image = np.zeros((256, 256), dtype=np.uint8)
gray_value = np.linspace(0, 255, 256, dtype=np.uint8)
gray_image[:, :] = np.tile(gray_value, (256, 1))

在这里插入图片描述

彩色图像:此类图像常用的是24位全彩色和256色图像。24位全彩色其实是由RGB三通道的数据构成,每个通道的像素都是8bit。而256色图像是单通道图像, 每个像素只使用一个8位字节来表示该像素在调色板中对应的颜色索引。由于全彩色图像可表示范围较大,此处仅模拟显示256色图像。
在这里插入图片描述

2.1.2. 不可见光图像

伽马射线成像、X射线成像、紫外波段成像、可见光及红外波段成像、微波波段成像、无线电波段成像等等。这些概念性词语以及专业获取方式,此处不一一赘述。

2.2. 什么是数字图像处理?

关于数字图像处理的方式,并未系统的学习过。但此前有做过一些对于图像的实验。比如说,角点检测、边缘检测、全景拼接等等,这些对图像进行一定的操作应该都属于图像处理的范畴。关于这一想法是否正确,且待我完成后续的学习再来回答。

关于灰度图片与彩色图片,下面扔一个之前做过的Bayer fliter相关的实验。

通过如图灰度图片:

在这里插入图片描述

与如下的三个通道对应的算子,简单来说通过计算白色区域相邻的黑色区域的均值赋值给白色区域实现不同通道的提取(详情见下方代码):

在这里插入图片描述

提取三通道的图像后,通过叠加获取彩色图片:
在这里插入图片描述

贴个代码:

h,w = img.shape
rgb = np.zeros((h,w,3),np.uint8);

IG = np.copy(img)
for row in range(0,h,4):
    for col in range(0,w,4):
        #B
        IG[row,col+1]=(int(img[row,col])+int(img[row,col+2]))/2
        #O
        IG[row+3,col+2]=(int(img[row+3,col+1])+int(img[row+3,col+3]))/2
        #E
        IG[row+1,col]=(int(img[row,col])+int(img[row+2,col+2]))/2
        #L
        IG[row+2,col+3]=(int(img[row+3,col+3])+int(img[row+1,col+3]))/2
        #M
        IG[row+3,col]= (int(img[row+2,col])+int(img[row+3,col+1]))/2
        #D
        IG[row,col+3]=(int(img[row,col+2])+int(img[row+1,col]))/2
        #G
        IG[row+1,col+2]=(int(img[row,col+2])+int(img[row+1,col+1])+int(img[row+2,col+2])+int(img[row+1,col+3]))/4
        #J
        IG[row+2,col+1]=(int(img[row+1,col+1])+int(img[row+2,col])+int(img[row+3,col+1])+int(img[row+2,col+2]))/4

IR = np.copy(img)
for row in range(0,h,4):
    for col in range(0,w,4):
        #C
        IR[row,col+2]=(int(img[row,col+1])+int(img[row,col+3]))/2
        #F
        IR[row+1,col+1]=(int(img[row+2,col+1])+int(img[row,col+1]))/2
        #H
        IR[row+1,col+3]=(int(img[row+2,col+3])+int(img[row,col+3]))/2
        #K
        IR[row+2,col+2]=(int(img[row+2,col+1])+int(img[row+2,col+3]))/2
        #G
        IR[row+1,col+2]=(int(img[row,col+1])+int(img[row,col+3])+int(img[row+2,col+1])+int(img[row+2,col+3]))/4
        #FIRST COLUMN
        IR[row,col] = IR[row,col+1]
        IR[row+1,col] = IR[row+1,col+1]
        IR[row+2,col] = IR[row+2,col+1]
        IR[row+3,col] = IR[row+2,col+1]
        #LAST RAW
        IR[row+3,col+1] = IR[row+2,col+1]
        IR[row+3,col+2] = IR[row+2,col+2]
        IR[row+3,col+3] = IR[row+2,col+3]

IB = np.copy(img)
for row in range(0,h,4):
    for col in range(0,w,4):
        #F
        IB[row+1,col+1]=(int(img[row+1,col])+int(img[row+1,col+2]))/2
        #I
        IB[row+2,col]=(int(img[row+1,col])+int(img[row+3,col]))/2
        #K
        IB[row+2,col+2]=(int(img[row+1,col+2])+int(img[row+3,col+2]))/2
        #N
        IB[row+3,col+1]=(int(img[row+3,col])+int(img[row+3,col+2]))/2
        #J
        IB[row+2,col+1]=(int(img[row+1,col])+int(img[row+3,col])+int(img[row+1,col+2])+int(img[row+3,col+2]))/4
        #FIRST ROW
        IB[row,col] = IB[row+1,col]
        IB[row,col+1] = IB[row+1,col+1]
        IB[row,col+2] = IB[row+1,col+2]
        IB[row,col+3] = IB[row+1,col+2]
        #LAST COLUMN
        IB[row+1,col+3] = IB[row+1,col+2]
        IB[row+2,col+3] = IB[row+2,col+2]
        IB[row+3,col+3] = IB[row+3,col+2]
        
rgb[:,:,0]=IR
rgb[:,:,1]=IG
rgb[:,:,2]=IB

三、数字图像处理的前世今生

3.1. 数字图像处理的前世

数字图像处理是在二十世纪初期开始发展的。在1920年代和1930年代,人们开始使用光电设备将实际物体的图像转换成数字信号。在20世纪50年代,数字计算机的出现为数字图像处理提供了强有力的支持,使得图像的处理和分析变得更加容易。

数字图像处理在医学图像处理、地质勘探、航空航天、材料检验等领域都得到了广泛的应用。随着计算机技术和数字图像处理技术的不断发展,数字图像处理已经成为一个非常重要的领域。它不仅在科学研究中得到了广泛的应用,而且在工业生产和日常生活中也得到了越来越多的应用。

3.2. 数字图像处理的今生

今生未完待续,敬请期待。

四、数字图像处理的应用

此书根据图像的信息源进行分类介绍。

4.1. 伽马射线成像

成像方法:利用放射性同位素的物质衰变所放射出的伽马射线的检测产生图像。

用途:主要用于核医学和天文观测。

4.2. X射线成像

成像方法: X射线管是带有阴极和阳极的真空管。阴极加热释放自由电子,这些电子以很高的速度向阳极流动,当电子撞击一个原子核时,能量被释放并形成X射线辐射,从而可以得到X射线成像。

用途: 医学诊断、 工业、天文学和其他领域 。

4.3. 紫外波段成像

成像方法: 当紫外辐射光子与荧光材料内原子中的电子碰撞时,它把电子提高到较高的能级,随后受激电子释放到较低的能级,并以可见光范围内的低能光子形式发光。

用途:平板印刷术、工业检测、显微方法、激光、生物成像和天文观测等。

4.4. 可见光及红外波段成像

成像方法:可见光及肉眼可见的光波,而红外波段常用于可见光图像的增强显示。

用途:计算机视觉,天文学,遥感等方面。

4.5. 微波波段成像

成像方法:获取微波反射信号实现图像的获取。

用途: 具有穿透力强、不易受光线、天气等环境干扰的特点。在军事、地质、农业等领域有一定的优势。

4.6. 无线电波段成像

成像方法:以医学为例。 该技术是把病人放在电磁场中,并让无线电波短脉冲通过病人的身体,每个脉冲将导致由病人的组织发射的无线电响应脉冲,这些信号发生的位置和强度由计算机确定,从而产生病人的一幅二维剖面图像。

用途: 主要应用于医学和天文学 。

五、怎么对数字图像进行处理?

根据此书中的介绍,要对图像进行处理首先应该要获取图像。获取到图像后根据应用场景选择图像滤波与增强、图像复原、彩色图像处理、小波与多分辨率处理、压缩等处理方式对图像数据进行预操作。然后根据图像处理场景属于形态学处理、分割、表示和描述还是目标识别,进而提取应用场景下所需的属性信息。由于本章属于绪论,对于数据处理方法更多的是介绍层面,后续会有针对性的展开介绍。

小结、

没有小结,去别的地方看看吧~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/499821.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计网笔记 01 概述 计算机网络体系结构、参考模型

文章目录 前言1、计网概述1.1 概念、组成、功能、分类1.1.1 概念1.1.2 计网组成1.1.2 计网分类 1.2 标准化工作及相关组织1.2.1 标准的分类 1.3 性能指标★★★1.3.1 速率相关性能指标1.3.2 时延相关指标 2、体系结构&参考模型★★★★★(对应王道视频7-10p 相当…

【MySQL学习】MySQL 内置函数

文章目录 一、日期函数二、字符串函数三、数学函数四、其他函数 一、日期函数 函数名称功能描述current_data()获取当前日期current_time()获取当前时间current_timestamp()获取当前时间戳date()返回datetime的日期部分date_add(date, interval d_value_type)以date为基础&…

【2023/05/07】汇编语言

Hello!大家好,我是霜淮子,2023倒计时第2天。 Share Stray birds of summer come to my window to sing and fly away. And yellow leaves of autumn,which have no songs,flutter and full there with a sigh. 译文: 夏天的鸟&…

网络学习笔记

【1】路由器与交换机的区别与联系 https://blog.csdn.net/baidu_32045201/article/details/78305586 交换机:用于局域网内网的数据转发 路由器:用于连接局域网和外网 【2】IP地址 1)IP地址是Internet中主机的标识 2)Internet中…

OpenCV学习12 用色调、饱和度和亮度表示颜色

BGR转HSV 效果&#xff1a; 代码&#xff1a; #include <iostream> #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/highgui/highgui.hpp>using namespace cv;int main() {Mat dog imread("/home/jason/work/01-img/dog.png");// -…

Codeforces Round 871 (Div. 4)——G题讲解

蒟蒻来讲题&#xff0c;还望大家喜。若哪有问题&#xff0c;大家尽可提&#xff01; Hello, 大家好哇&#xff01;本初中生蒟蒻讲解一下G. Hits Different! 上绿名喽&#xff01; G. Hits Different 题目描述 In a carnival game, there is a huge pyramid of cans with 20…

SmartSoftHelp 自定义开源C#代码生成器

​​​​​​蓦然回首终结者SmartSoftHelp开发辅助工具MiniLite2.0迷你版 V3.5 自定义生成 dbhelper Model BLL DAL sqltxt UI 方便快捷&#xff0c;支持自编码&#xff0c;自编译&#xff0c;自己修改生成代码内容和格式&#xff0c;方便快捷... 开源代码生成说明: 1.目录…

python+django汽车4S店零配件保养服务管理系统

汽车4S服务管理系统包括三种用户。管理员、普通员工、客户。 开发语言&#xff1a;Python 框架&#xff1a;django/flask Python版本&#xff1a;python3.7.7 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat 开发软件&#xff1a;PyCharm django 应用目录结构管…

vue diff算法与虚拟dom知识整理(5) 手写一个自己的h函数

本文的意义在于教会大家如何手写一个h函数 上文中 我们简单理解了一下h函数 他的作用是构建一个虚拟的dom节点 掌握这个函数还是很有必要的 首先 你想要写出来 还是得去看原版的ts代码 这边 我们没必要把太多注意力放在TS上 所以 我们这边是看ts代码 然后 仿写js代码 我们在…

Faster RCNN在pycharm中运行

文章目录 1 代码2 文件说明3 代码解析5 数据6 自制数据集6.1 创建文件夹6.2 标注图片 7 开始训练 1 代码 参考B站up主&#xff1a;霹雳吧啦Wzgit clone https://github.com/WZMIAOMIAO/deep-learning-for-image-processing 2 文件说明 首先找到faster_rcnn ├── backbone: …

PCL学习七:Features-特征

参考引用 Point Cloud Library黑马机器人 | PCL-3D点云 1. 特征描述与提取 3D 点云特征描述与提取是点云信息处理中的最基础也是最关键的部分&#xff0c;点云识别、分割、重采样、配准和曲面重建等大部分算法&#xff0c;都十分依赖特征描述与提取的结果 从尺度上来划分&…

MYSQL01高级_Linux版安装、各级别字符集、字符集与比较规则、SQL大小写规范

文章目录 ①. MySQL - linux版安装②. 字符集的相关操作③. 各级别的字符集④. 字符集与比较规则(了解)⑤. SQL大小写规范⑥. sql_mode的合理设置 ①. MySQL - linux版安装 ①. 进入mysql官网,找到安装文件 ②. 将抽取出来的文件放在linux下的opt下 MySQL Community Serv…

本周大新闻|15000nit亮度Micro OLED面世;印度市场再推行VR盒子

本周XR大新闻&#xff0c;AR方面&#xff0c;eMagin公布1.5万nit亮度的新款dPd Micro OLED&#xff1b;脑机技术AR眼镜Cognixion ONE获FDA认证&#xff1b;歌尔发布智能交互手环参考设计Link&#xff1b;Meta引入更多AR广告。 VR方面&#xff0c;23年Quest Gaming Showcase定于…

3D旋转 相册

效果展示 代码逻辑 <!doctype html> <html lang"en"> <head><meta charset"UTF-8"><meta name"Keywords" content""><meta name"Description" content""><title>3D旋…

Vue3(Vite) 通过 prism.js 实现代码高亮并实现Mac风格

prismjs漂亮的代码语法高亮插件 极致易用&#xff1a;引用 prism.css 和 prism.js&#xff0c;使用合适的 HTML5 标签&#xff08;code.language-xxxx&#xff09;&#xff0c;搞定&#xff01;天生伶俐&#xff1a;语言的 CSS 类是可继承的&#xff0c;所以你只需定义一次就能…

自动控制原理笔记-频率响应法-控制系统的频域稳定判据

目录 一、Nyquist稳定判据 1&#xff09;开环传递函数中没有积分环节&#xff08;不含s0的极点&#xff09; 2&#xff09;开环传递函数中含有积分环节&#xff08;含s0的开环极点&#xff09; 二、Bode 稳定判据 稳定的定义&#xff1a; 任何系统在扰动的作用下都会偏离原平衡…

炫技亮点 任务编排使用CompletableFuture优化业务流程

文章目录 背景CompletableFuture简介使用场景如何编排任务步骤场景一 多个任务串行执行场景二 多个步骤并行执行场景三 一个串行步骤后两个并行步骤场景四 一个步骤依赖两个并行步骤场景五 一个步骤依赖多个并行步骤同时完成场景六 一个任务依赖多个任务的任意一个完成结果 其他…

STL--stack queue deque

stack 一、stack介绍 stack是一种容器适配器&#xff0c;专门设计用于后进先出&#xff0c;其中元素仅从容器的一端插入和提取 二、stack接口 函数名称功能说明empty判断容器是否为空size返回容器容量大小top返回栈顶数据push从栈顶插入元素pop删除栈顶元素 三、stack模拟实…

【NLP开发】Python实现聊天机器人(若干在线聊天机器人)

文章目录 1、简介2、代码测试2.1 open.drea.cc2.2 api.ruyi.ai2.3 route.showapi.com2.4 api.binstd.com2.5 api.jisuapi.com2.6 api.fanyi.baidu.com2.7 aiml2.8 api.tianapi.com2.9 nlp.xiaoi.com2.10 api.qingyunke.com2.11 api.ownthink.com 结语 1、简介 AI 聊天机器人使…

Chrome远程调试

最近接触到Chrome远程调试相关内容&#xff0c;记录一下。 场景&#xff1a;使用Chrome远程调试Chromium。当能够控制目标主机执行命令之后&#xff0c;可以在该主机上建立全局代理&#xff0c;然后在自己这一边开启浏览器监听&#xff0c;接着在目标机器上执行 chrome.exe --…