《数字图像处理》MATLAB版笔记二

来源:互联网 发布:origin无法连接网络 编辑:程序博客网 时间:2024/05/18 00:03

第二章

image.png

数据类

image.png
* double:使用最频繁,图像处理最常用
* logical:逻辑数据,只有0和1
* char:字符类,表示Unicode字符,一个字符串就是一个1*n的字符矩阵

2.6图像类型

四种图像类型:亮度图(灰度图),二值图,索引图,RGB图。
* 亮度图像:归一化取值表示亮度,若是unit8,则整数值范围是[0,255]。
* 二值图像:取值只有0和1的逻辑数组。
B = logical(A):A是0和1构成的数组,此语句创建数组B。若A中含有其他元素,则非零量为逻辑1。islogical( ) 判断一个数组是否为逻辑数组。
IPT中用于图像类和类型间的转换的函数
image.png

2.8数组索引

通过索引方案,简化数组操作,提高程序运行效率。

2.8.1向量索引

  • v = [1 3 5 7 9] :产生1,3,5,7,9的一个数组。v(2) = 3。维数为1*N的数组,行向量。
  • w = v.':可以将向量转置,(行向量变为列向量)。
  • v(1:3); v(2:4); v(3:end);:可以选取数组中相应的元素,end表示到最后。
    *v(:):将原向量(全部元素)变为一个列向量,按列的顺序进行排序。
    image.png
    v(1:end):产生一个行向量,依然按列的顺序展开。
    image.png
    • v(end:-2:1):从最后一个元素,步长为2,知道第一个元素
      v(1:2:end):与上相反
  • `linspace(a,b,n):以a和b为界限,线性分割的n个元素。
    image.png
  • v([1,4,5]):可以挑出向量v中的第1,4,5个元素。

2.8.2矩阵索引

  • A =[1 2 3;4 5 6;7 8 9] :创建矩阵;A(1,2):A矩阵的第一行,第二列元素。
  • c3 = A(:,3):第三列提取出来;r2 = A(2,:):第二行提取出来。T2 = A(1:2,1:3):矩阵前两行提出来。A(:,3) = 0:则令A矩阵的第三列为0;
  • A(end,end):最后一个元素;A(end,end - 2):类似。
  • A(2:end,end:-2:1):注意列的读取顺序发生了变化。
    image.png
    E = A([a b],[c d]):挑出(行a,列c)(行a,列d)(行b,列c)(行b,列d)的元素。
  • 逻辑数组的寻址方法:
    D = logical([1 0 0 ;0 0 1;0 0 0]);
    A(D):得到D中不为0的相应元素,以列向量的形式呈现。
  • s = sum(A(:)):对A的所有元素求和。sum(A):对各列元素求和。

2.8.3选择数组的维数

  • size(A,1):给出数组的行数;size(A,2):给出数组的列数。

2.9一些重要的标准数组

  • zeros(M,N) : M*N大小的double类0矩阵(元素全是0);
  • ones(M,N):M*N的double类矩阵(元素全是1);
  • ture(M,N):M*N的logical类矩阵,元素全是1;
  • false(M,N):…元素全是0;
  • magic(M):M*M的矩阵,每行、每列以及对角线的元素和相等。
  • rand(M,N):M*N的矩阵,元素是正太分布的随机数,随机数的均值是1,方差是0.

2.10M函数编程简介

图像处理工具箱的一大特征就是对MATLAB环境的透明访问。

2.10.1M文件

  • M文件的函数组成部分为: 函数定义行,H1行,帮助文体,函数体,命令。

函数定义行的形式:function [outputs] = name(inputs)。

  • 例如,计算两幅图像的和与积:function [s,p] = sumprod(f,q)
    f,q是输入图像,s是和图像,p是积图像,function必须出现在左侧,输出必须在方括号内,输入必须在圆括号呢。
    无输出,则可无括号或等号。函数可在命令提示符处调用。

H1行:函数的说明文本,用于说明函数用途,提供M文件的重要摘要信息。输入 help function_name后最先出现的文本。
帮助文本:紧跟H1行后面,为函数提供注释或者在线帮助。
“%”后面看作函数注释行。
edit function_name:可打开文件并进行编辑。

2.10.2运算符

  • 算术运算符
    两类不同的运算符:矩阵运算符(线性代数的规则定义);数组运算符(可以逐个运算的执行),可用于多维数组。例如:
    A*B:表示传统意义的矩阵乘法;
    A.*B:表示数组成都,A和B是大小相同的数组。加减法无区分。

    数组和矩阵运算符:
    image.png
    IPT支持的图像算数函数:
    image.png

  • max和min函数:
    1.c = max(A):若A是一个向量返回其最大元素,若是一个矩阵,返回每列的最大值,返回一个行向量。
    2.c = max(A,B):返回和A,B相同的数组,由A,B的最大元素组成。
    3.c = max(A,[],dim):返回dim决定的行上的最大值。
    4.[c,i] = max(...):最大值存入c与第一种一样,索引存入i。
  • 关系运算符:对于向量和举行数组,必须维数相同,或者其中一个是标量(每一个元素和这个标量比较)。
    1.A,B为两个矩阵 ,则A==B:生成与A和B相同维度的逻辑数组,相同位置元素相同则为1,否则为0。
    2.A>=B:A的元素大于B的元素的为1,否则为0.
    逻辑运算符:& (And) ; | (Or) ; ~(Not);xor(异或);all;any
    1.and,or,not,xor(异或):对数组内部元素进行操作,与数电等所学相同。注意使用方法,例如:
    A&B ; A|B ; A~ ;xor(A,B).
    2.all:若一个向量中所有元素非零,返回1,否则返回0;
    any:若一个向量中存在元素非零,则返回1,否则返回0。all,any均是按列进行操作。
    逻辑运算函数
    image.png
    image.png
    一些重要变量和常量
    image.png
原创粉丝点击