图像的加减运算
原创文章:转载请注明出处 ©️ Sylvan Ding
图像相加
图像相加常常被用来进行图片降噪处理。令 g ( x , y ) g(x,y) g(x,y) 是无噪声理想图像 f ( x , y ) f(x,y) f(x,y) 被高斯加性噪声 η ( x , y ) \eta (x,y) η(x,y) 污染后的图像,即
g ( x , y ) = f ( x , y ) + η ( x , y ) g(x,y)=f(x,y)+\eta (x,y) g(x,y)=f(x,y)+η(x,y)
其中, η \eta η 为 μ = 0 \mu =0 μ=0、 σ 2 = σ η 2 \sigma ^2 =\sigma ^2 _\eta σ2=ση2 的高斯加性噪声,且 η \eta η 与 f f f 不相关,那么通过对有噪图像进行平均,可以得到 g ˉ ( x , y ) \bar{g}(x,y) gˉ(x,y):
g ˉ ( x , y ) = 1 K ∑ i = 1 K g i ( x , y ) \bar{g}(x,y)=\frac{1}{K}\sum _{i=1} ^K g_i(x,y) gˉ(x,y)=K1i=1∑Kgi(x,y)
其中, K K K 是有噪图像张数,不难证明:
E { g ˉ ( x , y ) } = f ( x , y ) E\{ \bar{g}(x,y) \}=f(x,y) E{gˉ(x,y)}=f(x,y)
σ g ˉ = 1 K σ η \sigma _{\bar{g}} = \frac{1}{\sqrt{K}} \sigma _{\eta } σgˉ=K1ση
其中, E { g ˉ } E\{ \bar{g} \} E{gˉ} 是 g ˉ \bar{g} gˉ 的期望, σ g ˉ \sigma _{\bar{g}} σgˉ 是 g ˉ \bar{g} gˉ 的标准差。上式表明,当 K K K 不断增大, σ g ˉ \sigma _{\bar{g}} σgˉ 将不断减小, g ˉ \bar{g} gˉ 越来越接近 f f f.
证明如下:
E { g ˉ } = E { 1 K ∑ i = 1 K [ f i + η i ] } = 1 K ∑ i = 1 K [ E { f i } + E { η i } ] = f \begin{array}{c} & E\{ \bar{g} \} = E\{ \frac{1}{K} \sum _{i=1} ^K [f_i+\eta _i] \} \\ & = \frac{1}{K} \sum _{i=1} ^K [E\{ f_i\}+E\{ \eta _i\}] = f \end{array} E{gˉ}=E{K1∑i=1K[fi+ηi]}=K1∑i=1K[E{fi}+E{ηi}]=f
σ g ˉ 2 = V a r { 1 K ∑ i = 1 K [ f i + η i ] } = 1 K 2 V a r { ∑ i = 1 K [ f i + η i ] } = 1 K 2 ∑ i = 1 K [ V a r { f i } + V a r { η i } ] = 1 K 2 K σ η 2 = 1 K σ η 2 \begin{array}{c} \sigma ^2 _{\bar{g}} &=& Var\{ \frac{1}{K} \sum _{i=1} ^K [f_i+\eta _i] \} \\ &=& \frac{1}{K^2} Var\{ \sum _{i=1} ^K [f_i+\eta _i] \} \\ &=& \frac{1}{K^2} \sum _{i=1} ^K [Var\{ f_i \}+Var\{\eta _i\}] \\ &=& \frac{1}{K^2} K \sigma ^2 _{\eta } \\ &=& \frac{1}{K} \sigma ^2 _{\eta } \end{array} σgˉ2=====Var{K1∑i=1K[fi+ηi]}K21Var{∑i=1K[fi+ηi]}K21∑i=1K[Var{fi}+Var{ηi}]K21Kση2K1ση2
import cv2
import numpy as np
import matplotlib.pyplot as plt
mu = .0
sigma = 128.0
# show original img and img with noise obeying N(0, 16384),
# perhaps some pixel value is over 255 after adding noise
img = 'lena_gray.bmp'
f = cv2.imread(img, cv2.IMREAD_GRAYSCALE)
eta = mu + sigma * np.random.rand(f.shape[0], f.shape[1])
g = f + eta
plt.subplot(121)
plt.imshow(f, cmap='gray')
plt.subplot(122)
plt.imshow(g, cmap='gray')
plt.show()
左图为原图,右图为当噪声 σ η = 128 \sigma _\eta =128 ση=128 时的有噪图像.
分别对 K ∈ { 4 , 16 , 32 , 64 } K\in \{4,16,32,64 \} K∈{4,16,32,64} 进行平均降噪.
K = [4, 16, 32, 64]
etai = mu + sigma * np.random.rand(f.shape[0], f.shape[1], 128)
fig, axs = plt.subplots(2, 2, figsize=(7, 7))
for i in range(2):
for j in range(2):
eta = np.mean(etai[:, :, :K[i*2+j]], axis=2)
g = f + eta
ax = axs[i][j]
ax.set_title('K={}'.format(str(K[i*2+j])))
ax.imshow(g, cmap='gray')
plt.show()
图像相减
图像相减常用于增强图像之间的差,通过图像相减来更改检测也用于图像分割。
数字减影血管造影技术(英文名:Digital Subtraction Angiography,简称:DSA)是一种新的X线成像系统,是常规血管造影术和电子计算机图像处理技术相结合的产物。
普通血管造影图像具有很多的解剖结构信息,例如骨骼、肌肉、血管及含气腔隙等等,彼此相互重叠影响,若要想单纯对某一结构或组织进行细微观察就较为困难。
DSA的成像基本原理是将受检部位没有注入造影剂和注入造影剂后的血管造影X线荧光图像,将两幅图像的数字信息相减,获得的不同数值的差值信号,再经对比度增强和数/模转换成普通的模拟信号,获得了去除骨骼、肌肉和其它软组织,只留下单纯血管影像的减影图像,通过显示器显示出来。
通过DSA处理的图像,使血管的影像更为清晰,在进行介入手术时更为安全。
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)
其中, h ( x , y ) h(x,y) h(x,y) 是病人身体一个区域的X射线图像,注入造影剂后,再摄取 f ( x , y ) f(x,y) f(x,y),二者之差为最终的血管影像图.
参考文献
- 数字图像处理:第3版,北京:电子工业出版社
- 百度百科:数字减影血管造影技术