精华内容
下载资源
问答
  • 为了提高合成孔径雷达(SAR)图像目标的识别性能,将多分辨率表示复数域卷积神经网(CNN)联合使用。首先通过对原始SAR图像的时频域进行处理,获得其多分辨率表示图像;然后采用复数域CNN分别对原始SAR图像及其多分辨率...
  • 为了提高彩色图像重构质量,利用具有近似平移不变性特性的双树复数小波作为自然图像的稀疏表示,提出了基于双树复数小波局部高斯模型的彩色图像压缩感知重构算法,该算法在重构时充分利用了彩色图像通道间的互相关性...
  • 由于在频域用能量参数来表示图像的特征矢量缺乏准确性,而且实数离散小波变换具有平移变化性和弱的方向选择性,为此针对以上问题提出了一种基于复数小波域广义高斯分布模型的纹理图像检索方法。该方法首先利用双树复数...
  • 针对单一图像特征描述图像结构信息过于片面的问题,引入了图像结构信息表示复数方 法,构造了用于描述图像结构信息的复数矩阵。把复数作为一种信息合并方法,将图像中人眼敏感程度较高的局部方差分量和 代表一般...
  • 目录 12.1表示方法 ①链码 ②多边形近似 点合成法 边分裂法 ③外形特征 ④边界分段 ⑤区域骨架 12.2边界描述 ...√图像表示与描述是图像识别和理解的重要组成部分 ...√图像表示分成边界表示(如链码...

    目录

    12.1表示方法

    ①链码

    ②多边形近似

    点合成法

    边分裂法

    ③外形特征

    ④边界分段

    ⑤区域骨架

    12.2边界描述

    ①简单描述子

    ②形状数

    ③傅里叶描述子

    ④矩量

    12.3区域描述

    ①简单描绘子

    ②纹理

    统计法

    灰度共生矩阵

    频谱法

    二维函数的矩


     

    12.1表示方法

    √图像表示与描述是图像识别和理解的重要组成部分

    √图像表示分成边界表示(如链码、边界分段等)和区域表示(如四叉树、骨架等)两大类。

    ·边界表示关心的是图像中区域的形状特征

    ·区域表示则倾向于反映区域的灰度、颜色、纹理等特征的特点

    √链码

    √多边形近似

    √外形特征

    √边界分段

    √区域骨架

     

    ①链码

    √链码用于表示由顺序连接的具有指定长度和方向的直线段组成的边界线。

    √这种表示方法基于线段的4或6或8连接

     

    √每一段的方向使用数字编号方向进行编码

    √循环差分链码

     

    ②多边形近似

    √基本思想:用最少的多边形线段,获取边界性质的本质

    ·点合成法

    ·边分裂法

     

    点合成法

    1)沿着边界选两个点

    2)计算误差R(看起来像△的高)与我们设定的阀值T

    3)R<T,去掉中间点;否则保留

    4)以下一个为起点,重复1—3

     

    边分裂法

    1)连接边界线段的两个端点(如果是封闭边,连接最远点)

    2)如果最大正交距离(感觉是距离这个线段最远的点)大于阀值,将边界分为两段,最大值点定位一个顶点。重复1

    3)如果没有超过阀值的正交距离,结束。

     

    ③外形特征

    √外形特征时一种用一维函数表达边界的方法。

    基本思想:把边界的表示降到一维函数

     

    ④边界分段

    基本方法:将边界分成若干段,然后分别对每一段进行表示,从而降低了边界的复杂度,并简化表示过程,尤其是当边界具有多个凹点的时候这种方法更为有效。

    基本步骤

    1)构造边界的凸包

    2)跟踪区域凸包的边界,记录凸包边界进出区域的转变点即可实现对边界的分割

     

    ⑤区域骨架

    √基本思想

    ·表示一个平面区域的结构形状的重要方法是把它削减成图形。

    ·Blum中轴变换方法(MAT)

    12.2边界描述

    √边界描述子

    ·简单描述子

    ·形状数

    ·傅里叶描述子

    ·矩量

     

    ①简单描述子

    √边界的周长

    ·4-连通边界:其长度为边界上像素点个数

    ·8-连通边界:其长度为对角码个数乘上再加上水平和垂直像素点的个数的和

    √边界直径:边界上任意两点距离的最大值

     

    ②形状数

    √形状数是基于4-链码的边界描述符

    √形状数定义为值最小的4-链码的一阶差分码

     

     

     

    ③傅里叶描述子

    √将一个二维问题简化成一个一维问题

    基本思想

    1)对于XY平面上的每个边界点,将其坐标用复数表示为:s(k)=x(k)+jy(k),k=0,1,...,N-1

    2)进行离散傅里叶变换

     

    3)选取整数P≤N-1,进行傅里叶逆变换(重构)

    √P越小,细节部分丢失的越多

     

    ④矩量

    √统计矩:用1-D函数描述边界曲线,易于实现并且具有对边界形状的物理意义

    √定义:(L是边界上点的数目,是边界的矩量)

     

     

     

     

     

    12.3区域描述

    ①简单描绘子

    √区域面积:区域中的像素的数目

    √区域周长:区域边界的长度

    √致密度:(周长)²/面积

    √其它简单描绘子:如最大值、最小值、中值、均值、方差等。

     

    ②纹理

    √反映像素灰度的空间分布属性的图像特征

    √通常变现为局部不规则但宏观有规律性,周期性

     

    √常用的纹理描述方法

    ·统计法(基于图像的灰度直方图的特性来描述纹理)

    ·频谱法(分析纹理的频域特征)

     

    统计法

    √统计方法:用一幅图像或区域灰度级直方图的统计矩令z为一个代表灰度级的随机变量, ,i=0,1,...L-1为队形的直方图。灰度均值m的n阶矩(L为图像可能的灰度极):

    √常用的纹理统计度量

    ·均值

     

    ·标准差

    ·平滑度

    ·一致性

    ·熵

     

     

     

    √存在问题:没有利用像素之间的相对位置关系

    √解决方法:不仅考虑强度分布,还要考虑具有相同强度值或近似强度值的像素位置。

     

    灰度共生矩阵

    √基本方法:取图像中任意一点及偏离它的另一点,取该点对的灰度值为。对于整幅图像,计算出每一种值出现的概率,并排列成方阵,称为联合概率矩阵,也叫做共生矩阵。再由共生矩阵计算5个统计量。

    √5个统计量

    ·最大概率(表示对p的最强响应):

    ·元素差异的k阶矩(当C中的大值接近主对角线的时候,具有相对较低的值):

    ·逆元素差异的k阶矩(具有与“元素差异的k阶矩”相反的效果):

    ·一致性(当都相等时,有最大值):

    ·(当C的所有元素有最大的随机性时,有最大值):

     

    频谱法

    √对纹理描述有用的傅里叶频谱三个特征

    ·傅里叶频谱中凸起的峰值对应纹理模式的主要方向;

    ·这些峰在频域平面的位置对应模式的基本周期;

    ·如果利用滤波把周期性成分出去,剩下的非周期性部分可用统计方法描述。

     

    √使用函数S(r,θ)的极坐标表达:S频谱函数rθ是坐标系中的变量。

    :得到沿着自原点的辐射方向上的频谱所表现的特性(比如存在的尖峰)

    :以原点为圆心的圆形上的特性

     

    二维函数的矩

    √二维连续函数f(x,y)(p+q)阶矩

    ·由单值性定理表明:如果是f(x,y)分段连续的并且仅在xy平面内有限的部分具有非零值,则存在各阶矩,并且矩的序列f(x,y)唯一决定。相反也唯一地决定了f(x,y)

     

    √二维连续函数的中心矩(平移不变)

     

    √二维离散函数(如数字图像)的中心矩

    归一化的中心矩(平移、尺度不变)

    √7个不变矩(平移、尺度、旋转不变)

    √从表10.4可以看出,在图像经过旋转、镜像以及尺度变换之后,这七个不变矩的值只有十分小的变化,可以看作是基本保持不变

    展开全文
  • 数学物理方法·基础④复平面/辐角/复数表示形式 QQ:3020889729 小蔡何为复平面?何为复矢量?复数的辐角复数与辐角复数的三种表示形式补充:特殊复数(0,0) ...

                             QQ:3020889729                                                                                 小蔡

    复数表示导图

    在这里插入图片描述

    何为复平面?

    就是以普通的Oxy平面坐标系的x轴作为实轴,y轴作为虚轴,使得可分别表示复数的实部、虚部值。
    这就是平面坐标系下的复平面。

    何为复矢量?

    以复数的实部、虚部为有序数对的点P,由原点O指向P得到的OP向量即是该复数的复矢量。
    复矢量的模就是复数的模,即为|z|或ρ.(ps:复数相等就是模相等.)
    在这里插入图片描述
    复矢量具有平移不变性:
    在这里插入图片描述

    复数的辐角

    在这里插入图片描述
    在这里插入图片描述
    (ps:以上可知道,辐角主值的一般范围,但是辐角值却不是唯一的,可以是加上任意整数倍的2Π的辐角值。)
    在这里插入图片描述

    复数与辐角

    满足以下关系:
    在这里插入图片描述
    所以,复数表示为z = ρ(cosθ+isinθ)
    结合欧拉公式:
    在这里插入图片描述
    得到复数的新表示形式:
    在这里插入图片描述

    复数的三种表示形式

    在这里插入图片描述
    代数式又等价于**z = (x,y)**的表示形式。

    补充:特殊复数(0,0)

    特殊的复数(0,0)的模为0辐角不确定

    展开全文
  • 数据:是能够被输入计算机且能被计算机处理的各种符号的集合 数据包括数字型的数据(整数,实物等)和非数值型的数据(文字,图像,图形,声音)。 数据元素:是数据的基本单位,在计算机程序中通常作为一个整体...

    数据结构与算法
    这是知识点出处bilibili
    1.数据结构研究
    利用计算机解决问题步骤:具体对象抽象为数学模型(分析问题 提取操作对象 找出操作对象之间的关系 用数学语言描述)——设计算法——编程.调试.运行 (操作对象与操作对象之间的关系为数据结构)
    例如
    学生管理系统
    操作对象:每位学生的信息(学号,姓名,性别,籍贯等)
    操作算法:查询,插入,修改,删除等
    操作对象之间的关系:线性关系(一对一)
    数据结构:线性数据结构,线性表
    地图导航——最短路径
    操作对象:各地点及路的信息
    计算机算法:设置信号灯,求出各个可同时通行的路的集合
    对象之间的关系:非线性关系,网状结构
    ————————————————————————2.基本概念
    数据结构是一门研究非数值计算的程序设计中计算机的操作对象以及他们之间的关系和操作的学科。
    3.
    数据:是能够被输入计算机且能被计算机处理的各种符号的集合
    数据包括数字型的数据(整数,实物等)和非数值型的数据(文字,图像,图形,声音)。
    数据元素:是数据的基本单位,在计算机程序中通常作为一个整体进行考虑进而处理。也被称为元素,记录,结点或是顶点。
    数据元素可由若干个数据项组成。
    数据项是构成数据元素的不可分割的最小单位。
    数据,数据元素,数据项之间的关系:
    数据>数据元素>数据项
    数据对象:是性质相同的数据元素的集合,是数据的一个子集
    例如:整数数据对象:N={0,±1,±2…}
    数据元素与数据的关系是:集合的个体
    数据对象与数据的关系是:集合的子集
    4.
    数据元素不是孤立存在的,它们之间存在某种关系,数据元素相互之间的关系称为结构。是指相互之间存在一种或多种特定关系的数据元素集合。或者说,数据结构是带结构的数据元素的集合。
    数据结构包括三方面内容:
    1.数据元素之间的逻辑关系,称为逻辑结构
    2.数据元素及其关系在计算机内存中的表示(映像),称为数据的物理结构或是数据的存储结构。
    3.数据的运算和实现,即对数据元素可以施加的操作以及这些操作在相应的存储结构上的实现。
    逻辑结构:线性结构(线性表,栈,队列,串)
    非线性结构(树—一对多的层次关系,图)
    存储结构:顺序存储结构(数组)
    链式存储结构(指针)
    索引存储结构(手机中的通讯录,地址)
    散列存储结构
    5.
    抽象数据类型(ADT)
    如 ADT Circle{
    数据对象:D={r,x,y|r,x,y为实数}
    数据关系:R={< r,x,y>|r是半径,<x,y>是圆心坐标}
    基本操作:Circle(&C,r,x,y)
    操作的结果:构造一个圆
    double Area©
    初始条件:圆已存在
    操作结果:计算面积
    double Circumference©
    初始条件:圆已存在
    操作结果:计算周长
    }ADT Circle

    ADT Complex{
    D={r1,r2|r1,r2都是实数}
    S={<r1,r2>|r是实部,r2是虚部}
    assign(&C,v1,v2)
    初始条件:空的复数C已存在
    操作的结果:构造复数C,r1,r2分别被赋以参数v1,v2的值
    destroy(&C)
    初始条件:复数C已存在
    操作结果:复数C被销毁
    }ADT Complex

    Assign(&Z,v1,v2)
    操作结果:构造复数Z,其实部与虚部,分别被赋以参数v1,v2的值
    Destroy(&Z)
    操作结果:复数Z被销毁
    GetReal(Z,&realPart)
    初始条件:复数已存在。操作结果:用realPart返回复数Z的实部值
    GetImag(Z.&ImagPart)
    初始条件:复数已存在。操作结果:用ImagPart返回复数z的虚部值
    Add(z1,z2,&sum)
    初始条件:z1,z2是复数。操作结果:sum返回俩个复数z1,z2的和
    抽象数据类型举例

    //计算z=[(8+6i)(4+3i)]/[(8+6i)+(4+3i)];
    #include<stdio.h>
    typedef struct complex{
    float realpart;
    float imagpart;
    }complex;
    //complex是定义的一个结构体类型 带*:指针变量,是指向complex类型的指针 不带*:complex的普通变量
    complex assign(double real,double imag);//构造赋值
    complex add(complex B,complex C);
    complex minus(complex B,complex C);
    complex multiply(complex B,complex C);
    complex divide(complex B,complex C);
    
    complex assign(double real,double imag){
    complex A;
    A.realpart=real;
    A.imagpart=imag;
    return A;
    }
    complex add(complex B,complex C){
    complex A;
    A.realpart=B.realpart+C.realpart;
    A.imagpart=B.imagpart+C.imagpart;
    return A;
    }
    complex multiply(complex B,complex C){complex A;
    A.realpart=B.realpart*C.realpart-B.imagpart*C.imagpart;
    A.imagpart=B.imagpart*C.realpart+B.realpart*C.imagpart;
    return A;
    }
    complex divide(complex B,complex C){complex A;
    A.realpart=	(B.realpart*C.realpart+B.imagpart*C.imagpart)/(C.imagpart*C.imagpart+C.realpart*C.realpart);
    A.imagpart=(B.imagpart*C.realpart-C.imagpart*B.realpart)/(C.imagpart*C.imagpart+C.realpart*C.realpart);
    return A;
    }
    int  main(){
    complex z1,z2,z3,z4,z;double realpart,imagpart;
     z1= assign(8.0,6.0);//构造复数z1
    printf("1     %.2lf+%.2lfi\n",z1.realpart,z1.imagpart);
     z2=assign(4.0,3.0);//构造复数z2
     printf("2     %.2lf+%.2lfi\n",z2.realpart,z2.imagpart);
     z3=add(z1,z2);//俩个复数相加
     printf("3     %.2lf+%.2lfi\n",z3.realpart,z3.imagpart);
     z=multiply(z1,z2);//俩个复数相乘
      printf("4     %.2lf+%.2lfi\n",z.realpart,z.imagpart);
     z4=divide(z,z3);//俩个复数相除
      printf("5     %.2lf+%.2lfi\n",z4.realpart,z4.imagpart);
    } // %.2lf+%.2lfi    .2表示小数点后俩位,lf表示double类型
    
    此代码借鉴[なるnaruuuu](https://blog.csdn.net/nruuu/article/details/110452802?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161692193016780274117562%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=161692193016780274117562&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v29-17-110452802.pc_search_positive&utm_term=C%E8%AF%AD%E8%A8%80%E5%A4%8D%E6%95%B0%E5%AE%9E%E7%8E%B0)
    #include<stdio.h>
    typedef struct complex {
    	float realpart;
    	float imagpart;
    }complex;
    //complex是定义的一个结构体类型 带*:指针变量,是指向complex类型的指针 不带*:complex的普通变量
    complex assign(complex &A, float real, float imag);//构造赋值
    complex add(complex &A, complex B, complex C);
    complex minus(complex &A, complex B, complex C);
    complex multiply(complex &A, complex B, complex C);
    complex divide(complex &A, complex B, complex C);
    
    complex assign(complex &A, float real, float imag) {
    
    	A.realpart = real;
    	A.imagpart = imag;
    
    }
    complex add(complex &A, complex B, complex C) {
    
    	A.realpart = B.realpart + C.realpart;
    	A.imagpart = B.imagpart + C.imagpart;
    
    
    }
    complex multiply(complex &A, complex B, complex C) {
    
    	A.realpart = B.realpart*C.realpart - B.imagpart*C.imagpart;
    	A.imagpart = B.imagpart*C.realpart + B.realpart*C.imagpart;
    
    }
    complex divide(complex &A, complex B, complex C) {
    
    	A.realpart = (B.realpart*C.realpart + B.imagpart*C.imagpart) / (C.imagpart*C.imagpart + C.realpart*C.realpart);
    	A.imagpart = (B.imagpart*C.realpart - C.imagpart*B.realpart) / (C.imagpart*C.imagpart + C.realpart*C.realpart);
    
    }
    int  main() {
    	complex z1, z2, z3, z4, z; float realpart, imagpart;
    	//z=[(8+6i)(4+3i)]/[(8+6i)+(4+3i)];
    	assign(z1, 8.0, 6.0);//构造复数z1
    	printf("1     %.2f+%.2fi\n", z1.realpart, z1.imagpart);
    	assign(z2, 4.0, 3.0);//构造复数z2
    	printf("2     %.2f+%.2fi\n", z2.realpart, z2.imagpart);
    	add(z3, z1, z2);//俩个复数相加
    	printf("3     %.2f+%.2fi\n", z3.realpart, z3.imagpart);
    	multiply(z, z1, z2);//俩个复数相乘
    	printf("4     %.2f+%.2fi\n", z.realpart, z.imagpart);
    	divide(z4, z, z3);//俩个复数相除
    	printf("5     %.2f+%.2fi\n", z4.realpart, z4.imagpart);
    	
    }
    
    #include<stdio.h>
    typedef struct complex {
    	double realpart;
    	double imagpart;
    }complex;
    //complex是定义的一个结构体类型 带*:指针变量,是指向complex类型的指针 不带*:complex的普通变量
    complex assign(complex *A,double real, double imag);//构造赋值
    complex add(complex *A,complex * B, complex *C);
    complex minus(complex *A,complex *B, complex *C);
    complex multiply(complex *A,complex* B, complex *C);
    complex divide(complex *A,complex *B, complex *C);
    
    complex assign(complex *A,double real, double imag) {
    	
    	A->realpart = real;
    	A->imagpart = imag;
    	printf("%.2lf+%.2lfi\n", A->realpart, A->imagpart);
    	
    }
    complex add(complex *A,complex *B, complex *C) {
        
    	A->realpart = B->realpart + C->realpart;
    	A->imagpart = B->imagpart + C->imagpart;
    	printf("%.2lf+%.2lfi\n",   A->realpart, A->imagpart);
    	//->用来 指向结构体子数据的指针,用来取子数据 
    }
    
    用法借鉴[WTomster](https://blog.csdn.net/weixin_38885956/article/details/110295037?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161692193016780274117562%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=161692193016780274117562&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v29-25-110295037.pc_search_positive&utm_term=C%E8%AF%AD%E8%A8%80%E5%A4%8D%E6%95%B0%E5%AE%9E%E7%8E%B0)
    
    complex multiply(complex *A,complex *B, complex* C) {
    	
    	A->realpart = B->realpart*C->realpart - B->imagpart*C->imagpart;
    	A->imagpart = B->imagpart*C->realpart + B->realpart*C->imagpart;
    	printf("%.2lf+%.2lfi\n", A->realpart, A->imagpart);
    }
    complex divide(complex *A,complex *B, complex *C) {
    	
    	A->realpart = (B->realpart*C->realpart + B->imagpart*C->imagpart) / (C->imagpart*C->imagpart + C->realpart*C->realpart);
    	A->imagpart = (B->imagpart*C->realpart - C->imagpart*B->realpart) / (C->imagpart*C->imagpart + C->realpart*C->realpart);
    	printf("%.2lf+%.2lfi\n", A->realpart, A->imagpart);
    }
    int  main() {
    complex	z1, z2,z3,z4, z; 
    	//z=[(8+6i)(4+3i)]/[(8+6i)+(4+3i)];
    assign(&z1,8.0, 6.0);//构造复数z1
    assign(&z2,4.0, 3.0);//构造复数z2
    add(&z3,&z1, &z2);//俩个复数相加
    
    //printf("mian    %.2lf+%.2lfi\n",   z3.realpart, z3.imagpart);
    //.前面的对象为结构类型的变量  ->左边应该是指向该结构体的指针 
    multiply(&z,&z1, &z2);//俩个复数相乘
    //printf("main    %.2lf+%.2lfi\n",   z.realpart, z.imagpart);
    divide(&z4,&z, &z3);//俩个复数相除*/
    //printf("main   %.2lf+%.2lfi\n",   z4.realpart, z4.imagpart);
    return 0;
    }
            
    
    展开全文
  • 在我们进行图像识别的时候,往往是将图片中的特征来表示整张图片让计算机进行识别,基本上表示一个区域涉及两种选择: 外部特征 内部特征 下一步就是基于所选择的表示来描述区域 当我们关注的重点是形状特征...

    1 - 引言

    在我们进行图像识别的时候,往往是将图片中的特征来表示整张图片让计算机进行识别,基本上表示一个区域涉及两种选择:

    1. 外部特征
    2. 内部特征

    下一步就是基于所选择的表示来描述区域

    当我们关注的重点是形状特征时,可选择一种外部表示;而当关注的重点是内部属性如颜色和纹理时,可以选择一种内部表示。无论哪种情形,选择用来作为描绘子的特征都应尽可能地对大小、平移和旋转不敏感

    2 - 表示

    图像分割技术以沿着边界或包含在区域中的像素的形式产生原始数据,标准做法是使用某种方案将分割后的数据精简为更便于描绘子计算的表示。下面让我们学习一下各种表示方法

    2.1 - 边界追踪算法

    该算法输出的是排序后的点序列,我们假设:

    1. 处理的是二值图像,其目标和背景点分别标位1和0
    2. 图像已使用值为0的边界填充,因而消除了目标与图像边界合并的可能性

    给定一个二值区域R或其边界,追踪R的边界或给定边界的算法由如下步骤组成:

    1. 令起始点 b 0 b_0 b0为图像中左上角标记为1的点。使用 c 0 c_0 c0表示 b 0 b_0 b0西侧的邻点。从 c 0 c_0 c0开始按顺时针方向考察 b 0 b_0 b0的8个邻点。令 b 1 b_1 b1表示所遇到的值为1的第一个邻点,并直接令 c 1 c_1 c1是序列中 b 1 b_1 b1之前的点。存储 b 0 b_0 b0 b 1 b_1 b1的位置,以便在步骤5中使用
    2. b = b 1 b=b_1 b=b1 c = c 1 c=c_1 c=c1
    3. 从c开始按顺时针方向行进,令b的8个邻点为 n 1 , n 2 , … , n 8 n_1,n_2,\dots,n_8 n1,n2,,n8找到标记为1的第一个 n k n_k nk
    4. b = n k b=n_k b=nk c = n k − 1 c=n_{k-1} c=nk1
    5. 重复步骤3和步骤4
      当算法停止时,所找到的b点的序列就构成了排列后的边界点的集合

    在这里插入图片描述

    2.2 - 佛雷曼(Freeman)链码

    链码用于表示由顺次连接的具有指定长度和方向的直线段组成的边界。这种表示基于这些线段的4连接或8连接。每个线段的方向使用一种数字编号方案编码,如图所示,以这种方向性数字序列表示的编码称为佛雷曼(Freeman)链码。
    链码的一次差分为,通过计算链码中分隔两个相邻像素的方向变化的数(按逆时针方向计算前一个数字变化到后一个数字所需的步数),其中第一元素是通过使用链码的最后一个元素和第一个元素间的转变来计算得到的。例如,4方向链码0231,得到的一次差分为3212,其中3为1逆时针转到0需3步;2为0逆时针转到2需2步;1为2逆时针转到3需1步;2为3逆时针转到1需2步。

    在这里插入图片描述

    2.3 - 使用最小周长多边形的多边形近似(MPP)

    一副图像我们可以用多边形拟合它的形状。
    在这里插入图片描述
    我们的目的就是使用合适的最大可能单元大小,以最少的定点数来生产MPP,并且我们可以发现构成边界的多边形每个转向要么是一个凸定点,要么是一个凹顶点。
    注意的是凹顶点(黑色)有一个对应的“镜像”顶点,位于凹顶点的对角处
    在这里插入图片描述
    因此,我们的算法就只需要关注这些顶点

    MPP算法

    令W(白)和B(黑)分别表示凸顶点镜像凹顶点
    寻找MMP的算法使用两个“爬行”点:

    • 白色的爬行垫( W c W_c Wc): W c W_c Wc沿凸顶点(w)爬行
    • 黑色的爬行垫( B c B_c Bc): B c B_c Bc沿镜像凹顶点(B)爬行。

    算法首先令 W c = B c = V 0 W_c=B_c=V_0 Wc=Bc=V0 v 0 v_0 v0是一个MPP顶点), V L V_L VL表示最后一个MPP顶点, V k V_k Vk表示正在考察的当前顶点。
    s g n ( a , b , c ) ≡ d e t ( A ) sgn(a,b,c)\equiv det(A) sgn(a,b,c)det(A)
    (det(A)是A的行列式)
    V L , V k V_L,V_k VL,Vk和两个爬行点之间存在如下三个条件之一:

    1. V k V_k Vk位于通过 ( V L , W c ) (V_L,W_c) VL,Wc的直线的正的一侧,即 s g n ( W L , W c , V k ) &gt; 0 sgn(W_L,W_c,V_k)&gt;0 sgn(WL,Wc,Vk)>0
    2. V k V_k Vk位于通过 ( V L , W c ) (V_L,W_c) VL,Wc的直线的负的一侧,或者 V k V_k Vk ( V L , W c ) (V_L,W_c) VL,Wc共线,即 s g n ( W L , W c , V k ) ≤ 0 sgn(W_L,W_c,V_k)\leq 0 sgn(WL,Wc,Vk)0。同时, V k V_k Vk位于通过 ( V L , B c ) (V_L,B_c) (VL,Bc)的直线的正的一侧,或者 V k V_k Vk ( V L , B c ) (V_L,B_c) (VL,Bc)共线,即 s g n ( V L , B c , V k ) ≥ 0 sgn(V_L,B_c,V_k)\geq 0 sgn(VL,Bc,Vk)0
    3. V k V_k Vk位于通过 ( V L , B c ) (V_L,B_c) VL,Bc的直线的负的一侧,即 s g n ( V L , B c , V k ) &lt; 0 sgn(V_L,B_c,V_k)&lt;0 sgn(VL,Bc,Vk)<0

    如果条件1成立,则下一个MPP顶点是 W C W_C WC并且我们令 V L = W c V_L=W_c VL=Wc;然后我们令 W c = B c = V L W_c=B_c=V_L Wc=Bc=VL来重新初始化该算法,并在 V L V_L VL之后的下一个顶点继续执行算法

    如果条件2成立,则 V k V_k Vk编程一个候选的MPP顶点。在这种情况下,如果 V k V_k Vk是凸顶点,则令 W c = V k W_c=V_k Wc=Vk;否则,我们置 B c = V k B_c=V_k Bc=Vk然后,我们使用列表中的下一顶点继续执行算法

    如果条件3成立,则下一个MPP顶点是 B c B_c Bc,并且令 V L = B c V_L=B_c VL=Bc;然后我们令 W c = B c = V L W_c=B_c=V_L Wc=Bc=VL来重新初始化该算法,并用 V L V_L VL之后的下一个顶点继续执行算法

    当算法再次到达第一个顶点时,算法结束,此时算法已经处理了多边形中的所有顶点。

    3 - 边界描绘子

    3.1 - 一些简单的描述子

    1. 边界的长度
      边界的长度是最简的描述子之一。一条边界上的像素数量可以给出其长度的粗略近似。
    2. 边界的长轴与短轴
      边界B的直径定义为
      D i a m ( B ) = m a x i j [ D ( p i , p j ) ] Diam(B)=max_{ij}[D(p_i,p_j)] Diam(B)=maxij[D(pi,pj)]
      p i , p j p_i,p_j pi,pj是边界上的点, D ( p j , p j ) D(p_j,p_j) Dpj,pj是定义 p i p_i pi p j p_j pj之间的距离。直径的值和连接组成该直径两个端点的直线段(该直线称为边界的长轴)的方向是边界的有用描述子,边界的短轴定义为与长轴垂直的直线,且由边界与两个轴相交的4个外部点所组成的方框(该方框称为基本矩形),可以全完包围该边界
    3. 边界的偏向率
      长轴与短轴之比成为边界的偏心率

    3.2 - 形状数

    链码边界的一次差分取决于起始点。一条基于链码的边界的形状数,定义为最小量级的一次差分,即对链码的一次差分进行循环,得到的值最小的差分码为形状数。

    3.3 - 傅里叶描述子

    下图显示了xy平面内的一个K点数字边界,从任意点 ( x 0 , y 0 ) (x_0,y_0) x0y0开始,以逆时针方向在该边界上行进时,会遇到坐标对 ( x 0 , y 0 ) , ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x k − 1 , y k − 1 ) (x_0,y_0),(x_1,y_1),(x_2,y_2),\dots,(x_{k-1},y_{k-1}) x0,y0,(x1,y1),(x2,y2),,(xk1,yk1)这些坐标可以表示为 x ( k ) = x k , y ( k ) = y k x(k)=x_k,y(k)=y_k x(k)=xk,y(k)=yk的形式,此外,每个坐标都可当做一个复数来处理

    s ( k ) = x ( k ) + j y ( k ) s(k)=x(k)+jy(k) s(k)=x(k)+jy(k)
    式中有 k = 0 , 1 , 2 , … , K − 1 k=0,1,2,\dots,K-1 k=0,1,2,,K1
    s(k)的傅里叶变换为
    a ( u ) = ∑ k = 0 K − 1 s ( k ) e − j 2 π u k / K a(u)=\sum_{k=0}^{K-1}s(k)e^{-j2\pi uk/K} a(u)=k=0K1s(k)ej2πuk/K
    式中 u = 0 , 1 , 2 , … , K − 1 u=0,1,2,\dots,K-1 u=0,1,2,,K1复系数 a ( u ) a(u) a(u)称为边界的傅里叶描述子。这些系数的傅里叶反变换可恢复s(k)
    s ( k ) = 1 K ∑ u = 0 K − 1 a ( u ) e j 2 π u k / K s(k)=\frac{1}{K}\sum_{u=0}^{K-1}a(u)e^{j2\pi uk/K} s(k)=K1u=0K1a(u)ej2πuk/K

    然而,假设仅使用前P个傅里叶系数而不使用所有系数,等同于上式中令 a ( u ) = 0 , u &gt; P − 1 a(u)=0,u&gt;P-1 a(u)=0,u>P1结果 s ( k ) s(k) s(k)的如下近似:
    s ^ ( k ) = 1 K ∑ u = 0 P − 1 a ( u ) e j 2 π u k / P \hat s(k)=\frac{1}{K}\sum_{u=0}^{P-1}a(u)e^{j2\pi uk/P} s^(k)=K1u=0P1a(u)ej2πuk/P

    尽管求 s ^ ( k ) \hat s(k) s^(k)的每个成分时仅使用了P项,但k的范围仍然是从0到K-1,也就是说,在近似边界中存在同样数量的点,但项数不像在每个点的重建中那么多

    由于高频成分说明精细细节,而低频成分决定全局形状,因此P越小,边界丢失的细节就越多

    在这里插入图片描述

    3.4 - 统计矩

    如图(a),它显示了一段边界,图(b)显示了以任意变量 r r r的一维函数 g ( r ) g(r) g(r)描述的线段,该函数是这样获得的:先将该线段的两个端点连接,然后旋转该直线,直至其为水平线段,此时所有的点的坐标也旋转同样的角度

    g ( r ) g(r) g(r)归一化为单位面积,并把它当作直方图来处理,换句话说, g ( r i ) g(r_i) g(ri)现在作为值 r i r_i ri出现的概率来处理,此时,r为一个随机变量,故n阶矩为
    u n ( r ) = ∑ i = 0 K − 1 ( r i − m ) n g ( r i ) u_n(r)=\sum_{i=0}^{K-1}(r_i-m)^ng(r_i) un(r)=i=0K1(rim)ng(ri)
    式中, m = ∑ i = 0 K − 1 r i g ( r i ) m = \sum_{i=0}^{K-1}r_ig(r_i) m=i=0K1rig(ri)

    K是边界上的点数, u n ( r ) u_n(r) un(r)直接与 g ( r ) g(r) g(r)的形状相关。例如,二阶矩 u 2 ( r ) u_2(r) u2(r)度量曲线关于r的均值扩展程度,而三阶矩 u 3 ( r ) u_3(r) u3r度量曲线关于均值的对称性

    在这里插入图片描述

    4 - 区域描述子

    4.1 - 简单的区域描述子

    1. 区域的面积
      区域的面积定义为该区域中像素的数量
    2. 区域的周长
      区域的周长是其边界的长度
    3. 致密性
      致密性定义为(周长) 2 / ^2/ 2/面积
    4. 圆周率
      圆周率即一个区域的面积与具有相同周长的一个圆(最致密形状)的面积之比。周长为P的一个圆的面积 P 2 / 4 π P^2/4\pi P2/4π。因此,圆周率 R c R_c Rc由下式给出:
      R c = 4 π A p 2 R_c=\frac{4\pi A}{p^2} Rc=p24πA
      A是所讨论的区域面积,P是其周长
    5. 其他
      用作区域描述子的其他简单测度包括灰度值的均值和中值,最小灰度值和最大灰度值,以及其高于和低于均值的像素数

    4.2 - 拓扑描述子

    拓扑学研究未受任何变形影响的图形的特质,前提是该图形未被撕裂或粘连。
    例如,图(a)显示了一个带有两个孔洞的区域。如果一个拓扑描述子由该区域内的孔洞数量来定义,那么这种性质明显不受拉伸或旋转变换的影响。
    另一个对区域描述有用的拓扑特性是连通分量的数量。如图4(b)显示了一个具有3个连通分量的区域。

    在这里插入图片描述

    图形中孔洞的数量 H 和连通分量的数量 C ,可用于定义欧拉数 E :E = C - H

    欧拉数也是一种拓扑特性。例如,图所示的区域有分别等于 0 和 −1 的欧拉数。
    在这里插入图片描述

    4.3 - 纹理

    描绘区域的一种总要方法是量化该区域的纹理内容

    出现处理中用于描述区域纹理的三种主要方法是:

    1. 统计方法(平滑、粗糙、粒状的等纹理特征)
    2. 结构方法(像元的排列,如基于规则间距平行线的纹理描述)
    3. 频谱方法(基于傅里叶频谱特性,主要用于检测图像中的全局周期性,方法是识别频谱中的高能量的窄波峰)

    4.3.1 - 统计方法

    描述纹理的最简单方法之一是使用一副图像或一个区域的灰度级直方图的统计矩。令Z是表示灰度的一个随机变量,并令 p ( z i ) , i = 0 , 1 , 2 , … , L − 1 p(z_i),i=0,1,2,\dots,L-1 p(zi),i=0,1,2,,L1为相应的直方图,其中L是不同灰度级的数量,关于其均值的Z的第n阶矩为
    u n ( z ) = ∑ i = 0 L − 1 ( z i − m ) n p ( z i ) u_n(z)=\sum_{i=0}^{L-1}(z_i-m)^np(z_i) un(z)=i=0L1(zim)np(zi)
    m是z的均值(平均灰度)
    m = ∑ i = 0 L − 1 z i p ( z i ) m=\sum_{i=0}^{L-1}z_ip(z_i) m=i=0L1zip(zi)

    注意 u 0 = 1 , u 1 = 0 u_0=1,u_1=0 u0=1,u1=0二阶矩[方差 σ 2 ( z ) = u z ( z ) \sigma^2(z)=u_z(z) σ2(z)=uz(z)]在纹理描述中特别重要。它是灰度对比度的度量,可用于建立相对平灰度的描述子,例如度量
    R ( z ) = 1 − 1 1 + σ 2 ( z ) R(z)=1-\frac{1}{1+\sigma^2(z)} R(z)=11+σ2(z)1
    对于恒定灰度区域为0(该区域方差为0),而对于较大的 s i g m a 2 ( z ) sigma^2(z) sigma2(z)值,其接近于1,因为对灰度级图像方差值增大而增大的。

    三阶矩是直方图偏斜度的度量,而四阶矩是直方图相对平坦度的度量,五阶矩和更高阶矩不容易与直方图形状联系起来,但它们的确提供了纹理内容的进一步量化辨别。

    在这里插入图片描述

    使用直方图计算得到的纹理度量不懈怠像素彼此之间的相对位置的信息,但是这个信息很重要,所以我们使用一种方法叫共生矩阵

    令Q是定义两个像素彼此相对位置的一个算子,并考虑一副具有L个可能灰度级的图像f,令G为一个矩阵,其元素 g i j g_{ij} gij是灰度为 z i z_i zi z j z_j zj的像素对出现在f中有Q所指定的位置处的次数,按照这种方法形成的矩阵成为灰度共生矩阵

    在这里插入图片描述

    在这里插入图片描述

    4.3.2 - 结构方法

    结构法的基本思想是,一个简单的“纹理基元”可借助一些规则用于形成更复杂的纹理模式,这些规则限制基元(或这些基元)的可能排列的数量。

    4.3.3 - 频谱方法

    对纹理描述有用的傅里叶频谱的三个特征:

    1. 频谱中突出的尖峰给出纹理模式的主要方向;
    2. 频率平面中尖峰的位置给出模式的基本空间周期;
    3. 采用滤波方法消除任何周期成分而留下非周期性图像元素,然后采用统计技术来描述。
    展开全文
  • 适用:数字图像处理概念理解、知识点复习。抛却大部分推导公式,注重概念的理解与应用,通过这篇文章能够了解这门课大概的内容。后面附了一份课程主要知识点。【删除线中间的东西可选择性不看】参考:CSDN,百度,...
  • 整个看FFT过程中复数一直很折磨我。   原本的实数的东西通过复数表达很像旋转矩阵用quaternion来表达,尽管旋转vector还是要用matrix来做,但是通过用quaternion表达的旋转意义可以做插值等很多快速的操作,而且...
  • 数字图像处理《11、表示和描述》

    千次阅读 2018-05-22 10:49:36
    第十一章:表示和描述 1、 表示的方法有:边界追踪、链码、多边形近似法等; 2、 边界的描绘子有:偏心率、形状数、傅立叶描绘子、统计矩等; 3、 区域的描绘子有:圆度率、拓扑描绘子、纹理、不变矩等...
  • 当我们对一个图像分割为区域后,一般会对分割好的区域进行表示与描述,以便使“自然状态的”像素适合计算机处理。而对于区域有一个基本的划分,为:外部特征(区域的边界)或内部特征(组成区域的像素)两种方式来表示...
  • 十七、数字图像处理之表示与描述

    千次阅读 2019-05-15 09:39:10
    图像处理的表示与描述(一)背景知识(1)用于提取区域及其边界的函数(2)本章使用的MATLAB和IPT附加函数(3)一些基本的实用M-函数(二)表示(1)链码(2)使用最小周长多边形的多边形近似(3)标记(4)边界片段...
  • 上一章中讨论的方法将一幅图像分割成多个区域后,分割后的像素集经常以一种适合于计算机进一步处理的形式来表示和描述。基本上,表示一个区域涉及两种选择:1)我们可以根据其外部特征(其边界)来表示区域,或2)...
  • 将一幅图像分割成多个区域后,分割后的像素集经常以一种合适于计算机进一步处理的形式来表示和描述。 表示 表示一个区域的两种选择: 根据区域外部特征(如边界)来表示区域- 根据内部特征(如组成该区域的像素)来...
  • 复数小波

    2021-03-16 20:42:00
    实系数的小波把滤波器对称子带的信息当做了同一子带,而这对得系数来说是两个不同的子带,因此复数小波变换的系数是实数小波变换的二倍,如实数小波变换后有HH, HL, LH3种子带系数,而复数小波变换有六种子带系数。...
  • 复数包含了实部和虚部,在opencv中是使用一个二通道的Mat对象来存放一个复数数组,两个通道分别存储复数的实部和虚部,图像傅里叶变换的结果就是一个使用二通道数组存放的复数数组。比如一个复数: [0+0j0+j1+0j1+j]...
  • 虽然不是专门研究图像分割的(峰兄才是),但多少接触了一点,并且图像分割是图像处理中的最为复杂的,通过图像分割可以很好地认识图像处理的好多方法。今天看的是边界追踪和链码的表示。网易计算机视觉工程师的第一...
  • 复数的一些认识

    2019-05-13 16:54:09
     根据画图,考虑n=1,n=2,…,递推n=∞时的图像结果:图像逐渐收敛于(sin θ ,cos θ )处,即 .  引式证明二:泰勒(麦克劳林)级数拼凑法    则  (这里由于复数运算契合求导法则,即i只不过是一个数) ...
  • 【一】复数与虚数

    万次阅读 2019-05-14 17:08:06
    为了表示赊欠, 又引入了复数。到此为止,实数都已经推出来了。 后来又遇到一个问题,-1的平方根是什么?显然,实数域里面是没有解得。可是,-1的平方根有很有用,例如求解一元二次方程。于是,人们就定义: ...
  • 复数复数运算 | matlab可视化 matlab2018a 01 复数 MATLAB中,复数单位通常用 1i来表示,例如z = 1 + 1i。这里需要说明的是,i也可以用来表示复数单位,但是由于i通常用作循环的变量,所以MATLAB建议定义复数时...
  • 1,程序无法绘制复数图像,若函数返回一个复数,将自动取模作为函数值进行绘制。 2,函数的表达式支持Python所有内置函数和math库,time库,random库的函数(要求函数返回的是数字)。 3,@(“g(x)”)和$(“g(x)”)...
  • 图像处理复习

    2019-06-08 09:20:06
    图像处理》复习内容 1、图像及类型 ...图像是其所表示物理信息的直接描述和概括,数字图像则是用数学方法描述图像图像为不同空间坐标上的光亮度集合。 数字图像的类型:1.矢量图(几何形状)2.位...
  • 图像傅里叶分析

    千次阅读 2013-11-16 19:11:24
    由于图像处理关心的是采样后的数据,我们需要可以处理这些数据的一种傅里叶变换。傅里叶分析可以分析不同滤波器的频率特征。本节,我们将阐述如何通过傅里叶分析认识图像的频率信息。傅里叶变换是对每个频率的幅度各...
  • 欧拉公式,复数域的成人礼

    千次阅读 多人点赞 2018-12-19 14:17:30
    之前在“复数,通往真理的最短路径”中说过,复数域其实就是二维的数域,提供了更高维度的、更抽象的视角。本文来看看,我们是怎么从实数域扩展到复数域的。 大家可能觉得这个扩展并不复杂,也就是 、 两个任意...
  • 复数的物理意义

    千次阅读 2016-02-13 10:31:09
    复数不仅有意义,而且可以用图示来优雅地解释。 1、实函数与数轴变换 大家都认识,对于这样的初等函数,我们从小就学会使用直角坐标系来刻画它们: 它们的特点都大同小异:把实数轴对应到实数轴。然而,既然是...
  • 图像修复系列-图像修复概述

    千次阅读 2016-12-03 15:14:12
    图像修复的最初是为了去除遮挡或对破损的图像就行修复,但是,修复图像是一个ill-pose(病态)问题,所示,图像修复需要一些前提假设(也就是之前提到过的正则约束),通过在一定约束条件下,建立最优化准则,从而...
  • 复数的几何意义

    千次阅读 2019-09-10 16:04:54
    复数不仅有意义,而且可以用图示来优雅地解释。1、实函数与数轴变换大家都认识,对于这样的初等函数,我们从小就学会使用直角坐标系来刻画它们:它们的特点都大同小异:把实数轴对应到实数轴。然而,...
  • 图像的几何矩

    万次阅读 多人点赞 2016-03-30 15:22:16
    矩是描述图像特征的算子,如今矩技术已广泛应用于图像检索和识别 、图像匹配 、图像重建 、数字压缩 、数字水印及运动图像序列分析等领域。常见的矩描述子可以分为以下几种:几何矩、正交矩、复数矩和旋转矩。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,131
精华内容 3,652
关键字:

复数图像表示