当前位置: 首页 > news >正文

图像处理-Ch2-空间域的图像增强

Ch2 空间域的图像增强

文章目录

  • Ch2 空间域的图像增强
    • Background
    • 空间滤波(Spatial Filtering)
      • 线性移不变系统与卷积
        • 强无敌例子说明
      • 线性空间滤波(Linear Spatial Filtering)
        • Correlation v.s. Convolution
      • 非线性空间滤波(Nonlinear Spatial Filtering)
        • 锐化(高通)空间滤波器(Sharpening Spatial Filters)
          • 拉普拉斯滤波器(Laplacian Filter)
        • 钝化掩蔽和高提升滤波(Unsharp masking and high-boost filtering)

The principal objective of enhancement is to proce s s s an image so that the result is more suitable than the original image for a specific application.

图像增强的目的:使图像更适于特定应用。

图像增强分为两大类:

  • 空间域方法:对图像中像素直接操作。
  • 频率域方法:对图像傅里叶变换进行修改。

Background

空间域处理数学表达:
g ( x , y ) = T [ f ( x , y ) ] g(x,y)=T[f(x,y)] g(x,y)=T[f(x,y)]

  • f ( x , y ) f(x,y) f(x,y): 输入图像
  • g ( x , y ) g(x,y) g(x,y): 输出图像
  • T T T: an operator on f f f, defined over some neighborhood of ( x , y ) (x, y) (x,y). 在 ( x , y ) (x,y) (x,y)一个邻域上定义的对 f f f的算子。

Q: 算子?邻域?

A: 算子可应用于单幅图像的pixels or 一组图像的 pixels.

邻域一般是 ( x , y ) (x,y) (x,y)周边的8个格子( 3 × 3 , ( x , y ) 3\times 3, (x,y) 3×3,(x,y)处于中心)、可能还有矩形或是圆形。

最简单的 T T T是邻域 1 × 1 1\times 1 1×1的(也就是只有本身 ( x , y ) (x,y) (x,y)),称为灰度变换函数。
s = T ( r ) s=T(r) s=T(r)
s , r s,r s,r分别表示 g , f g,f g,f在任意点 ( x , y ) (x,y) (x,y)处的灰度。

灰度变换函数(Gray-level Transformation)

对数变换(Logarithmic)

s = c log ⁡ ( 1 + r ) s=c\log(1+r) s=clog(1+r)

c c c是常数, r ≥ 0 r\ge 0 r0.

对数变换的作用

  • 动态范围压缩:当输入图像的灰度值范围非常宽(例如 0 到 10610^6106),直接显示会丢失暗部细节。通过对数变换,可以将宽动态范围压缩到更可管理的范围。
  • 细节增强:低强度值区域的细节被拉伸并增强,因此在频谱图像、医学图像中常用。

对数变换的曲线特性:

  • 对数变换的形状固定。此变换的形状类似于 γ \gamma γ曲线,两个尺度上的低值均设置为 0,高值均设置为 1。
  • r r r 较小时,输出 s s s增长较快(细节增强)。
  • r r r 较大时,输出 s s s 增长减缓(压缩动态范围)。
  • Gamma 校正 不同,对数变换的曲线形状不可调。
幂律变换(Power-Law)

s = c r γ s=cr^{\gamma} s=crγ

其中, c , γ c,\gamma c,γ是正常数(positive constants)。

image-20241220104929919

分段线性变换函数(Piecewise-Linear)
对比度拉伸(Contrast-Stretching)

对比度拉伸是一种用于增强图像对比度的强度变换方法。通过对灰度值的拉伸,使暗区域更暗、亮区域更亮,从而增强图像的视觉效果。

对比度拉伸的公式可以定义为:
s = T ( r ) = 1 1 + ( m r ) E s = T(r) = \frac{1}{1 + \left(\frac{m}{r}\right)^E} s=T(r)=1+(rm)E1

  • s s s: 输出像素的灰度值。
  • r r r: 输入像素的灰度值。
  • m m m: 输入图像灰度值的中点(灰度范围的阈值)。
  • E E E: 函数的幂次,用于控制拉伸的坡度(陡峭程度)。

对比度拉伸的作用:

  • 增强图像细节:使图像中灰度分布更加均匀,提升对比度。
  • 突出某些特定灰度值区域:通过调整参数 m m m E E E,可以针对性地增强某些灰度值范围。
  • 解决低对比度问题:例如,在过暗或过亮的图像中,灰度值集中在某一小范围内时,拉伸可以增加动态范围,提升视觉效果。
灰度级分层(Gray-level Slicing)

突出图像中的特定灰度区间:

  • method1:(二值图像) 将感兴趣范围内的所有灰度值显示为一个值、将其他所有灰度值显示为另外一个值。

  • method2:基于下图中的变换,使期望的灰度范围变亮(/变暗),但保持图像中其他的灰度级不变。

    image-20241220105449485

比特平面分层(Bit-plane slicing): 像素值是由比特组成的整数。8比特图像可以视为8个1比特平面组成,其中plane 1中包含图像中所有图像的最低有效比特、plane 8包含所有像素的最高有效比特。

image-20241220111120761

直方图处理(Histogram Processing)

图像的直方图是一种统计工具,用来描述图像中像素强度(灰度值)的分布情况。

f f f的非归一化直方图定义为:
h ( r k ) = n k , k = 0 , 1 , … , L − 1 h(r_k)=n_k,k=0,1,\dots,L-1 h(rk)=nk,k=0,1,,L1

其中, r k r_k rk表示一副 L L L级灰度数字图像 f ( x , y ) f(x,y) f(x,y)的灰度, n k n_k nk表示 f f f中灰度为 r k r_k rk的像素的数量,并且细分的灰度级称为直方图容器。

f f f的归一化直方图定义为:
p ( r k ) = h ( r k ) M N = n k M N p(r_k)=\frac{h(r_k)}{MN}=\frac{n_k}{MN} p(rk)=MNh(rk)=MNnk
其中 M , N M,N M,N分别是图像的行数和列数。(这是书上给出的公式)

或者也可以写成(PPT中给出的公式):
p ( r k ) = h ( r k ) N = n k N N = ∑ k = 0 L − 1 n k , k = 0 , 1 , … , L − 1 p(r_k)=\frac{h(r_k)}{N}=\frac{n_k}{N}\\ N=\sum^{L-1}_{k=0}n_k,\ k=0,1,\dots,L-1 p(rk)=Nh(rk)=NnkN=k=0L1nk, k=0,1,,L1
殊途同归。 p ( r k ) p(r_k) p(rk)是对图像中出现的灰度级 r k r_k rk的概率的估计。对k的所有值, p ( r k ) p(r_k) p(rk)的和总是1.

直方图均衡化(Histogram Equalization)

直方图均衡化是一种自动调整图像亮度分布的方法,通过重新分配像素灰度值,使输出图像的灰度直方图尽可能接近均匀分布,从而增强图像的整体对比度。

假设灰度值最初是连续的,令变量 r r r表示待处理图像的灰度。 r = [ 0 , L − 1 ] r=[0,L-1] r=[0,L1], r = 0 r=0 r=0黑色, r = L − 1 r=L-1 r=L1白色。对于这些满足条件的 r r r,我们关注如下的灰度映射:
s = T ( r ) , 0 ≤ r ≤ L − 1 s=T(r),\quad 0\le r\le L-1 s=T(r),0rL1
对于输入图像中的给定灰度值 r r r, 它将产生一个输出灰度值 s s s。假设:

  • T ( r ) T(r) T(r)在区间 [ 0 , L − 1 ] [0,L-1] [0,L1]上是一个单调递增函数.
  • 0 ≤ r ≤ L − 1 0\le r\le L-1 0rL1, 有 0 ≤ T ( r ) ≤ L − 1 0\le T(r)\le L-1 0T(r)L1.

假使我们想从 s s s逆推回 r r r, 那么就是 T T T的逆变换。如果想这个倒推成立,那么就需要是严格递增函数,不然自变量与因变量就不是一一对应的关系

image-20241220165317323

直方图均衡化基于概率密度函数(PDF:probability density function),产生一个随机变量。

连续变量 r , s r,s r,s

p s ( s ) = p r ( r ) ∣ d r d s ∣ = p r ( r ) ∣ 1 ( L − 1 ) p r ( r ) = 1 L − 1 , 0 ≤ s ≤ L − 1 p_s(s)=p_r(r)\left\vert\frac{dr}{ds}\right\vert=p_r(r)\vert\frac 1 {(L-1)p_r(r)}=\frac 1{L-1},\quad 0\le s\le L-1 ps(s)=pr(r) dsdr =pr(r)(L1)pr(r)1=L11,0sL1

其中 p r ( r ) , p s ( s ) p_r(r), p_s(s) pr(r),ps(s)分别表示两幅不同图像中灰度值 r , s r,s r,s的概率密度函数(PDF). p p p的下标表明 p r , p s p_r,p_s pr,ps是不同的函数。可见 p s ( s ) p_s(s) ps(s)是均匀(uniform)PDF, T ( r ) T(r) T(r)取决于 p r ( r ) p_r(r) pr(r), 但 p s ( s ) p_s(s) ps(s)永远是均匀的。

**概率论基本结论:**若已知 p r ( r ) , T ( r ) p_r(r),T(r) pr(r),T(r), 且 T ( r ) T(r) T(r)是连续的且在感兴趣的值域上是可微的,则变换侯的变量 s s s的PDF是:
p s ( s ) = p r ( r ) ∣ d r d s ∣ p_s(s)=p_r(r)\left\vert\frac{dr}{ds}\right\vert ps(s)=pr(r) dsdr
累计分布函数(CDF: cumulative distribution function):由于PDF总为正,且函数的积分是函数下方的面积,因此可以证明 s = T ( r ) s=T(r) s=T(r)是单调递增函数。
s = T ( r ) = ∫ 0 r p r ( w ) d w s=T(r)=\int^r_0 p_r(w)dw s=T(r)=0rpr(w)dw
计算微分:
d s d r = d T ( r ) d r = d [ ∫ 0 r p r ( w ) d w ] d r = p r ( r ) p s ( s ) = p r ( r ) ∣ d r d s ∣ = p r ( r ) ∗ 1 p r ( r ) = 1 , 0 ≤ s ≤ 1 \frac{ds}{dr}=\frac{dT(r)}{dr}=\frac{d\left[\int^r_0 p_r(w)dw\right]}{dr}=p_r(r)\\ p_s(s)=p_r(r)\left\vert\frac{dr}{ds}\right\vert=p_r(r)*\frac{1}{p_r(r)}=1,\quad 0\le s\le 1 drds=drdT(r)=drd[0rpr(w)dw]=pr(r)ps(s)=pr(r) dsdr =pr(r)pr(r)1=1,0s1
假如说 0 ≤ s ≤ L − 1 0\le s\le L-1 0sL1,则有:
p s ( s ) = p r ( r ) ∣ d r d s ∣ = p r ( r ) ∗ 1 ( L − 1 ) p r ( r ) = 1 L − 1 , 0 ≤ s ≤ L − 1 p_s(s)=p_r(r)\left\vert\frac{dr}{ds}\right\vert=p_r(r)*\frac{1}{(L-1)p_r(r)}=\frac 1 {L-1}, \quad 0\le s\le L-1 ps(s)=pr(r) dsdr =pr(r)(L1)pr(r)1=L11,0sL1

离散变量 r , s r,s r,s

在离散的条件下有, 下列数学表达。需要注意,第一个是书上给出、第二个是PPT中给出,二者没什么大的差别。灰度级 r k r_k rk在一副图像中出现的概率是:
p r ( r k ) = h ( r k ) M N = n k M N p r ( r k ) = n k N , k = 0 , 1 , … , L − 1 p_r(r_k)=\frac{h(r_k)}{MN}=\frac{n_k}{MN} \\ p_r(r_k)=\frac{n_k}{N},\quad k=0,1,\dots,L-1 pr(rk)=MNh(rk)=MNnkpr(rk)=Nnk,k=0,1,,L1
灰度映射函数是:
s = T ( r k ) = ∑ j − 0 k p r ( r j ) = ∑ j − 0 k n k M N s = T ( r k ) = ∑ j − 0 k p r ( r j ) = ∑ j = 0 k n j N s=T(r_k)=\sum^k_{j-0}p_r(r_j)=\sum^k_{j-0}\frac{n_k}{MN}\\ s=T(r_k)=\sum^k_{j-0}p_r(r_j)=\sum^k_{j=0}\frac{n_j}{N} s=T(rk)=j0kpr(rj)=j0kMNnks=T(rk)=j0kpr(rj)=j=0kNnj
使用这个函数可以将输入图像中灰度级为 r k r_k rk的每个像素映射到输出图像中灰度级为 s k s_k sk的对应像素,这称为直方图均衡化/直方图线性化变换。

直方图匹配(Histogram Matching)

直方图均衡化产生一个变换函数,试图生成一副具有均匀直方图的输出图像。但有时候不适用,有时候需要规定待处理图像的直方图形状。用于生成具有规定直方图图像的方法,称为直方图匹配或是直方图均衡化。

r , z r,z r,z是PDF p r ( r ) , p z ( Z ) p_r(r),p_z(Z) pr(r),pz(Z)的随机变量。 r , z r,z r,z分别表示输入图像和输出图像的灰度级。 p z ( z ) p_z(z) pz(z)是规定的PDF,是我们希望输出图像具有的。

计算直方图匹配三步走

  1. 计算输入图像的直方图 p r ( r ) p_r(r) pr(r), 得到 s k s_k sk
  2. 计算 G ( z q ) = ( L − 1 ) ∑ i = 0 q p z ( z i ) G(z_q)=(L-1)\sum^q_{i=0}p_z(z_i) G(zq)=(L1)i=0qpz(zi) p z ( z ) p_z(z) pz(z)是规定直方图的所有值。
  3. 计算 G ( z q ) = s k G(z_q)=s_k G(zq)=sk, 求 G − 1 G^{-1} G1, 找到对应的 z q z_q zq的对应值,匹配,形成直方图规定化后的图像。
连续变量 r , s , z r,s,z r,s,z

s s s是一个具有如下性质的随机变量:
s = T ( r ) = ( L − 1 ) ∫ 0 r p r ( w ) d w s=T(r)=(L-1)\int^r_0p_r(w)dw s=T(r)=(L1)0rpr(w)dw
定义关于变量 z z z的一个函数 G G G, 它具有如下的性质:
G ( z ) = ( L − 1 ) ∫ 0 z p z ( v ) d v = s G(z)=(L-1)\int^z_0p_z(v)dv=s G(z)=(L1)0zpz(v)dv=s
由这两个公式可知: G ( z ) = s = T ( r ) G(z)=s=T(r) G(z)=s=T(r), 因此 z z z必定满足条件:
z = G − 1 ( s ) = G − 1 [ T ( r ) ] z=G^{-1}(s)=G^{-1}[T(r)] z=G1(s)=G1[T(r)]
使用输入图像算出 p r ( r ) p_r(r) pr(r)后,就可以得到 s s s, 有了 s s s, 就能得到 p z ( z ) p_z(z) pz(z)

离散变量 r , s , z r,s,z r,s,z

s k = T ( r k ) = ( L − 1 ) ∑ j = 0 k p r ( r j ) , k = 0 , 1 , … , L − 1 G ( z q ) = ( L − 1 ) ∑ i = 0 q p z ( z i ) = s k z q = G − 1 ( s k ) s_k=T(r_k)=(L-1)\sum^k_{j=0}p_r(r_j),\quad k=0,1,\dots,L-1\\ G(z_q)=(L-1)\sum^q_{i=0}p_z(z_i)=s_k\\ z_q=G^{-1}(s_k) sk=T(rk)=(L1)j=0kpr(rj),k=0,1,,L1G(zq)=(L1)i=0qpz(zi)=skzq=G1(sk)

QA

Q: 离散情况下,通常直方图均衡并不能产生绝对平坦的输出直方图?

A:–

  • 离散累计映射并不能保证该映射是单调递增的,只能保证是单调不减的;
  • 累计映射的输出值需要转化成整型的灰度级,转化的过程中出现多对一的关系,这是造成输出直方图不平坦的重要原因。

直方图均衡只能使用一次,多次使用没有效果;直方图均衡时直方图匹配的一个特例。

空间滤波(Spatial Filtering)

  • 在空间滤波(相对于频域滤波)中,输出图像是通过对输入图像的像素进行简单计算直接计算得出的。
  • 空间滤波可以是线性的,也可以是非线性的。
  • 对于每个输出像素,计算中都会用到输入像素的某个邻域。(空间滤波通过把每个pixel的值替换为该pixel及其邻域的函数值来修改图像)

线性移不变系统与卷积

线性系统 H H H: 满足加法和数乘=线性

  • 可叠加性: H [ f 1 ( x , y ) + f 2 ( x , y ) ] = H [ f 1 ( x , y ) ] + H [ f 2 ( x , y ) ] H[f_1(x,y)+f_2(x,y)]=H[f_1(x,y)]+H[f_2(x,y)] H[f1(x,y)+f2(x,y)]=H[f1(x,y)]+H[f2(x,y)]
  • 伸缩性: H [ a f ( x , y ) ] = a H [ f ( x , y ) ] H[af(x,y)]=aH[f(x,y)] H[af(x,y)]=aH[f(x,y)]

移不变系统 H H H: 规律不会随着移动进行改变。比如时不变:不会随着时间改变而改变。

  • 移不变性: H [ f ( x , y ) ] = g ( x , y ) , H [ f ( x − a , y − b ) ] = g ( x − a , y − b ) H[f(x,y)]=g(x,y),H[f(x-a,y-b)]=g(x-a,y-b) H[f(x,y)]=g(x,y),H[f(xa,yb)]=g(xa,yb)

对一个线性移不变系统而言:它的单位脉冲响应=系统的响应特性。

即,只要知道了这个系统的单位脉冲响应,我就能推断处这个系统对任何输入的响应。

卷积时用于计算线性移不变系统输入与输出的数学模型:如果知道该系统的单位脉冲响应 h ( x , y ) h(x,y) h(x,y),则该系统的输入 f ( x , y ) f(x,y) f(x,y)与输出 g ( x , y ) g(x,y) g(x,y)之间可以表示为: g ( x , y ) = f ( x , y ) ∗ h ( x , y ) g(x,y)=f(x,y)* h(x,y) g(x,y)=f(x,y)h(x,y).

强无敌例子说明

首先
z [ t ] = x [ t ] ∗ y [ t ] = [ 1 ] ∗ [ 2 0 − 2 ] = [ 2 0 − 2 ] z[t] = x[t] * y[t] = [1] * [2 \ 0 \ -2] = [2 \ 0 \ -2] z[t]=x[t]y[t]=[1][2 0 2]=[2 0 2]
一般地当输入 (单位脉冲响应$)
x [ t ] = [ 1 ] , x[t] = [1], x[t]=[1],

z [ t ] = x [ t ] ∗ y [ t ] = y [ t ] z[t] = x[t] * y[t] = y[t] z[t]=x[t]y[t]=y[t]

现在有输入:
x [ t ] = [ 1 2 3 ] = 1 ⋅ [ 1 0 0 ] + 2 ⋅ [ 0 1 0 ] + 3 ⋅ [ 0 0 1 ] x[t] = [1 \ 2 \ 3] = 1 \cdot [1 \ 0 \ 0] + 2 \cdot [0 \ 1 \ 0] + 3 \cdot [0 \ 0 \ 1] x[t]=[1 2 3]=1[1 0 0]+2[0 1 0]+3[0 0 1]

信号响应
x 0 = 1 ⋅ [ 1 0 0 ] x_0 = 1 \cdot [1 \ 0 \ 0] x0=1[1 0 0] z 0 = [ 1 ⋅ 2 1 ⋅ 0 1 ⋅ ( − 2 ) 0 0 0 ] z_0 = [1 \cdot 2 \ 1 \cdot 0 \ 1 \cdot (-2) \ 0 \ 0 \ 0] z0=[12 10 1(2) 0 0 0]
x 1 = 2 ⋅ [ 0 1 0 ] x_1 = 2 \cdot [0 \ 1 \ 0] x1=2[0 1 0] z 1 = [ 0 2 ⋅ 2 2 ⋅ 0 2 ⋅ ( − 2 ) 0 ] z_1 = [0 \ 2 \cdot 2 \ 2 \cdot 0 \ 2 \cdot (-2) \ 0] z1=[0 22 20 2(2) 0]
x 2 = 3 ⋅ [ 0 0 1 ] x_2 = 3 \cdot [0 \ 0 \ 1] x2=3[0 0 1] z 2 = [ 0 0 3 ⋅ 2 3 ⋅ 0 3 ⋅ ( − 2 ) ] z_2 = [0 \ 0 \ 3 \cdot 2 \ 3 \cdot 0 \ 3 \cdot (-2)] z2=[0 0 32 30 3(2)]

当我们把信号 x 0 , x 1 , x 2 x_0, x_1, x_2 x0,x1,x2 叠加起来刺激系统时,有响应变成对应响应的叠加:
z [ t ] = z 0 + z 1 + z 2 = [ 2 , 4 , 4 , − 4 , − 6 ] z[t] = z_0 + z_1 + z_2 = [2, 4, 4, -4, -6] z[t]=z0+z1+z2=[2,4,4,4,6]

线性空间滤波(Linear Spatial Filtering)

对一幅图像 f M × N f_{M\times N} fM×N, 大小为 m × n m\times n m×n的线性滤波器掩码为:
g ( x , y ) = ∑ s = − a a ∑ t = − b b w ( s , t ) f ( x + s , y + t ) a = m − 1 2 , b = n − 1 2 g(x,y)=\sum^a_{s=-a}\sum^b_{t=-b}w(s,t)f(x+s,y+t)\\ a=\frac{m-1}{2},b=\frac{n-1}2 g(x,y)=s=aat=bbw(s,t)f(x+s,y+t)a=2m1,b=2n1
上式称为相关。Filter masks(滤波器掩码)有时也叫做卷积掩码/卷积核。

Correlation v.s. Convolution
  • 相关运算:在图像上移动核的中心,并且在每个位置计算乘积之和。
    ( f ⋆ g ) ( τ ) = ∫ − ∞ ∞ f ∗ ( t ) g ( t + τ ) ( f ⋆ g ) [ n ] = ∑ m = − ∞ ∞ f [ m ] g [ m + n ] \begin{align} (f\star g)(\tau)&=\int^\infty_{-\infty}f^*(t)g(t+\tau)\\ (f\star g)[n]&=\sum^{\infty}_{m=-\infty}f[m]g[m+n] \end{align} (fg)(τ)(fg)[n]=f(t)g(t+τ)=m=f[m]g[m+n]

  • 卷积运算:将相关运算的核旋转180°。
    ( f ∗ g ) ( τ ) = ∫ − ∞ ∞ f ( t ) g ( − t + τ ) ( f ∗ g ) [ n ] = ∑ m = − ∞ ∞ f [ m ] g [ − m + n ] \begin{align} (f* g)(\tau)&=\int^\infty_{-\infty}f(t)g(-t+\tau)\\ (f* g)[n]&=\sum^{\infty}_{m=-\infty}f[m]g[-m+n] \end{align} (fg)(τ)(fg)[n]=f(t)g(t+τ)=m=f[m]g[m+n]

image-20241220224250812

对于这个例子,

  • “same” correlation res: 08242100
  • “same” convolution res:01242800

image-20241220233119440

书中给出的二维定义:
convolution: ( w ∗ f ) ( x , y ) = ∑ s = − a a ∑ t = − b b w ( s , t ) f ( x − s , y − t ) correlation: ( w ⋆ f ) ( x , y ) = ∑ s = − a a ∑ t = − b b w ( s , t ) f ( x + s , y + t ) \text{convolution:}(w*f)(x,y)=\sum^a_{s=-a}\sum^b_{t=-b} w(s,t)f(x-s,y-t)\\ \text{correlation:}(w\star f)(x,y)=\sum^a_{s=-a}\sum^b_{t=-b} w(s,t)f(x+s,y+t) convolution:(wf)(x,y)=s=aat=bbw(s,t)f(xs,yt)correlation:(wf)(x,y)=s=aat=bbw(s,t)f(x+s,y+t)

性质卷积(Convolution)相关(Correlation)
交换性 f ∗ g = g ∗ f f*g=g*f fg=gf
结合性 f ∗ ( g ∗ h ) = ( f ∗ g ) ∗ h f*(g*h)=(f*g)*h f(gh)=(fg)h
分配性 f ∗ ( g + h ) = f ∗ g + f ∗ h f*(g+h)=f*g+f*h f(g+h)=fg+fh f ⋆ ( g + h ) = f ⋆ g + f ⋆ h f\star (g+h)=f\star g+f\star h f(g+h)=fg+fh

平滑核:让相邻的像素越来越像、求均值。

  • 盒式核(box kernel):直接求均值。
  • 高斯核(Gaussian kernel):中间的均值最大,更加考虑自己,所以平滑作用没有盒式核那么大。

image-20241220233253937

非线性空间滤波(Nonlinear Spatial Filtering)

  • 非线性空间过滤通常也使用邻域,但会使用一些其他数学运算。例如,让每个中心点的响应等于其邻域中的最大像素值是一种非线性过滤操作。
  • 另一个基本区别是,掩码的概念在非线性处理中并不那么普遍。

给定一个大小为 M × N M\times N M×N的输入图像 f f f和一个大小为 m × n m\times n m×n的邻域,函数 colfilt 生成一个最大大小为 m n × M N mn × MN mn×MN 的矩阵,称为 A: 每列对应于以图像中某个位置为中心的邻域所包含的像素。

锐化(高通)空间滤波器(Sharpening Spatial Filters)

平滑称为低通滤波、锐化称为高通滤波。就是图像的边缘处强度发生较大变化。

  • 锐化目的:是突显图像中的精细细节或增强模糊的细节。
  • 锐化通常通过空间微分来实现。

数字函数的导数以差分/差值的形式定义。

对于一阶导数,我们要求它必须满足:(如 Sobel 算子,适合边缘检测)
∂ f ∂ x = f ( x + 1 ) − f ( x ) \frac{\partial f}{\partial x}=f(x+1)-f(x) xf=f(x+1)f(x)

  1. 在平坦段(灰度值恒定的区域)必须为零 。

  2. 在灰度阶跃或斜坡的开始处必须非零。

  3. 沿斜坡必须非零 。

    sobel算子

对于二阶导数,我们要求它必须满足:(如 Laplacian 算子,可以增强图像细节,但可能放大噪声。)
∂ 2 f ∂ x 2 = f ( x + 1 ) + f ( x − 1 ) − 2 f ( x ) \frac{\partial^2 f}{\partial x^2}=f(x+1)+f(x-1)-2f(x) x22f=f(x+1)+f(x1)2f(x)

  1. 在平坦段(灰度值恒定的区域)必须为零。
  2. 在灰度阶跃或斜坡的开始和结束处必须非零。
  3. 沿斜率恒定的斜坡必须为零

image-20241220234426807

(a) 图像中水平扫描线的一段,显示斜坡和阶梯边缘以及恒定段。
(b) 扫描线及其导数的值。
© 导数图,显示零交叉。在 (a) 和 © 中,为了便于视觉显示,各点用虚线连接起来。

从这个图中,我们可以看到:

  1. 一阶导数:有一个比较突出的值:0 5 0
  2. 二阶导数:必过0点:0 5 -5 0
拉普拉斯滤波器(Laplacian Filter)

最简单的各向同性导数算子(核)是拉普拉斯,对于两个变量的函数图像 d ( x , y ) d(x,y) d(x,y), 它定义为:
∂ 2 f ∂ x 2 = f ( x + 1 , y ) + f ( x − 1 , y ) − 2 f ( x , y ) ∂ 2 f ∂ y 2 = f ( x , y + 1 ) + f ( x , y − 1 ) − 2 f ( x , y ) ∇ 2 f = ∂ 2 f ∂ x 2 + ∂ 2 f ∂ y 2 = [ f ( x + 1 , y ) + f ( x − 1 , y ) + f ( x , y + 1 ) + f ( x , y − 1 ) ] − 4 f ( x , y ) \begin{align} \frac{\partial^2 f}{\partial x^2}&=f(x+1,y)+f(x-1,y)-2f(x,y)\\ \frac{\partial^2 f}{\partial y^2}&=f(x,y+1)+f(x,y-1)-2f(x,y)\\ \nabla^2 f& = \frac{\partial^2 f}{\partial x^2} + \frac{\partial^2 f}{\partial y^2}\\ &= [f(x+1, y) + f(x-1, y) + f(x, y+1) + f(x, y-1)] - 4f(x, y) \end{align} x22fy22f2f=f(x+1,y)+f(x1,y)2f(x,y)=f(x,y+1)+f(x,y1)2f(x,y)=x22f+y22f=[f(x+1,y)+f(x1,y)+f(x,y+1)+f(x,y1)]4f(x,y)
这个公式可以使用下面的核进行卷积运算来实现。因此,图像锐化的滤波原理类似于低通滤波,只是使用的系数不同。

image-20241220235220715

边缘有很强的脉冲(正负信号都有):勾画边缘处、增强。

使用拉普拉斯核进行图像增强 g ( x , y ) = f ( x , y ) − ∇ 2 f ( x , y ) g(x,y)=f(x,y)-\nabla^2 f(x,y) g(x,y)=f(x,y)2f(x,y)

image-20241220235333869

(a)模糊后的月球北极图像。
(b)使用上述(a)核得到的拉普拉斯图像。
©使用公式 g ( x , y ) = f ( x , y ) − ∇ 2 f ( x , y ) , c = − 1 g(x,y)=f(x,y)-\nabla^2 f(x,y), c=-1 g(x,y)=f(x,y)2f(x,y),c=1得到的锐化后的图像。
(d)重复相同过程但使用上述(b)核得到的结果。

拉普拉斯图像往往是黑色的、无特征的。

钝化掩蔽和高提升滤波(Unsharp masking and high-boost filtering)

钝化掩蔽和高提升滤波是图像锐化的重要技术,主要用于增强图像细节,通过放大图像的高频成分(如边缘和纹理)来突出细节部分。

钝化掩蔽三步走

钝化掩蔽通过从原图像中减去模糊化版本来实现锐化。
f s ( x , y ) = f ( x , y ) − f ˉ ( x , y ) f_s(x, y) = f(x, y) - \bar{f}(x, y) fs(x,y)=f(x,y)fˉ(x,y)
其中 f s ( x , y ) f_s(x, y) fs(x,y) 表示锐化后图像, f ˉ ( x , y ) \bar{f}(x, y) fˉ(x,y) 是图像 f ( x , y ) f(x, y) f(x,y)的模糊版本。

  1. 模糊原图像
  2. 从原图像减去模糊后图像(产生的差称为模板)
  3. 将模板与原图像相加
image-20241221093414873

高提升滤波

然后,将加权后的模板与原图像相加, 得到 f h b ( x , y ) f_{hb}(x, y) fhb(x,y)
f h b ( x , y ) = A f ( x , y ) − f ˉ ( x , y ) f_{hb}(x, y) = A f(x, y) - \bar{f}(x, y) fhb(x,y)=Af(x,y)fˉ(x,y)
其中 A ≥ 1 A \geq 1 A1, f ˉ ( x , y ) \bar{f}(x, y) fˉ(x,y) f ( x , y ) f(x, y) f(x,y)的模糊版本。.

更近一步,还能得到:
f h b ( x , y ) = ( A − 1 ) f ( x , y ) + f ( x , y ) − f ˉ ( x , y ) f h b ( x , y ) = ( A − 1 ) f ( x , y ) + f s ( x , y ) f_{hb}(x, y) = (A - 1)f(x, y) + f(x, y) - \bar{f}(x, y)\\ f_{hb}(x, y) = (A - 1)f(x, y) + f_s(x, y) fhb(x,y)=(A1)f(x,y)+f(x,y)fˉ(x,y)fhb(x,y)=(A1)f(x,y)+fs(x,y)
使用拉普拉斯算子进行锐化:当使用 ∇ 2 f ( x , y ) \nabla^2f(x, y) 2f(x,y)来计算锐化图像 f s ( x , y ) f_s(x, y) fs(x,y),高提升滤波的公式变为:
f h b ( x , y ) = ( A − 1 ) f ( x , y ) − ∇ 2 f ( x , y ) or  f h b ( x , y ) = ( A − 1 ) f ( x , y ) + ∇ 2 f ( x , y ) f_{hb}(x, y) = (A - 1)f(x, y) - \nabla^2f(x, y)\\ \text{or}\ f_{hb}(x, y) = (A - 1)f(x, y) + \nabla^2f(x, y) fhb(x,y)=(A1)f(x,y)2f(x,y)or fhb(x,y)=(A1)f(x,y)+2f(x,y)
其中拉普拉斯算子用于检测图像的快速灰度变化区域(边缘和细节),这使得锐化能够更直接地基于边缘信息进行。

**

然后,将加权后的模板与原图像相加, 得到 f h b ( x , y ) f_{hb}(x, y) fhb(x,y)
f h b ( x , y ) = A f ( x , y ) − f ˉ ( x , y ) f_{hb}(x, y) = A f(x, y) - \bar{f}(x, y) fhb(x,y)=Af(x,y)fˉ(x,y)
其中 A ≥ 1 A \geq 1 A1, f ˉ ( x , y ) \bar{f}(x, y) fˉ(x,y) f ( x , y ) f(x, y) f(x,y)的模糊版本。.

更近一步,还能得到:
f h b ( x , y ) = ( A − 1 ) f ( x , y ) + f ( x , y ) − f ˉ ( x , y ) f h b ( x , y ) = ( A − 1 ) f ( x , y ) + f s ( x , y ) f_{hb}(x, y) = (A - 1)f(x, y) + f(x, y) - \bar{f}(x, y)\\ f_{hb}(x, y) = (A - 1)f(x, y) + f_s(x, y) fhb(x,y)=(A1)f(x,y)+f(x,y)fˉ(x,y)fhb(x,y)=(A1)f(x,y)+fs(x,y)
使用拉普拉斯算子进行锐化:当使用 ∇ 2 f ( x , y ) \nabla^2f(x, y) 2f(x,y)来计算锐化图像 f s ( x , y ) f_s(x, y) fs(x,y),高提升滤波的公式变为:
f h b ( x , y ) = ( A − 1 ) f ( x , y ) − ∇ 2 f ( x , y ) or  f h b ( x , y ) = ( A − 1 ) f ( x , y ) + ∇ 2 f ( x , y ) f_{hb}(x, y) = (A - 1)f(x, y) - \nabla^2f(x, y)\\ \text{or}\ f_{hb}(x, y) = (A - 1)f(x, y) + \nabla^2f(x, y) fhb(x,y)=(A1)f(x,y)2f(x,y)or fhb(x,y)=(A1)f(x,y)+2f(x,y)
其中拉普拉斯算子用于检测图像的快速灰度变化区域(边缘和细节),这使得锐化能够更直接地基于边缘信息进行。

相关文章:

图像处理-Ch2-空间域的图像增强

Ch2 空间域的图像增强 文章目录 Ch2 空间域的图像增强Background灰度变换函数(Gray-level Transformation)对数变换(Logarithmic)幂律变换(Power-Law)分段线性变换函数(Piecewise-Linear)对比度拉伸(Contrast-Stretching)灰度级分层(Gray-level Slicing) 直方图处理(Histogram …...

uniapp Native.js原生arr插件服务发送广播到uniapp页面中

前言 最近搞了个设备,需求是读取m1卡,厂家给了个安卓原生demo,接入arr插件如下,接入后发现还是少了一部分代码,设备服务调起后触发刷卡无法发送到uniapp里。 中间是一些踩坑记录,最后面是解决办法&#xf…...

重温设计模式--1、组合模式

文章目录 1 、组合模式(Composite Pattern)概述2. 组合模式的结构3. C 代码示例4. C示例代码25 .应用场景 1 、组合模式(Composite Pattern)概述 定义:组合模式是一种结构型设计模式,它允许你将对象组合成…...

关于鸿蒙架构feature

鸿蒙feature层模块架构 model:定义数据类型,进行接口请求 view:视图层 写UI viewModel:控制层 关于逻辑和请求调用 page页...

CentOS下,离线安装vscode的步骤;

前置条件: 1.CentOS7; 步骤: 1.下载vscode指定版本,例如; 例如 code-1.83.1-1696982959.el7.x86_64.rpm 2.使用下面命令: sudo rpm -ivh code-1.83.1-1696982959.el7.x86_64.rpm 其他: 卸载vscode的命…...

.NET周刊【12月第3期 2024-12-15】

国内文章 重磅推出 Sdcb Chats:一个全新的开源大语言模型前端 https://www.cnblogs.com/sdcb/p/18597030/sdcb-chats-intro Sdcb Chats是一个新推出的开源大语言模型前端,旨在提升用户交互体验,并填补市场上基于.NET的前端空白。它引入树状…...

操作系统(23)外存的存储空间的管理

一、外存的基本概念与特点 定义:外存,也称为辅助存储器,是计算机系统中用于长期存储数据的设备,如硬盘、光盘、U盘等。与内存相比,外存的存储容量大、成本低,但访问速度相对较慢。特点:外存能够…...

vue3中多层级路由缓存失效问题

问题现象: 在项目中路由嵌套了超过两层后,使用keep-alive对路由进行页面的缓存,发现并不能生效。 使用的路由结构: // 一级路由path: menu1,component: () > import(/views/demos/nested/menu1/index), // Parent router-vie…...

Kerberoasting 离线爆破攻击

当域用户请求某个域内服务后,kdc 通常会返回一个加密的 st 服务票据,此 st 服务票据被服务 hash 加密,当我们将使用密码字典派生的多个 hash 值来尝试解密 st 服务票据,如果能够揭秘成功,则说明字典中存在目标服务账号…...

无人机双目视觉鲁棒定位方法!

无人机双目视觉鲁棒定位方法是一种先进的定位技术,它利用两个摄像头(即双目相机)模拟人的视觉系统,通过视差来确定物体的位置。这种方法在无人机定位领域具有广泛的应用前景,特别是在GPS信号拒止或弱纹理环境中&#x…...

vulnhub靶场——Log4j2

第一步:搭建靶场环境 #开启环境 cd vulhub/log4j/CVE-2021-44228 docker-compose up -d 来到网站首页 第二步:搭建一个dnslog平台上获取我们注入的效果 第三步:发现 /solr/admin/cores?action 这里有个参数可以传 我们可以看到留下了访问记录并且前面的参数被执行后给我们回…...

第十六章 C++ 字符串

C 字符串 C 提供了以下两种类型的字符串表示形式: C 风格字符串C 引入的 string 类类型 C 风格字符串 C 风格的字符串起源于 C 语言,并在 C 中继续得到支持。字符串实际上是使用 null 字符 终止的一维字符数组。因此,一个以 null 结尾的…...

centos权限大集合,覆盖多种权限类型,解惑权限后有“. + t s”问题!

在 CentOS 系统中,权限管理是操作系统的核心功能之一,确保不同用户和进程对文件、目录以及设备的访问被合理控制。 权限系统主要包括传统的 Unix 权限模型、特殊权限(SetUID、SetGID、Sticky 位)和更精细的访问控制列表&#xff…...

【k8s】访问etcd

1. 配置 export.sh export ETCDCTL_API3 # Kubernetes 1.13 使用 API v3 export ETCDCTL_ENDPOINTShttps://[2023:145:246:270::3]:2379 # etcd API endpoint,通常为集群内的 etcd 服务地址 export ETCDCTL_CACERT/etc/kubernetes/certs/ca.crt # CA 证书文件 …...

【教程宝典】基于“遥感+”蓝碳储量估算、红树林信息提取实践技术应用与科研论文写作

“遥感”助推蓝碳生态系统碳储量调查简介(1)蓝碳生态系统碳储量研究背景 红树林、海草床和盐沼是海岸带最具固碳效率的三大生态系统,统称为“蓝色碳汇”。虽然这三类生态系统的覆盖面积不到海床的0.5%,植物生物量只占陆地植物生物量的0.05%,…...

运动健康中的实体和关系

1. 实体类别 1.1 个人健康相关实体 个人(Person):参与体育活动的个体,如运动员、健身爱好者、患者等。健康状况(HealthStatus):描述个人的身体状态,如体重、血压、心率、身体质量指…...

【进阶编程】MVC和MVVM实现前后端分离的实现

在 WPF 开发中,通常使用 MVVM(Model-View-ViewModel)架构来分离视图和业务逻辑,但在某些情况下,你可能希望将 MVC(Model-View-Controller)模式与 MVVM 结合使用。这种结合有时是为了兼顾不同的架…...

ML-Agents 概述(二)

注:本文章为官方文档翻译,如有侵权行为请联系作者删除 ML-Agents Overview - Unity ML-Agents Toolkit–原文链接 ML-Agents 概述(一) ML-Agents 概述(二) 训练方法:特定环境 除了上一节介绍的…...

[Unity] ShaderGraph动态修改Keyword Enum,实现不同效果一键切换

上次更新已然四个月前,零零散散的工作结束,终于有时间写点东西记录一下~ 实际使用中,经常会碰到同一个对象需要切换不同的材质,固然可以通过C#直接替换材质球。 或者在ShaderGraph中使用Comparison配合Branch实现切换&#xff…...

国自然面上项目分享|基于人工智能和病理组学的早癌筛查算法研究|基金申请·24-12-24

小罗碎碎念 今天分享的项目为【常规面上项目】,执行年限为2018年1月至2021年12月,直接费用为55万元。 今天分享的这个项目很有意思,因为这个项目的成果是团队2020年申报基金委优青的材料,并且还有临床验证和商业转化,值…...

【EthIf-14】EthIfGeneral容器配置-02

1.实际EthIfGeneral的配置实例 关闭DET接口开启发送确认中断开启接收中断主周期接收timeout主周期 2. 代码实例参考 阅读此部分代码,搞清楚代码分为几个section,大概瞄一眼就好,不用深究其含义,只需有一个宏观的层次结构的映像即可。 //Appl/GenData/EthIf_Cfg.h #...

21.打印文件地址 C#例子

\是一个有特殊功能的字符,当想要打印一个如下地址时, C:\Users\SMTC\source\repos\练习 会出现报错,之所以会报错就是因为这里出现了\ \可以把后面的一个符号变为真符号,而不是有特殊功能的符号 在字符串的前面可以让这个字符…...

golang LeetCode 热题 100(动态规划)-更新中

爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例 1:输入:n 2 输出:2 解释:有两种方法可以爬到楼顶。 1. 1 阶 1 阶 2. 2 阶 示例 2&…...

Everspin代理MR25H10CDFR存储MRAM

RAMSUN提供的MR25H10CDFR是一款具备1,048,576位存储容量的磁阻随机存取存储器(MRAM)设备,由131,072个8位字构成。该设备提供与串行EEPROM和串行闪存兼容的读/写时序,无写延迟,并且其读/写寿命是不受限制的。 与其它串…...

Day13 苍穹外卖项目 工作台功能实现、Apache POI、导出数据到Excel表格

目录 1.工作台 1.1 需求分析和设计 1.1.1 产品原型 1.1.2 接口设计 1.2 代码导入 1.2.1 Controller层 1.2.2 Service层接口 1.2.3 Service层实现类 1.2.4 Mapper层 1.3 功能测试 1.4 代码提交 2.Apache POI 2.1 介绍 2.2 入门案例 2.2.1 将数据写入Excel文件 2.2.2 读取Excel文…...

基于vue框架的的校园后台报修管理系统设计与实现u7fui(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。

系统程序文件列表 项目功能:用户,维修工,报修信息,维修情况,评价记录,请假记录,改派申请记录 开题报告内容 基于Vue框架的校园后台报修管理系统设计与实现开题报告 一、项目背景及意义 随着信息技术的飞速发展,校园管理日益趋向于智能化和高效化。传…...

TCP/IP 模型中,网络层对 IP 地址的分配与路由选择

TCP/IP 模型中,网络层对 IP 地址的分配与路由选择 一. IP 地址的分配1.1 IP 地址的结构与分类1.2 IP 地址的分配方式 二. 路由选择2.3 路由协议2.4 路由表的结构2.5 路由选择的算法2.6 默认路由与静态路由 三. 网络层的 IP 地址分配与路由选择总结 前言 这是我在这个…...

废品回收小程序:助力企业转型发展

废品回收在当下日常生活中非常常见,家中的各种可回收物都能够拿到回收站进行回收,减少浪费,不过在回收物较多的情况下,回收又成为了一个问题。 目前,随着智能生活的流行,废品回收开启了“数字化时代”&…...

iptables交叉编译(Hisiav300平台)

参考文章:https://blog.csdn.net/Bgm_Nilbb/article/details/135714738 https://bbs.archlinux.org/viewtopic.php?pid1701065 1、libmnl 交叉编译 tar xvf libmnl-1.0.5.tar.bz2 sudo chmod 777 -R libmnl-1.0.5 cd libmnl-1.0.5 mkdir _install //host和CC需要修…...

概率论 期末 笔记

第一章 随机事件及其概率 利用“四大公式”求事件概率 全概率公式与贝叶斯公式 伯努利概型求概率 习题 推导 一维随机变量及其分布 离散型随机变量(R.V)求分布律 利用常见离散型分布求概率 连续型R.V相关计算 利用常见连续型分布的计算 均匀分布 正态…...

【Chrome】浏览器提示警告Chrome is moving towards a new experience

文章目录 前言一、如何去掉 前言 Chrome is moving towards a new experience that allows users to choose to browse without third-party cookies. 这是谷歌浏览器(Chrome)关于隐私策略更新相关的提示 提示:以下是本篇文章正文内容&…...

xdoj 数字个数统计

1-3 数字个数统计 3 时间限制:1S 题目描述: 输入两个三位正整数 A 和 B,在区间[A,B]之间,或在区间[B,A]之间, 完成统计任务: 3 的倍数数字个数、4 的倍数数字个数和 5 的倍数且不是 2 的倍数 的数字个数…...

I.MX6U 启动方式详解

一、启动方式选择 BOOT 的处理过程是发生在 I.MX6U 芯片上电以后,芯片会根据 BOOT_MODE[1:0]的设置 来选择 BOOT 方式。 BOOT_MODE[1:0]的值是可以改变的,有两种方式,一种是改写 eFUSE(熔 丝),一种是修改相应的 GPIO 高低电平。第一种修改 eFUSE 的方式只能修改一次,后面就…...

Linux自动挂载与卸载USB设备

一、实现udev规则 创建规则:sudo vi /etc/udev/rules.d/usb.rules SUBSYSTEMS"usb",SUBSYSTEM"block",ACTION"add",RUN{program}"/bin/mkdir /mnt/%k",RUN{program}"/usr/bin/systemd-mount --no-block --collect …...

下载运行Vue开源项目vue-pure-admin

git地址:GitHub - pure-admin/vue-pure-admin: 全面ESMVue3ViteElement-PlusTypeScript编写的一款后台管理系统(兼容移动端) 安装pnpm npm install -g pnpm # 国内 淘宝 镜像源 pnpm config set registry https://registry.npmmirror.com/…...

中国农业科学院深圳农业基因组研究所合成生物学研究中心-随笔06

更新读研择校贴,生物合成行业领先的单位一览SWHC002 中国科学院合成生物学重点实验室介绍-随笔05-CSDN博客 中国农业科学院深圳农业基因组研究所(基因组所)合成生物学研究中心 https://www.agis.org.cn/bsgk/yjsjj/index.htm #官网 htt…...

Java项目--仿RabbitMQ的消息队列--基于MQ的生产者消费者模型

目录 一、引言 二、生产者 三、消费者 四、扩展 五、总结 一、引言 本篇文章就是本次Java项目的最后一篇文章了,本篇文章主要介绍基于MQ的生产者消费者模型的代码编写 二、生产者 public class DemoConsumer {public static void main(String[] args) throws…...

VUE3——003、VUE 项目中的文件结构(index.html、main.ts、App.vue)

虽然是号称是小白初学,但本文只是对 VUE 小白,其它的基功还是有一丢丢的,不太懂的同学去看看一下详解,我这里记述的是自己的理解和观点。见谅! index.html:入口文件(以创建 vue3 项目的默认文件…...

Redis+注解实现限流机制(IP、自定义等)

简介 在项目的使用过程中,限流的场景是很多的,尤其是要提供接口给外部使用的时候,但是自己去封装的话,相对比较耗时。 本方式可以使用默认(方法),ip、自定义参数进行限流,根据时间…...

SAP SD销售订单处理流程

本篇博文中的流程: 创建销售订单→依据销售订单创建交货单→依据销售订单开票 一、VA01创建销售订单 1、填入必填项,回车。可点击左上角的依照参考创建按钮。 依照参考创建可以参考以下6个。其中询价单、报价单、订单、合同和计划协议可以理解为特殊的…...

MySQL中Seconds_Behind_Master是怎么计算的

目录 1.Seconds_Behind_Master计算方式2.Seconds_Behind_Master 计算方式会存在什么问题3.更好的方式3.1 实现方法3.2 优点在MySQL中,Seconds_Behind_Master是一个用于表示从库(Slave)落后于主库(Master)的时间(以秒为单位)的指标。 1.Seconds_Behind_Master计算方式 其…...

【算法篇】——数据结构中常见八大排序算法的过程原理详解

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、插入排序1.直接插入法2.希尔排序法 二、交换排序1. 冒泡排序2. 快速排序 三、选择排序1. 简单选择排序2. 堆排序 四、归并排序五、基数排序 前言 C数据结构…...

ERP系统:从稳定运行到头条新闻

企业管理软件通常经历开发、部署、维护和最终退役的生命周期。然而,2024年,SAP等ERP系统频频登上新闻头条,反映出数字化转型过程中面临的挑战与变革。 SAP频上新闻的背后 SAP软件自上世纪90年代问世以来,便在企业管理领域占据重…...

OceanBase之primary_one概念学习

OceanBase 集群通常有若干个zone组成,zone是(Availability Zone)的简写,代表一个可用区。zone本身是一逻辑概念,物理的zone可理解为一地理概念,对OceanBase来说,zone可以理解为副本的概念。 从物理层面看,…...

国标GB28181摄像机接入EasyGBS如何通过流媒体技术提升安防监控效率?

随着信息技术的飞速发展,视频监控技术已成为维护公共安全和提升管理效率的重要手段。国标GB28181作为安防行业的统一设备接入与流媒体传输标准,为视频监控系统的互联互通提供了坚实的基础。EasyGBS作为一款基于GB28181协议的视频云服务平台,通…...

Scala_【2】变量和数据类型

第二章 注释标识符的命名规范命名规则关键字 变量字符串输出数据类型关系变量和数据类型整数类型(Byte、Short、Int、Long)浮点类型(Float、Double)字符类型(Char)布尔类型(Boolean)…...

怎么设置电脑密码?Windows和Mac设置密码的方法

为电脑设置密码是保护个人信息安全的重要措施。无论是Windows系统还是MacOS系统,设置密码的步骤都相对简单,但需要根据不同的操作系统选择不同的方法。 一、Windows系统电脑密码设置 方法一:通过控制面板设置账户密码 点击桌面左下角的“开…...

力扣251题详解:展开二维向量的多种解法与模拟面试

力扣251题详解:展开二维向量的多种解法与复杂度分析 在本篇文章中,我们将详细解读力扣第251题“展开二维向量”。通过学习本篇文章,读者将掌握如何实现一个迭代器来遍历二维向量中的所有元素,并了解相关的复杂度分析和模拟面试问…...

MoGe---最新单目3D几何估计方法

目录 一、概述 二、相关工作 1、单目深度估计 2、单目几何估计 3、相机内参估计 4、单目几何的大规模数据训练 三、前置知识 1、仿射不变和尺度不变指标 2、FOV和shift 3、ROE对齐求解器 四、MoGe 1、为什么设计仿射不变? 2、恢复相机焦距和移位 3、…...

springboot/ssm私房菜定制上门服务系统Java代码编写web厨师上门做菜

springboot/ssm私房菜定制上门服务系统Java代码编写web厨师上门做菜 基于springboot(可改ssm)htmlvue项目 开发语言:Java 框架:springboot/可改ssm vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库&am…...