数字图像处理-绪论

news/2024/10/22 18:28:24/

数字图像处理-绪论

文章目录

    • 前言
    • 一、闲谈
    • 二、什么是数字图像处理?
      • 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):#BIG[row,col+1]=(int(img[row,col])+int(img[row,col+2]))/2#OIG[row+3,col+2]=(int(img[row+3,col+1])+int(img[row+3,col+3]))/2#EIG[row+1,col]=(int(img[row,col])+int(img[row+2,col+2]))/2#LIG[row+2,col+3]=(int(img[row+3,col+3])+int(img[row+1,col+3]))/2#MIG[row+3,col]= (int(img[row+2,col])+int(img[row+3,col+1]))/2#DIG[row,col+3]=(int(img[row,col+2])+int(img[row+1,col]))/2#GIG[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#JIG[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]))/4IR = np.copy(img)
for row in range(0,h,4):for col in range(0,w,4):#CIR[row,col+2]=(int(img[row,col+1])+int(img[row,col+3]))/2#FIR[row+1,col+1]=(int(img[row+2,col+1])+int(img[row,col+1]))/2#HIR[row+1,col+3]=(int(img[row+2,col+3])+int(img[row,col+3]))/2#KIR[row+2,col+2]=(int(img[row+2,col+1])+int(img[row+2,col+3]))/2#GIR[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 COLUMNIR[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 RAWIR[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):#FIB[row+1,col+1]=(int(img[row+1,col])+int(img[row+1,col+2]))/2#IIB[row+2,col]=(int(img[row+1,col])+int(img[row+3,col]))/2#KIB[row+2,col+2]=(int(img[row+1,col+2])+int(img[row+3,col+2]))/2#NIB[row+3,col+1]=(int(img[row+3,col])+int(img[row+3,col+2]))/2#JIB[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 ROWIB[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 COLUMNIB[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.ppmy.cn/news/79063.html

相关文章

哪个产品功能重要?KANO模型帮你

哪个产品功能重要?KANO模型来帮你 模型工具可以协助思考和系统化改进 KANO模型是小日本一个教授提出 趣讲大白话:往往,怎么思考,比思考什么重要 【趣讲信息科技175期】 **************************** 东京理工大学教授狩野纪昭(No…

Netty重试一定次数后调用System.exit(n)退出应用程序(二)

System.exit()方法 原型:System.exit(int status) 其功能主要是调用Runtime.getRuntime().exit(status); 作用是终止当前正在运行的Java虚拟机,这个status表示退出的状态码,非零表示异常终止。(可以返回给其他进程的调用者一个调用的返回码…

shiro环境搭建

源码部署 这种方法相对复杂,如果不需要分析源码直接用docker就行 前置条件:Maven Ideal Tomcat 下载方式1:https://codeload.github.com/apache/shiro/zip/shiro-root-1.2.4,然后将文件夹导入ideal下载方式2:将shiro…

Java中链表的实现(超详细)

在Java中,链表可以通过创建节点和链接节点来实现。以下是一个简单的链表实现示例: public class LinkedList {Node head; // 头结点// 节点类class Node {int data;Node next;Node(int d) {data d;next null;}}// 在链表头部插入节点public void push…

Linux - 第17节 - 网络基础(应用层三)

1.HTTPS协议 1.1.HTTPS简介 HTTPS也是⼀个应⽤层协议,是在HTTP协议的基础上引⼊了⼀个加密层。 HTTP协议内容都是按照文本的方式明文传输的,明文传输是不安全的,所以现在主流的解决 方式是在http所在的应用层和tcp所在的传输层之间加一层SSL…

OS7安装rabbitmq

1.卸载存在的rabbitmq 停止rabbitmq服务: systemctl stop rabbitmq-server 查看rabbitmq安装的相关列表: yum list | grep rabbitmq 卸载rabbitmq已安装的相关内容: yum -y remove rabbitmq-server.noarch 查看erlang安装的相关列表: yum list | grep erlang 卸…

数据库知识点

1索引 介绍 索引本质上是一张表,保存了主键与索引字段,在对数据做频繁的查询或排序时,可在某些字段上添加索引,提高检索的的效率,降低IO成本,并可以使用索引列,对数据进行排序,降低…

10 对象和类

1.访问控制和数据隐藏 公有成员函数是程序和对象的私有成员之间的桥梁,提供了接口 2.类和结构 结构的默认访问类型是:public 类的默认访问类型是:private 3. 成员函数的内联 定义位于类声明中的函数,为内联函数 也可以现在类内进行…