如何用matlab卷积实现图像的识别

如何用matlab卷积实现图像的识别,第1张

如何用matlab卷积实现图像的识别

1二维图像的卷积要用conv2

2imread 读取jpeg,如果是一般彩色的图像,会返回 行x列x3 unit8 类型的三维矩阵数据,

所谓反卷积就是把Iout再变回Iin的过程,也就是去除了滤波器的效应。

但是这个过程往往比较困难。因为卷积 *** 作往往会使得图像丢失信息,比如低通后的图像高频已经丢失,丢失的信息自然无法复原了。

尤其是实际中污染图像的系统往往还是未知的(噪声,人为破坏),这就使恢复变得更为困难,在本科课程中,看见过一个最优化的恢复滤波器,即维纳滤波,其可以比较好(从误差角度上考虑)的恢复出图像原始的样子。

图像处理反卷积的应用

最早支持反卷积是因为图像去噪跟去模糊,知道图像去模糊时候会使用反卷积技术,那个是真正的反卷积计算,会估算核,会有很复杂的数学推导,主要用在图像的预处理与数字信号处理中。

本质上反卷积是一种图像复原技术,典型的图像模糊可以看成事图像卷积 *** 作得到的结果,把模糊图像重新复原为清晰图像的过程常常被称为去模糊技术,根据模糊的类别不同可以分为运动模糊与离焦模糊,OpenCV支持对这两张模糊图像进行反卷积处理得到清晰图像。

反卷积的基本原理就是把图像转换到频率域,通过估算图像的核函数,在频率域对图像点乘计算之后,重新获取图像信息,转回为空间域。

主要 *** 作都在频率域,转换通过离散傅里叶(DFT)变换与反变换,通过维纳滤波处理获取反模糊信息,OpenCV支持反卷积采用维纳滤波方式的去模糊,但是参数调整事一个大坑,基本上每张图像的参数都不一样,很难有相同的结果。

最近这些年,图像反模糊逐步被深度学习的方法引领,OpenCV提供的那几个函数越来越少的人知道,主要是通用性很差。

卷积在工程和数学上都有很多应用:

统计学中,加权的滑动平均是一种卷积。概率论中,两个统计独立变量X与Y的和的概率密度函数是X与Y的概率密度函数的卷积。声学中,回声可以用源声与一个反映各种反射效应的函数的卷积表示。电子工程与信号处理中,任一个线性系统的输出都可以通过将输入信号与系统函数(系统的冲激响应)做卷积获得。物理学中,任何一个线性系统(符合叠加原理)都存在卷积。

介绍一个实际的概率学应用例子。假设需求到位时间的到达率为poisson(λ)分布,需求的大小的分布函数为D(),则单位时间的需求量的分布函数为 F(x):

其中 D(k)(x)为k阶卷积。

卷积是一种线性运算,图像处理中常见的mask运算都是卷积,广泛应用于图像滤波。castlman的书对卷积讲得很详细。

高斯变换就是用高斯函数对图像进行卷积。高斯算子可以直接从离散高斯函数得到:

for(i=0; i<N; i++)

{

for(j=0; j<N; j++)

{

g[iN+j]=exp(-((i-(N-1)/2)^2+(j-(N-1)/2)^2))/(2delta^2));

sum += g[iN+j];

}

}

再除以 sum 得到归一化算子

N是滤波器的大小,delta自选

首先,在提到卷积之前,必须提到卷积出现的背景。卷积是在信号与线性系统的基础上或背景中出现的,脱离这个背景单独谈卷积是没有任何意义的,除了那个所谓褶反公式上的数学意义和积分(或求和,离散情况下)。

信号与线性系统,讨论的就是信号经过一个线性系统以后发生的变化(就是输入 输出 和所经过的所谓系统,这三者之间的数学关系)。所谓线性系统的含义,就是,这个所谓的系统,带来的输出信号与输入信号的数学关系式之间是线性的运算关系。

因此,实际上,都是要根据我们需要待处理的信号形式,来设计所谓的系统传递函数,那么这个系统的传递函数和输入信号,在数学上的形式就是所谓的卷积关系。

卷积关系最重要的一种情况,就是在信号与线性系统或数字信号处理中的卷积定理。利用该定理,可以将时间域或空间域中的卷积运算等价为频率域的相乘运算,从而利用FFT等快速算法,实现有效的计算,节省运算代价。

C++语言代码: void convolution(float input1, float input2, float output, int mm, int nn){ float xx = new float[mm+nn-1]; // do convolution for (int i = 0; i < mm+nn-1; i++) { xx[i] = 00; for (int j = 0; j < mm; j++) { if (i-j > 0 && i-j < nn) xx[i] += input1[j] input2[i-j]; } } // set value to the output array for (int i = 0; i < mm; i++) output[i] = xx[i + (nn-1) / 2]; delete[] xx;}

作为计算机视觉三大任务(图像分类、目标检测、图像分割)之一,图像分割已经在近些年里有了长足的发展。这项技术也被广泛地应用于无人驾驶领域中,比如用来识别可通行区域、车道线等。

全卷积网络(Fully Convolutional Networks,FCN)是UC Berkeley的Jonathan Long等人于2015年在Fully Convolutional Networks for Semantic Segmentation一文中提出的用于图像语义分割的一种框架。虽然已经有很多文章介绍这个框架,我还是希望在此整理一下自己的理解。

整体的网络结构分为两个部分:全卷积部分和反卷积部分。其中全卷积部分借用了一些经典的CNN网络(如AlexNet,VGG,GoogLeNet等),并把最后的全连接层换成 卷积,用于提取特征,形成热点图;反卷积部分则是将小尺寸的热点图上采样得到原尺寸的语义分割图像。

网络的输入可以为任意尺寸的彩色图像;输出与输入尺寸相同,通道数为:n(目标类别数)+1(背景)。

网络在CNN卷积部分不用全连接而是替换成 卷积的目的是允许输入的为超过某一尺寸的任意大小。

由于在卷积过程中,我们的heat map变得很小(比如长宽变为原图像的 ),为了得到原图像大小的稠密像素预测,我们需要进行上采样。

一个直观的想法是进行双线性插值,而双线性插值很容易用反向卷积(backwards convolution)通过固定的卷积核来实现。反向卷积又可以被称为反卷积(deconvolution),在近期的文章中通常被称为转置卷积(transposed convolution)。

在实际应用中,作者并没有固定卷积核,而是让卷积核变成可学习的参数。

如果利用之前提到的上采样技巧对最后一层的特征图进行上采样的到原图大小的分割,由于最后一层的特征图太小,我们会损失很多细节。因而作者提出增加Skips结构将最后一层的预测(有更富的全局信息)和更浅层(有更多的局部细节)的预测结合起来,这样可以在遵守全局预测的同时进行局部预测。

FCN仍有一些缺点,比如:

得到的结果还不够精细,对细节不够敏感;

没有考虑像素与像素之间的关系,缺乏空间一致性等。

参考: zomi,全卷积网络FCN详解:知乎专栏文章

作者的其他相关文章:

PointNet:基于深度学习的3D点云分类和分割模型 详解

基于视觉的机器人室内定位

conv是卷积运算,同时也可以做多项式的乘法

C=conv2(A,B)

C=conv2(Hcol,Hrow,A)

C=conv2(,'shape')

说明:对于 C=conv2(A,B) ,conv2 的算矩阵 A 和 B 的卷积,若 [Ma,Na]=size(A), [Mb,Nb]=size(B), 则 size(C)=[Ma+Mb-1,Na+Nb-1]; C=conv2(Hcol,Hrow,A) 中,矩阵 A 分别与 Hcol 向量在列方向和 Hrow 向量在行方向上进行卷积;C=conv2(,'shape') 用来指定 conv2 返回二维卷积结果部分,参数 shape 可取值如下:

》full 为缺省值,返回二维卷积的全部结果;

》same 返回二维卷积结果中与 A 大小相同的中间部分;

valid 返回在卷积过程中,未使用边缘补 0 部分进行计算的卷积结果部分,当 size(A)>size(B) 时,size(C)=[Ma-Mb+1,Na-Nb+1]。

应用举例:

A = magic(5)

A =

17 24 1 8 15

23 5 7 14 16

4 6 13 20 22

10 12 19 21 3

11 18 25 2 9

B = [1 2 1;0 2 0;3 1 3]

B =

1 2 1

0 2 0

3 1 3

C = conv2(A,B)

C =

17 58 66 34 32 38 15

23 85 88 35 67 76 16

55 149 117 163 159 135 67

79 78 160 161 187 129 51

23 82 153 199 205 108 75

30 68 135 168 91 84 9

33 65 126 85 104 15 27

可以自己 help conv

至于gggfconv和 ggfconv,matlab 不自带这两个函数,你看到的应该是别人自己写的,用户自定义。

以上就是关于如何用matlab卷积实现图像的识别全部的内容,包括:如何用matlab卷积实现图像的识别、如何通俗的理解图像处理中常见的去卷积(反卷积 or deconvolution)、请教:C或C++中卷积的快速算法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10091434.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存