3

图像处理理论(三)——图像金字塔, 双边滤波, Steerable滤波, Gabor滤波

 2 years ago
source link: http://antkillerfarm.github.io/graphics/2016/07/16/graphics_3.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

边缘检测(续)

sx=[0−1d10−1−d10],sy=[d−10−10101−d]

对称梯度算子和波纹算子都属于边缘子空间基。

sx=[010−10−1010],sy=[−10100010−1]

直线算子和拉普拉斯算子都属于直线子空间基。

如果像素(s,t)在像素(x,y)的领域,且满足以下条件:

幅度阀值∣G(s,t)−G(x,y)∣≤幅度阀值T角度阀值∣θ(s,t)−θ(x,y)∣≤角度阀值A

则可将像素(s,t)和像素(x,y)连接起来。

canny算法

Canny边缘检测算子是John F.Canny于1986年开发出来的一个多级边缘检测算法。

John F. Canny,1958年生,澳大利亚计算机科学家。MIT博士,UCB教授。

1.应用高斯滤波来平滑图像,目的是去除噪声。

2.找寻图像的强度梯度(intensity gradients)

3.应用非最大抑制(non-maximum suppression)技术来消除边误检(本来不是但检测出来是)。

4.应用双阈值的方法来决定可能的(潜在的)边界。

5.利用滞后技术来跟踪边界。

1、2的基本原理,上面已经讨论过了,这里不再赘述。

非最大抑制

图中的数字代表了像素点的梯度强度,箭头方向代表了梯度方向。以第二排第三个像素点为例,由于梯度方向向上,则将这一点的强度(7)与其上下两个像素点的强度(5和4)比较,由于这一点强度最大,则保留。

双阈值(Double Thresholding)

设定一个阈值上界和阈值下界,图像中的像素点如果大于阈值上界,则认为必然是边界(称为强边界,strong edge),小于阈值下界则认为必然不是边界,两者之间的,被认为是候选项(称为弱边界,weak edge)。

滞后的边界跟踪

和强边界相连的弱边界认为是边界,其他的弱边界则被抑制。

http://www.cse.iitd.ernet.in/~pkalra/csl783/canny.pdf

距离变换(distance transform)是一种将二值图像灰度化的变换。

首先对图像进行二值化处理(这里的二值化通常是边缘检测后的结果),然后给每个像素赋值为离它最近的边界像素点与其的距离(Manhattan距离或欧氏距离),以得到distance metric(距离矩阵),那么离边界越远的点越亮。

这种效果通常叫做羽化效果。

常用的距离公式有:

ρ(r)=r22ρ(r)=rρ(r)=2(1+r22−1)ρ(r)=C2(rC−log(1+rC)),C=1.3998ρ(r)=C22[1−exp⁡(−(rC)2)],C=2.9846

锐化是与模糊相反的图像操作,它的主要思想是增大图像色彩(或灰度)的对比度,简单的说就是:让亮的更亮,让暗的更暗。因此,锐化操作和边缘检测有很大的共同点,常用的锐化算法有梯度锐化和拉普拉斯锐化。

g={f+C,G>Tf,G≤T

当像素(x,y)的梯度G大于阀值T时,在旧的像素值f上加上常数C,否则,保持原值。

拉普拉斯锐化

g=f+∇2f

其中∇2f表示f的二阶导数。

图像金字塔

一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低,且来源于同一张原始图的图像集合。

图像金字塔在机器视觉和图像压缩领域使用的比较多,比如OpenGL中的纹理处理。

图像金字塔有两种基本操作:

1.对图像向上采样:PyrUp——图像尺寸加倍。

2.对图像向下采样:PyrDown——图像尺寸减半。

这两种操作由于是针对图像尺寸而言的,因此,其方向和上图所示的金字塔的方向相反

高斯金字塔

高斯金字塔是通过高斯平滑和亚采样获得一些列下采样图像,也就是说第K层高斯金字塔通过平滑、亚采样就可以获得K+1层高斯图像,高斯金字塔包含了一系列低通滤波器,其截至频率从上一层到下一层是以因子2逐渐增加,所以高斯金字塔可以跨越很大的频率范围。

拉普拉斯金字塔

一般来说,由于PyrDown的过程会损失部分图像信息,因此通常情况下:

Gi≠PyrUp(PyrDown(Gi))

为了使PyrUp和PyrDown可逆,这里引入拉普拉斯金字塔的概念。其定义如下:

Li=Gi−PyrUp(Gi+1)=Gi−Up(Gi+1)⊗H5×5

其中UP操作是将源图像中位置为(x,y)的像素映射到目标图像的(2x+1,2y+1)位置,H5×5表示5x5的高斯核。

整个拉普拉斯金字塔运算过程可以通过下图来概括:

图中最左列和最右列都是高斯金字塔,中间一列是拉普拉斯金字塔。

注:严格来说,这样的金字塔应该叫做高斯差分金字塔,只不过高斯差分恰好是拉普拉斯算子的近似解,故名。

https://mp.weixin.qq.com/s/d17B0KaevV1LJDNgxgPLhg

深度优化局部拉普拉斯金字塔滤波器

Steerable金字塔

将拉普拉斯金字塔中的高斯滤波函数,换成Steerable滤波函数即可。

双边滤波(Bilateral filter)

双边滤波(Bilateral filter)是一种可以保边去噪的滤波器。其输出像素的值依赖于邻域像素的值的加权组合,即:

g(i,j)=∑k,lf(k,l)w(i,j,k,l)∑k,lw(i,j,k,l)h=w(i,j,k,l)∑k,lw(i,j,k,l)w(i,j,k,l)=d(i,j,k,l)⋅r(i,j,k,l)=exp⁡(−(i−k)2+(j−l)22σd2)⋅exp⁡(−‖f(i,j)−f(k,l)‖22σr2)

这里的d(i,j,k,l)由于只与定义域有关,通常叫做“定义域核”。实际上,这就是一个高斯滤波核。而r(i,j,k,l)由于和像素值的差有关(像素差越大,权重越小),也被叫做“值域核”。

从效果来说,双边滤波可产生类似美肤的效果。皮肤上的皱纹和斑,与正常皮肤的差异,远小于黑白眼珠之间的差异,因此前者被平滑,而后者被保留。

为了体现效果,这里来张大叔的照片。

https://mp.weixin.qq.com/s/JbrZRTwkI7yeC5hOr8g_Mw

Bilateral Solver双边算子原理及应用

https://zhuanlan.zhihu.com/p/310710051

pytorch实现双边滤波

https://blog.csdn.net/weixin_43194305/article/details/88959183

导向滤波(Guided Filter)公式详解

https://zhuanlan.zhihu.com/p/161666126

导向滤波原理(Guided Filter)

https://zhuanlan.zhihu.com/p/279602383

四种图像滤波算法实现及原理解析

Steerable滤波

高斯滤波是一种各向同性滤波,如果想要对特定方向进行滤波的话,可使用Steerable滤波。

对最简二维高斯函数G(x,y)=e−(x2+y2)求1阶偏导可得:

G10=∂G(x,y)∂x=−2xe−(x2+y2),G1π2=∂G(x,y)∂y=−2ye−(x2+y2)

这就是两个轴向上的1阶Steerable滤波函数。

任意角度的1阶Steerable滤波函数为:

G1θ=cos⁡θG10+sin⁡θG1π2

如果对高斯函数求2阶偏导,还可得到2阶Steerable滤波函数。进一步的讨论详见参考论文。

1991年IEEE论文:《The Design and Use of Steerable Filters》

作者:William T. Freeman,斯坦福大学本科+斯坦福/康奈尔大学双料硕士+麻省理工学院博士,麻省理工学院教授。1987年,曾做为访问学者在太原理工大学待了一学年。不知道爱不爱吃刀削面(^ω^)

Edward H. Adelson,密歇根大学博士,麻省理工学院教授。

Gabor滤波

基、线性无关、正交

一般的函数可以展开为幂级数或者Fourier级数。这些级数中的幂函数或者正弦函数,被称作“基(basis)函数”。

基的属性主要涉及“线性无关”和“正交”这两个名词。

线性无关的几何含义:在R3(3维空间)中,如果三个向量不共面,则它们相互线性无关。

基如果线性无关,则其函数的级数展开式是唯一的。由于线性相关基使用的比较少,以下如无特指,基均为线性无关基。

正交的几何含义:两个向量正交,则它们是相互垂直的。

正交基一定线性无关,反之则不成立。一般采用施密特正交化方法,将线性无关基,转换为正交基。

幂级数是线性无关基,而Fourier级数是正交基。

Gabor wavelet

除了以上两种常用的基函数外,其他函数也可以作为基函数。其中使用最多的基函数是小波(wavelet)函数,其变换也被称作小波变换。

需要指出的是,小波函数不是一个函数,而是一类函数。Gabor函数就是小波函数的其中一种,其定义如下:

gt,n(x)=g(x−al)e2πibnx,−∞<l,n<+∞

这里的a,b为常数,g为L2(R)(立方可积函数),且∥g∥=1。

注:Dennis Gabor(1900~1979),全息学创始人,1971年获诺贝尔物理学奖,著有《Theory of Communication》(1946)。

当g为高斯函数时,可得到Gabor wavelet:

f(x)=e−(x−x0)2/a2e−ik0(x−x0)

Gabor wavelet的性质:

1.Gabor wavelet的Fourier变换还是Gabor wavelet:

F(k)=e−(k−k0)2a2e−ix0(k−k0)

2.从物理上来说,Gabor wavelet等效于在一个正弦载波(频域)上,调制一个高斯函数(时空域)。这也是Dennis Gabor最早提出它的时候的用途。

3.Fourier变换是信号在整个时域内的积分,因此反映的是信号频率的统计特性,没有局部化分析信号的功能。而Gabor变换是一种短时Fourier变换,具有良好的时频局部化特性,即非常容易地调整Gabor滤波器的方向、基频带宽及中心频率,从而能够最好的兼顾信号在时空域和频域中的分辨能力。

Gabor filter

将Gabor wavelet扩展到2维,可得到Gabor filter(图像实际上就是一种2维信号):

g(x,y;λ,θ,ψ,σ,γ)=exp⁡(−x′2+γ2y′22σ2)exp⁡(i(2πx′λ+ψ))x′=xcos⁡θ+ysin⁡θ,y′=−xsin⁡θ+ycos⁡θ


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK