数字图像处理学习笔记之一 DIP绪论与MATLAB基础

写在前面的话

数字图像处理系列的学习笔记是作者结合上海大学计算机学院《数字图像处理》课程的学习所做的笔记,使用参考书籍为《冈萨雷斯数字图像处理(第二版)(MATLAB版)》,同时学习过程中会参考网络学习资源。对于数字图像处理的学习不可能仅仅依靠作者所写的这一系列笔记,而是需要花时间和精力学习,本文只可作参考和交流之用。由于涉及此学科不久,在学习过程中难免存在错误,请读者不吝赐教。


数字图像处理绪论

数字图像处理(DIP)的研究目标和处理对象:

DIP的研究目标是获取信息,处理对象是数据。信息是图像或任意一种对象的具有价值的属性,而数据是信息的符号化载体。

*在人所接受的信息中约有60%来自视觉,20%来自听觉,剩余20%来自触觉、嗅觉、味觉(当然第六感未纳入考虑啦)。这一数据来源未加详察,只是通过这一或真或假的数据可以看出视觉信息对于人类信息获取的重要性。

图像、数字图像、数字图像处理

图像是可以使人产生视觉感知的实体,数字图像是图像在计算机内的存在形式,数字图像处理则是通过计算机或其他信息技术对数字图像进行处理,从而实现预期目的。

*数字图像处理并非只局限于可见光谱范围,从伽马射线到无线电波的整个波段,只要能够使用成像机器获取图像并转换成数字图像,都可使用DIP技术进行处理。

MATLAB在DIP中的作用

“MATLAB一切皆矩阵”,MATLAB提供了强大的数值计算功能,在MATLAB中将图像作为矩阵处理。除了基本的工具,MATLAB补充了许多针对特定应用需求的工具箱,图像处理工具箱(Image Processing Toolbox)就是其中之一。

对于MATLAB的应用,只要有C语言的良好基础,就能得心应手。

DIP中MATLAB的学习

作者建议首先有C语言基础,不需特意学习MATLAB,在使用中慢慢积累就很有效。

图像工程(宏观视角看DIP)

图像工程有三个层次:图像处理(像素级处理)、图像分析(从像素到关于目标的描述数据)、图像理解(图像中有什么目标、目标间有什么关系、图像是什么场景、如何应用场景等)。

图像处理的内容

  1. 图像增强:增强有用信息,减少干扰信息,改善视觉质量。
  2. 几何处理:放缩、旋转、配准等。
  3. 图像复原:模糊图像复原等。
  4. 图像重建:由截面的投影,重建该截面(如CT技术)。
  5. 图像编码:JPEG等,主要考虑压缩。
  6. 模式识别:文字、指纹、人脸识别等。

图像处理与计算机图形学

图形虽然是图像的一种,但图像处理更倾向于处理来源于现实的图像(采样而得),而计算机图形学中的图形是由一组数学公式描述得到的。因此图像处理与计算机图形学是独立的学科方向,偶有交集。

图像的数字化

图像数字化过程描述为:采样、量化、编码。

采样一般是等距采样,在图像上构造直角坐标系xOy,对图像的横纵坐标进行等距划分后获得像素点(其实是一个个小方格[ia/N,(i+1)a/n)*[jb/M,(j+1)b/M))。

量化是在像素点内取一个代表值作为像素值。

编码采用PCM编码(脉码调制)。

*PCM是按照既定规则将时间连续、取值连续的模拟信号转换为时间离散、取值离散的数字信号。

空域与频域

空域和频域是数字图像处理的两个方面,有的问题在空域处理简单,有的在频域更方便。关于空域和频域的详细说明可以点击链接


MATLAB基础

命令行、编辑器、工作区、当前文件夹

在MATLAB窗口中,除了有Windows窗口常见的标题栏、菜单栏、工具栏之外,还有

数据类、运算符、流控制

在面向过程的程序设计语言中,数据类型、运算符和流程控制是必须面对的,但是都基本与C一致,可以在使用过程中需要用到时再查询。

*MATLAB提供的数据类型除了常见的基本数据类型外,还有函数句柄、单元数组和结构,后文将会逐一展开。

索引技术

索引在各种程序设计语言中都存在,但是在MATLAB中显得尤为重要,因为MATLAB的一切都是矩阵,对矩阵的操作离不开索引。按照任意一本教材使用几次就会熟悉索引了。

MATLAB函数定义

MATLAB函数(M函数)标准格式如下:

  • 函数定义行
  • H1行(概要信息行)
  • 帮助文本
  • 函数体
  • 注释

根据标准格式定义一个示例函数(定义于eg_sum.m文件中)如下:

function [ s ] = eg_sum( n )
%Calculate the sum of numbers from 1 to n.
%This function is a simple example of function definition. It is used to calculate the sum of a series of numbers from 1 to n.
s=0;
for i=1:n
s=s+i;
end
end

函数句柄(Function Handle)

函数句柄使用函数句柄运算符@来创建。函数句柄的本质是调用函数的所有信息,将这些信息通过函数句柄变量存储起来,在后续调用时直接使用函数句柄来调用,可以省去在众多函数信息中查询目的函数信息的时间。在一个程序高频使用的函数,如果使用函数句柄来存储其调用信息,则可以起到优化程序性能的作用。

函数句柄有两类,一类是命名函数句柄(又称简单函数句柄),另一类是匿名函数句柄(类似于C宏定义)。

命名函数句柄示例:使用函数句柄f来存储sin函数的调用信息

[email protected];
f(pi/4);

匿名函数句柄示例:使用函数句柄f来存储表达式y=x.^2的调用信息,@(x)中的x给出了输入参数列表

[email protected](x) y=x.^2;
f(3);

或:

[email protected]() sin(pi/4);

单元矩阵

单元矩阵其实就是将多个类型不限的变量组合到一起,运算符是花括号{},但是作者认为并不常用,故省略了。但是有一个细节值得一提,单元矩阵创建时是将内容变量创建了一个副本,因此改变原变量并不能改变单元矩阵。

结构

类似于C结构体,使用点运算符.取元素。

计时器策略

计时器一般是为了测量程序的运行时间,是效率的量化表现。MATLAB有专门用来计时的函数,也可以自己制作计时器。

  • 使用clock()函数获取当前时间,在首尾各获取一次,差值即为用时。
  • 使用tic()、toc()函数配对使用来计时。
  • 使用timeit()函数来计时,具体用法请自行查阅。

程序基本优化

MATLAB程序的基本优化策略有两种:预分配和向量化循环。

预分配如其字面意思,即在矩阵使用之前做一次初始化,主要是在循环过程中动态变化矩阵尺寸时。MATLAB明明可以自动修正矩阵的尺寸,为什么非要在使用前初始化呢?原因很简单,看似是自动修正矩阵尺寸,其实背后的实现较为复杂,至少要重新申请空间和赋值原数组,这些操作的实现会耗费大量时间。

向量化循环在旧版本的MATLAB中使用较多,而且效果显著。其原理是使用矩阵运算符、索引技术、库函数来完全消除循环。比如使用A=A>threshold;这条语句代替for循环判断,从而提高效率。但是在新版本的MATLAB中,已经能够自动编译for循环来加速,因此向量化循环已经不需要程序员来考虑了。

时间: 2024-10-14 04:40:38

数字图像处理学习笔记之一 DIP绪论与MATLAB基础的相关文章

MATLAB数字图像处理学习笔记

我们都知道一幅图片就相当于一个二维数组,可以用一个矩阵来表示,而MATLAB可以说就是为矩阵运算而生的,所以学习图像处理,学习MATLAB势在必行! 一. MATLAB基础知识 1. 读取图像 1 %imread ('filename') 2 f = imread ('lena,jpeg')%图片必须和工程在同一个目录下 3 f = imread ('E:\MATLAB\lena,jpeg')%加上路径进行读取图像操作 4 f = imread ('.\MATLAB\lena,jpeg')%读取

数字图像处理学习笔记之二 灰度变换与空间滤波

综述 对于图像的处理有两种思路,一种是对图像本身的直接处理,即空间域处理:另一种是在频率域进行处理.关于空域和频域,可以参考<傅里叶变换--另一种世界观>.在空间域的处理相对简单,因此首先介绍的是空域处理法.空域中有两种重要处理方法:灰度变换(或亮度变换)和空间滤波(或邻域处理.空间卷积). 空间域处理:灰度变换和空间滤波 g(x,y)=T[ f(x,y) ] 空域处理的思路可以由上式表达.f 即是原图,T 是在点(x,y)指定邻域上的图像处理算子,g 是输出图像.当邻域为1*1大小时,T 为

数字图像处理学习笔记:灰度变换

imadjust函数是MATLAB的一个工具箱函数,一般的语法调用格式为: g=imadjust(f,[low_in  high_in],[low_out  high_out],gamma) 把图像f 灰度变换到新图像g的过程中,f 中灰度值低于low_in的像素点在g中灰度值被赋值为low_out,同理,f中灰度值高于high_in的像素点变换到g时其灰度值也被赋值为high_out;而对于参数gamma,当gamma<1时,灰度图像靠近low_in的灰度值较低像素点灰度值变高,其灰度变化范围

Nani_xiao的图像处理学习笔记:透视变换(二):X,Y方向校正原理

接着上一篇进行,上一篇为: Nani_xiao的图像处理学习笔记:透视变换(一) 这里采用一点透视投影 X 方向校正 图2 是透视投影的灭点原理图.在不考虑其他畸变的情况下,边ab 和边cd 平行于X 轴, 而边ac 和边bd 则和X 轴成一定的夹角.根据a .b .c .d 点的图像坐标,可以求出透视投影的灭点e 的坐标(mx , my)(在图像坐标系下). 然后根据透视缩小效应, 对其进行反运算, 进行X 方向的校正.在X 方向的校正中, 可以选择图像高度(0- H - 1)任意一条水平线的

Nani_xiao的图像处理学习笔记:透视变换(三):校正步骤

接着上两篇进行: Nani_xiao的图像处理学习笔记:透视变换(一) Nani_xiao的图像处理学习笔记:透视变换(二):X,Y方向校正原理 图像透视变换校正步骤为: 1.      选取控制点的坐标: 2.      如果控制点存在倾斜现象, 则进行Y方向和X 方向错切: 3.      计算灭点的坐标(mx ,my ): 4.      进行X 方向的校正, 并输出校正后的图像: 5.      进行Y方向的校正, 并输出校正后的图像. 这里先把步骤列出,以后再根据实际效果补图

数据库系统概论学习笔记-第一章绪论

数据库系统概论-第一章绪论 写在前面:寒假来临,除却走亲戚和同学聚餐,王者荣耀等游戏上分花销一点时间之外,自认为要花一点时间学习数据库和Android,以此来为下学期和共建项目打下一丢丢的基础.为了鞭策自己,定了一个小目标( 一个亿),每个两至三天我会发表一篇数据库或Android学习笔记.还是那句话你的才华撑不住你的野心时,那就静下来学习吧 . 数据库系统概述 数据库常用的术语和基本概念 数据库基本概念 数据(Data) 数据是数据库中存储的基本对象,可以对数据做如下定义:描述事物的符号记录称

第一章,前言-数字图像处理自学笔记(Rafael C.Gonzalez,英文第二版)

什么是数字图像处理? 数字图像:坐标对应,幅值有限且离散 数字图像处理:利用数字计算机,对数字图像进行处理. 初级数字图像处理:输入为图片,输出也为图片,如锐化.增强对比度.去噪等. 中级:输入为图片,输出为从图片中得到的结果.如分割. 高级:在分割基础上进行进一步的理解.如识别.分类. 数字图像处理的起源 源于报业,解决长距离传输图像耗费时间长的问题,特定机器对图像进行编码,在接收端进行重组. 早期的Bartlane系统把图像划分为5个灰度,之后增加到了15个.] 与计算机的发展紧密相连.(晶

数字图像处理—学习总结

VC++数字图像处理 杨淑滢 本文对该老师的代码进行总结,代码小白顺便补充一下自己比较困惑的知识点,方便后续复习. 对于BMP格式的图像结构分为以下四个部分: 位图文件头结构BITMAPFILEHEADER 位图信息头结构BITMAPINFOHEADER 位图颜色表RGBQUAD 位图像素数据部分 对于位图的图像分为四类: 单色图像:有两个值:0,255其中0表示黑,255表示白(也可以进行归一化处理为0和1). 灰度图像:带有颜色表,相当于索引表.RGB的分量值相同. 伪彩色图像:RGB的分量

【慕课网】php工程师学习计划之我的学习笔记——01 入门必学web基础 htmlcss基础课程 篇

为了进一步学习PHP,本周我选定了慕课网的PHP工程师学习计划, 从今天2015-07-06 10:24:47开始从头学习:计划本周尽快学习完成本课程,谨此作为笔记. 有个好的学习计划和思路非常非常重要,非常感谢慕课网提供本套学习计划,希望更多地学习平台能提供像这样全面一条龙学习思路清晰地教程. 计划图:链接 我的学习状况:2015-07-06 10:29:46 开始随记: php工程师学习计划笔记——01 入门必学web基础 htmlcss基础课程 篇 入门篇: text-align:cent