第三章:空间域处理

1、  空间域处理是指在图像的像素上操作,主要分为灰度变换和空间滤波:灰度变换的主要目的是对比度处理和阀值处理;空间滤波的主要目的是改善图像的性能,如锐化图像;

2、  基本的灰度变换函数:图像反转、对数变换、伽马变换、分段线性变换;

3、  还有基于直方图的灰度变换:直方图的横坐标是灰度值,纵坐标是该灰度值的像素个数或者频率;直方图处理包括均衡、匹配、局部处理、局部增强等。

4、  空间滤波:通过用空间滤波器模板对一个邻域里的象素进行操作而得到新的像素,总体可以分为线性和非线性空间滤波。包括:用于模糊处理和降低噪声的平滑空间滤波(线性的平滑线性滤波和非线性的统计排序滤波)、用于突出灰度过渡部分的锐化空间滤波;而在图像改善如图像增强的实际应用中,往往将多种图像增强方法结合起来使用。

5、  使用模糊技术进行灰度变换和空间滤波,在某些情况下会得到很好的效果。

6、  和空间域对应的是频率域,下面是频率域滤波的学习情况。

-----------------------------------------------------------------------------------------------------------

空间域:简单的包含像素平面,空间与技术直接在图像像素上操作;

频率域:操作在图像的傅里叶变换上执行;

---------------------------------------------------------------------------------------------------

3.1 背景知识

图像增强的主要方法

灰度变换 空间域滤波

3.2 灰度变换函数

根据问题,直接选择灰度变换函数s=T(r) ,实现图像增强。主要处理对比度、灰度动态范围等问题rs分别是输入图像f (x,y)和输出图像g (x,y)在任意点(x,y)的灰度级。

常用的变换函数有:

(1)线性函数(正比、反比、分段线性函数)

(2)对数函数

(3)幂律函数(n次幂和n次方根函数)

(4)其它特殊非线性函数

图像反转:

当输入图像的灰度级范围为[0, L-1] 的图像反转操作可由反比变换获得,表达式为:

                     s = L-1-r

用这种方式倒转图像的强度产生图像反转的对等图像。这种处理尤其适用于增强嵌入图像暗色区域的白色或灰色细节,特别是当黑色面积占主导地位时。

对数变换:

其中,c 是一个常数,且假定r>=0。对数变换常用于图像的动态范围压缩。与增强对比度相反,有时原图的动态范围太大,超出某些显示设备的允许动态范围,这时如直接使用原图,则一部分细节可能丢失。

幂率变换

其中cγ为正的常数。下图给出了g取不同值时的变换曲线。

分段线性变换函数:

  • 对比度拉升:

对比拉伸:低对比度(照明不足、传感器动态范围小,  提高图像灰度级的动态范围,改善图像对比度。

拐点(r1, s1) 和(r2, s2)的位置控制了变换函数的形状,一般假定r1<=r2且s1<=s2 ,保证变换函数为单值单调增加。

  • 灰度级分层:

目标: 突出图像中特定灰度范围的亮度.

应用:增强特征

方法一:将感兴趣范围内的所有灰度值显示为一个值,其他灰度值显示为另外一个值;

方法二:使感兴趣范围的灰度变亮(或暗),保持其他的灰度级不变

  • 比特平面分层:

低阶比特平面共享更加精细的灰度细节,高阶比特包含了视觉上很重要的大多数数据。

3.3 直方图处理

灰度直方图是灰度级的函数,描述的是图像中具有该灰度级的像元的个数。确定图像像元的灰度值范围,以适当的灰度间隔为单位将其划分为若干等级,以横轴表示灰度级,以纵轴表示每一灰度级具有的像元数或该像元数占总像元数的比例值,做出的条形统计图即为灰度直方图。如下图所示,做直方图的过程:

  • 直方图的性质:
  1. 直方图反映了图像中的灰度分布规律。它描述每个灰度级具有的像元个数,但不包含这些像元在图像中的位置信息
  2. 任何一幅特定的图像都有唯一的直方图与之对应,但不同的图像可以有相同的直方图。
  3. 如果一幅图像有两个不相连的区域组成,并且每个区域的直方图已知,则整幅图像的直方图是该两个区域的直方图之和
  • 直方图的应用:
  1. 对于每幅图像都可做出其灰度直方图。
  2. 根据直方图的形态可以大致推断图像质量的好坏。由于图像包含有大量的像元,其像元灰度值的分布应符合概率统计分布规律。假定像元的灰度值是随机分布的,那么其直方图应该是正态分布。
  3. 图像的灰度值是离散变量,因此直方图表示的是离散的概率分布。若以各灰度级的像元数占总像元数的比例值为纵坐标轴做出图像的直方图,将直方图中各条形的最高点连成一条外轮廓线,纵坐标的比例值即为某灰度级出现的概率密度,轮廓线可近似看成图像相应的连续函数的概率分布曲线

1)直方图均衡(直方图线性变换)

直方图均衡化是将原图像的直方图通过变换函数变为均匀的直方图,然后按均匀直方图修改原图像,从而获得一幅灰度分布均匀的新图像。

目的:增加像素灰度值的动态范围,增强图像整体对比度;

原理:

  • 连续灰度值:

s=T(r), 0≤r≤1

T(r)满足下列两个条件:

(1)T(r)在区间0≤r≤1中为单值且单调递增;

(2)当0≤r≤1时,0≤T(r) ≤1;

条件(1)保证原图各灰度级在变换后仍保持从黑到白(或从白到黑)的排列次序;

条件(2)保证变换前后灰度值动态范围的一致性;

Pr(r)是r的概率密度函数,Ps(s)是s的概率密度函数,Pr(r)和T(r)已知,且T-1(s) 满足上述条件(1),所以有

已知一种重要的变换函数:

关于上限的定积分的导数就是该上限的积分值 (莱布尼茨准则)

  • 离散值:

其中rk 是第k个灰度级,k = 0,1,2,…,L-1.

  nk是图像中灰度级为rk的像素个数.

  n是图像中像素的总数.

已知变换函数的离散形式为:

sk称作直方图均衡化将输入图像中灰度级为rk(横坐标)的像素映射到输出图像中灰度级为sk (横坐标)的对应像素得到.

计算过程如下:

  1. 统计原图像每一灰度级的像元数和累积像元数。
  2. 按下图公式计算变换后的值
  3. 四舍五入得到新的灰度值
  4. 统计像元

下图所示:

2)直方图匹配(规定化)

直方图匹配和直方图均衡化类似,但直方图均衡试图使输出图像具有一个平坦的直方图(可以自动确定变换函数,),而直方图匹配是为了得到一个特定形状的直方图(试凑变换函数)。

难点:寻找T(r)和G-1的有意义的表达式。

  • 连续灰度值:

  • 离散变量:

案例:

对比:

3)局部直方图处理

之前:基于正整幅图像的灰度分布为基础设计变换函数。

问题:当需要图像中小区域的细节,全局变换没有必要保证期望局部增强,因此忽略了一些像素的影响!

方法:以图像中每个像素的领域中的灰度分布为基础设计变换函数,来增强小区域细节。

过程:定义一个领域,并把该区域的中心从一个像素移至另一个像素。(逐像素取邻域,应用直方图算法修改中心点像素值;)

4)直方图统计(图像增强中使用)

直接从直方图获得的统计参数可用于图像增强。

用于增强目的的:

  • 均值:平均灰度的度量;
  • 方差(或标准差):图像对比度的度量;

取样均值、取样方差:直接从取样值来估计,不必用直方图;

全局增强:

全局均值和方差在整幅图像上计算,用于整体调节全面灰度和对比度。

局部增强:

局部均值和局部方差根据图像中每个像素的领域内的图像特征进行改变的基础

3.4 空间滤波基础

空间滤波是一种采用滤波处理的图像增强方法。其理论基础是空间卷积和空间相关。目的是改善图像质量。空间滤波的模板被称为空间滤波器(空间掩模、核、模板、窗口)。

滤波是指信号有各种频率的成分,滤掉不想要的成分,即为滤掉常说的噪声,留下想要的成分,这既是滤波的过程和目的。

线性空间滤波与频域滤波之间存在着一一对应的关系。空间滤波可以提供相当多的功能,还可以用于非线性滤波,而这在频域中是做不到的。

空间滤波机理

在图像中的任意一点(x,y),滤波器的响应g(x,y)是滤波器系数与该滤波器包围的图像像素的乘积之和。一般来说,用大小为m * n的滤波器对大小为M * N的图像进行线性空间滤波,可由下式表示:

w是滤波器的系数,f是像素值。对于m * n的模板,我们假设m = 2a + 1,n = 2b + 1,a,b为正整数。

空间相关与卷积

相关:滤波器模板移过图像并计算每个位置乘积之和的处理。

卷积:处理过程类似,但滤波器首先要旋转180°。

卷积:

互相关:

eg。以下的例子解释了相关与卷积的处理过程。

相关 卷积

我们将只包含一个1其余全是0的函数称为离散单位冲激

第一,相关是滤波器位移的函数。

一个函数与离散单位冲激相关,在该冲激位置产生这个函数的一个翻转的版本。

前面的概念很容易扩展到图像上。对于大小是m * n的滤波器,我们在图像的顶部和底部需要填充m - 1行0,在左侧和右侧填充n - 1列0.

eg。假设滤波器的大小为3 * 3。

我们将只包含一个1其余全是0的函数称为离散单位冲激

卷积的概念是线性系统理论的基石。

一个个函数与某个单位冲激卷积,得到的是在该冲激处的这个函数的拷贝

前面的概念很容易扩展到图像上。对于大小是m * n的滤波器,我们在图像的顶部和底部需要填充m - 1行0,在左侧和右侧填充n - 1列0.

eg。假设滤波器的大小为3 * 3。

其中等式右侧的减号表示翻转f(即旋转180°)。为简化符号表示,我们遵循惯例,翻转移位w而不是f。结果是一样的。

如果图像f包含一个与w完全相等的区域在图像的中心,当w位于f区域的中心时,相关函数(归一化后)的值将是最大的。如此看来,相关还可以用于寻找图像中的匹配。

使用相关或卷积执行空间滤波时优先选择的方法。事实上,无论是卷积还是相关,我们都可以通过简单的平移滤波器去执行其功能,重要的是在给定的滤波任务中,按对应于期望操作的方式来指定滤波器模板。

还有一点需要注意的是,在图像处理文献中,我们很可能会遇到卷积滤波器、卷积模板或卷积核这些术语。按照惯例,这些术语用来表示一种空间滤波器,并且滤波器未必用于真正的卷积。类似地,模板与图像卷积通常用于表示我们之前讨论得滑动乘积求和处理,而不必区分相关与卷积的差别。更合适的是,它通常用于表示两种操作之一。这一不太严密的术语是产生混淆的根源。

线性滤波的向量表示

当我们的兴趣在于相关或卷积的模板的响应特征R时,有时写成乘积的求和形式是方便的:

其中w项是一个大小为m * n的滤波器系数,z为由滤波器覆盖的相应图像的灰度值。

空间滤波器模板的产生

线性滤波器:生成m*n的滤波器要指定mn个模板系数(根据滤波器支持的操作确定)主要是实现乘积求和操作;

非线性滤波器:确定领域的大小和将对包含在领域内的图像像素执行的操作;

3.5平滑空间滤波器

平滑空间滤波器是低频增强的空间滤波技术。它的目的是模糊处理和降低噪声。平滑处理也常称为模糊处理。是因为对于线性滤波器来说,一般高通是锐化,低通是模糊。

平滑线性滤波器

平滑线性空间滤波器的输出(响应)是包含在滤波器模板邻域内的像素的简单平均值(均值滤波器,且属于低通滤波器)

这种处理的结果降低了图像灰度的尖锐变化。由于典型的随机噪声由灰度级的急剧变化组成,因此常见的平滑处理的应用就是降噪。然而,由于图像边缘(几乎总是一幅图像希望有的特性)也是由图像灰度尖锐变化带来的特性,所以均值滤波器处理还是存在着不希望有的边缘模糊的负面效应。

下面这幅图中的是最为常见的简单平均的滤波器模板

所有系数都相等的空间均值滤波器,有时也被称为盒状滤波器 box。

这个滤波器模板相比于上一个更加重要。这个滤波器模板产生加权平均,使用这一术语是指,用不同的系数去乘以像素。即一些像素的重要性(权重)比另外一些像素的重要性更大。

在这个例子所示的模板中,中心位置的系数最大,因此在均值计算中可以为该像素提供更大的权重。其他像素离中心越近就赋予越大的权重。这种加权重的策略的目的是,在平滑处理中,试图降低模糊。

我们也可以选择其他权重来达到相同的目的。但是,这个例子中所有系数的和等于16,这对于计算机来说是一个很有吸引力的特性,因为它是2的整数次幂。

一幅M * N的图像经过一个m*n的加权均值滤波器,滤波的过程可由下式给出:

当图像的细节与滤波器模板近似相同时,图像中的一些细节受到的影响比较大。邻域越大平滑的效果越好。但是邻域过大,平滑会使边缘信息损失的越大,从而使输出的图像变得模糊,因此需要合理的选择邻域的大小。

模板的大小由那些即将融入背景中的物体R的尺寸来决定。滤波后的图像中可能会有黑边。这是由于我们用0(黑色)填充原图像的边界,经滤波后,再去除填充区域的结果,某些黑的混入了滤波后的图像。对于使用较大滤波器平滑的图像,这就成了问题。

统计排序(非线性)滤波器:

以滤波器包围的图像区域中所含的像素的排序(排队)为基础,然后使用统计排序结果决定的值取代中心像素的值。以中值滤波器为代表,比系统尺寸的线性平滑滤波器的模糊程度低,对脉冲噪声(椒盐噪声)非常有效。

3.6锐化空间滤波器

锐化处理的主要目的是突出图像中的突出灰度的过渡部分,总的来说,微分算子的响应强度与图像在该点(应用了算子)的突变程度有关。这样一来,图像微分增强了边缘和其他突变(如噪声)并削弱了灰度变化缓慢的区域。

为了说明简单,主要集中讨论一阶微分的性质。我们最高兴去的微分性质是恒定灰度区域(平坦段)、突变的开头与结尾(阶梯和斜坡突变)及沿着灰度级斜坡处的特性。这些类型的突变可以用来对图像中的噪声点、细线与边缘模型化。

基础

数字函数(图像,离散的数字序列)的微分定义条件:

一阶微分定义:

(1)在平坦段(灰度不变区域)微分值为零;

(2)在灰度阶梯或斜坡的起始点处微分值非零;

(3)沿着斜坡面微分值非零。

二阶微分的定义:

(1)在平坦区微分值必为零;

(2)在灰度阶梯或斜坡的起始点处微分值非零;

(3)沿着斜坡面微分值非零。

注意下图中二阶差分的零交叉点(Zero crossing),零交叉点对于边缘的定位非常有用。

由于图像边缘处的一阶微分是极值点,图像边缘处的二阶微分应为零,确定零点的位置要比确定极值点更容易,也更准确",我们发现交叉点就是边缘,而一阶微分中却没有这样的性质

二阶微分在增强细节方面比一阶微分好得多,这是一个适合锐化图像的理想特征。

使用二阶微分进行图像锐化--拉普拉斯算子

最关注一种各向同性滤波器,这种滤波器的响应与滤波器作用的图像的突变方向无关。也就是说,各向同性滤波器是旋转不变的,即将原始图像旋转后进行滤波处理给出的结果与先对图像滤波,然后再旋转的结果相同。

最简单的各向同性微分算子是拉普拉斯算子,一个二元图像函数f(x,y)的拉普拉斯变换定义为:

因为任意阶微分都是线型操作,所以拉普拉斯变换也是一个线性操作

考虑到有两个变量,因此,在x,y方向上对二阶偏微分采用以下定义:

因此二维拉普拉斯数字实现可由这两个分量相加得到:

这里关注系数矩阵即掩膜:

这个矩阵给出了在90度方向上旋转的各向同性结果,如果向得到45度方向上旋转的各向同性结果则,将中心对角点标为1,中心点为-8即可。

拉普拉斯是一种微分算子,强调图像中灰度的突变及降低灰度慢变化的区域。将原始图像和拉普拉斯图像叠加在一起的简单方法可以保护拉普拉斯锐化处理的效果,同时又能复原背景信息。我们使用拉普拉斯变换对图像增强的基本方法可表示为下式:

含有对角线信息的拉普拉斯算子

非锐化掩蔽和高提升滤波

在印刷和出版界用了多年的图像锐化处理过程,从原图中减去一副非锐化(平滑后的)图像,达到锐化的目的。

非锐化掩蔽的步骤:

  1. 模糊源图像;
  2. 从原图像中减去模糊图像(产生的差值图像称为模板);
  3. 将模板加到原图像上;

令 表示模糊图像,那么首先我们得到模板:

然后在原图像上加上该模板的一个权重部分:

上式中:

  • 当k=1时,我们得到上面定义的非锐化掩蔽;
  • 当k>1时,该处理称为高提升滤波;
  • 当k<1时,则不强调非锐化模板的贡献。

注意:如果k足够大的时候,负值将导致边缘周围有暗的晕轮,会产生不好的效果。

使用一阶微分对(非线性)图像锐化—梯度

一个函数f在f(x,y)的梯度是定义为二维列向量(矢量,指出(x,y)处f的最大变化率的方向):

幅度值(不是线性算子):

其中M(x,y)是与原图像大小相同的图像,该图像通常称为梯度图像。后面的表达式仍保留了灰度的变换,但丢失掉了其各向同性。

  • 一阶Roberts交叉梯度算子;
  • 二阶Soble算子:

在3×3的区域图像中,应该是gx = (z8−z5) gy = (z9−z6);

Roberts算子,gx=(z9−z5),gy=(z8−z6);

由于偶数模板没有对称中心,所以与之前的卷积模板定义中,运算结果等会中心点位置值不能对应, 所以使用奇数的模板,例如3 * 3 的Soble算子,gx=(z7+2z8+z9)−(z1+2z2+z3),gy=(z3+2z6+z9)−(z1+2z4+z7)。

使用梯度进行边缘增强,可以用以突出灰度图像中看不见的小斑点,在下面的例子中甚至可以去除灰度不变或变换缓慢的图案阴影。

3.7 混合空间增强方法

用Laplace突出图像中的小细节,然后使用梯度法突出边缘。平滑过得梯度图像用于掩蔽Laplace图像,最后使用灰度变换来增大图像的灰度动态范围。其中降低噪声可以使用中值滤波器或者使用原图像梯度操作的平滑形式形成的一个模板。

3.8 使用模糊技术进行灰度变换和空间滤波

引言

隶属度函数μ(z)【特征函数】:用以描述一个元素是否属于集合的模糊程度,若是一个阶跃函数,可以认为是一个我们所了解的"干脆的"集合,若是一个分段函数,则可以看做一个模糊集合:

模糊集合论原理

模糊集合是一个有z值和(赋予z成员等级的)相应隶属度函数组成的序对,即A={z,μA(z)|z∈Z}

普通集合是模糊集合的一种,即μA(z)=0或1时;

一些集合定义:

其中隶属度函数是关键,表明了元素z到集合的一种对应关系。如果隶属度函数仅有0,1两个值,那么模糊集合退化为"干脆的"集合。下面这张图展示了模糊集合间的一些关系:

  • 模糊逻辑完全不是概率,交界处来一个集合中隶属度的等级;
  • 有一些常用的隶属度函数,如三角形、梯形、∑型、S型、钟型、截尾高斯型等

对应的隶属度函数:

  • IF-THEN规则:左侧通常为前提(条件),右侧为后果(结论);

模糊集合的应用:

基于规则的模糊逻辑应用主要步骤:

Eg:

使用模糊集合进行灰度变换

对于一副灰度图像,描述它的某个区域"暗的"、"灰的"、"亮的"都是利用模糊的概念,那么我们将给予这三种情况定义三种模糊集合:

那么对于任何输入z0,输出v0为,但是图像的细节部分得到了比较好的保留,但代价是计算量大大增加。

使用模糊集合进行空间滤波:

基本方法:定义一个领域特性,该特性“截获”滤波器支持检测的本质;

Eg:基于模糊集合概念的边缘提取算法;

如果一个像素属于平滑区(这里用领域中心像素和领域像素间的灰度差),则令其为白色,否则令其为黑色(边缘像素区域),“黑色”和“白色”为模糊集合;

数字图像处理《3、灰度变换与空间滤波》相关推荐

  1. 第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波1 - 灰度变换和空间滤波基础、Sigmoid激活函数

    这里写目录标题 本节的目标 背景 灰度变换和空间滤波基础 本节的目标 了解空间域图像处理的意义,以及它与变换域图像处理的区别 熟悉灰度变换所有的主要技术 了解直方图的意义以及如何操作直方图来增强图像 ...

  2. 第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波18 - 低通、高通、带阻和带通滤波器、组合使用空间增强方法

    低通.高通.带阻和带通滤波器 得到空间滤波器的第三种方法,生成一维滤波器函数,然后要么使用式(3.42)w=vvTw = vv^Tw=vvT生成二维可分离的滤波器函数,要么旋转这些一维函数来生成二维核 ...

  3. 第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波17 - 锐化高通滤波器 - 梯度图像(罗伯特,Sobel算子)

    目录 锐化(高通)空间滤波器 使用一阶导数锐化图像-梯度 锐化(高通)空间滤波器 平滑通过称为低通滤波 类似于积分运算 锐化通常称为高通滤波 微分运算 高过(负责细节的)高频,衰减或抑制低频 使用一阶 ...

  4. 第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波15 - 锐化高通滤波器 -拉普拉斯核(二阶导数)

    目录 锐化(高通)空间滤波器 基础 - 一阶导数和二阶导数的锐化滤波器 二阶导数锐化图像--拉普拉斯 锐化(高通)空间滤波器 平滑通过称为低通滤波 类似于积分运算 锐化通常称为高通滤波 微分运算 高过 ...

  5. 第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波8 - 直方图处理 - 直方图均衡化(全局直方图均衡化)

    直方图均衡化 灰度映射函数: s=T(r),0≤r≤L−1(3.8)s = T(r), \quad 0\leq r \leq L -1 \tag{3.8}s=T(r),0≤r≤L−1(3.8) 假设: ...

  6. 第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波16 - 锐化高通滤波器 - 钝化掩蔽和高提升滤波

    目录 锐化(高通)空间滤波器 钝化掩蔽和高提升滤波 锐化(高通)空间滤波器 平滑通过称为低通滤波 类似于积分运算 锐化通常称为高通滤波 微分运算 高过(负责细节的)高频,衰减或抑制低频 钝化掩蔽和高提 ...

  7. 第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波13 - 平滑低通滤波器 -盒式滤波器核

    这里写目录标题 平滑(低通)空间滤波器 盒式滤波器核 平滑(低通)空间滤波器 平滑(也称平均)空间滤波器用于降低灰度的急剧过渡 在图像重取样之前平滑图像以减少混淆 用于减少图像中无关细节 平滑因灰度级 ...

  8. 第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波11 - 直方图处理 - 使用直方图统计量增强图像

    使用直方图统计量增强图像 全局均值和方差 μn=∑i=0L−1(ri−m)np(ri)(3.24)\mu_{n} = \sum_{i=0}^{L-1} (r_{i} - m)^{n} p(r_{i}) ...

  9. 第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波10 - 直方图处理 - 局部直方图处理

    这里写目录标题 局部直方图处理 局部直方图处理 因为像素是由基于整个图像的灰度的变换函数修改的.这种全局性方法适合于整体增强,但当目的是增强图像中几个小区域的细节时,通常就会失败.这是因为在这些小区域 ...

  10. 第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波9 - 直方图处理 - 直方图匹配(规定化)灰度图像,彩色图像都适用

    直方图匹配(规定化) 连续灰度 s=T(r)=(L−1)∫0rpr(w)dw(3.17)s = T(r) = (L-1) \int_{0}^{r} p_r(w) \text{d} w \tag{3.1 ...

最新文章

  1. Python3中对Dict的内存优化
  2. insert size|single-read|Paired-end|Mate-pair
  3. LDP (Local Derivative Pattern)原理
  4. 使用正确的垃圾收集器将Java内存使用量降至最低
  5. Laravel框架登录功能实例
  6. python面向对象编程实例爬虫_​Python面向对象编程⑭
  7. 类型不匹配 java_java – 与泛型类型不匹配
  8. 50 岁再次创业:我希望 20 年后还能解 Bug
  9. Bootstrap 3之美03-独立行,文字环绕,图片自适应,隐藏元素
  10. python里的class_Python中的Class的讨论
  11. java的写法作文,RxJava系列文章(二) - 网络图片添加水印RxJava写法
  12. PHP底层的运行机制与原理
  13. Android Binder实现浅析-Binder驱动
  14. python 安居客 爬虫_python 自动抓取分析房价数据——安居客版
  15. Chia命令行P图工具
  16. HTML2——图像、超链接
  17. 对路径“C:\inetpub\wwwroot\Test\Temper\”的访问被拒绝 【已解决】
  18. 五款高人气商城热销蓝牙耳机,低延迟手游党最爱蓝牙耳机品牌
  19. c语言判断是否以某个字符串开头,以某个字符串结尾
  20. uvalive_6528_Disjoint water supply(DAG)

热门文章

  1. 解决Android Studio中 Google库加载失败问题
  2. 如何用一个函数修改另一个函数的值
  3. GPS怎么把经纬度转换成标准的度分秒单位
  4. 按摩师 python
  5. ajax简介跟优点讲解,简要总结ajax工作原理及优缺点
  6. DS印度Meetup倒计时2天:大数据基础设施的实践应用
  7. 手把手的教你安装PyCharm --Pycharm安装详细教程(一)(非常详细,非常实用)...
  8. VS插件(支持vs2010可用)Visual AssistX 10.6.1837安装包和破解补丁下载
  9. 移动平均法 VS 指数平滑法
  10. 180306 逆向-反调试技术(1)BeingDebugged