這里寫目錄標(biāo)題
平滑(低通)空間濾波器
平滑(也稱平均)空間濾波器用于降低灰度的急劇過渡
- 在圖像重取樣之前平滑圖像以減少混淆
- 用于減少圖像中無關(guān)細節(jié)
- 平滑因灰度級數(shù)量不足導(dǎo)致的圖像中的偽輪廓
- 平滑核與一幅圖像的卷積會模糊圖像
盒式濾波器核
盒式核是最簡單的可分離低通濾波器,其系數(shù)的值相同(通常為1)
m×nm\times{n}m×n的盒式濾波器為1的一個m×nm\times{n}m×n的陣列,其前面有一個歸一化的常數(shù),通過是1除以系數(shù)值之和(通過是1/mn1/mn1/mn)
def box_filter(image
, kernel
):""":param image: input image:param kernel: input kernel:return: image after convolution"""img_h
= image
.shape
[0]img_w
= image
.shape
[1]m
= kernel
.shape
[0]n
= kernel
.shape
[1]padding_h
= int((m
-1)/2)padding_w
= int((n
-1)/2)image_pad
= np
.zeros
((image
.shape
[0]+padding_h
*2, image
.shape
[1]+padding_w
*2), np
.uint8
)image_pad
[padding_h
:padding_h
+img_h
, padding_w
:padding_w
+img_w
] = imageimage_convol
= image
.copy
()for i
in range(padding_h
, img_h
+ padding_h
):for j
in range(padding_w
, img_w
+ padding_w
):temp
= np
.sum(image_pad
[i
-padding_h
:i
+padding_h
+1, j
-padding_w
:j
+padding_w
+1] * kernel
)image_convol
[i
- padding_h
][j
- padding_w
] = temp
return image_convol
img
= cv2
.imread
('DIP_Figures/DIP3E_Original_Images_CH03/Fig0333(a)(test_pattern_blurring_orig).tif', 0)kernel_size
= [3, 11, 21]fig
= plt
.figure
(figsize
=(10, 10))
for i
in range(len(kernel_size
) + 1):ax
= fig
.add_subplot
(2, 2, i
+1)if i
== 0:ax
.imshow
(img
, cmap
='gray', vmin
=0, vmax
=255), ax
.set_xticks
([]), ax
.set_yticks
([])ax
.set_title
('Original')else:kernel
= np
.ones
([kernel_size
[i
-1], kernel_size
[i
-1]])kernel
= kernel
/ kernel
.sizeimg_dst
= box_filter
(img
, kernel
)ax
.imshow
(img_dst
, cmap
='gray', vmin
=0, vmax
=255), ax
.set_xticks
([]), ax
.set_yticks
([])ax
.set_title
(f
'kernel size {kernel_size[i-1]}')
plt
.tight_layout
()
plt
.show
()
img
= cv2
.imread
('DIP_Figures/DIP3E_Original_Images_CH03/Fig0333(a)(test_pattern_blurring_orig).tif', 0)kernel_size
= [3, 11, 21]fig
= plt
.figure
(figsize
=(10, 10))
for i
in range(len(kernel_size
) + 1):ax
= fig
.add_subplot
(2, 2, i
+1)if i
== 0:ax
.imshow
(img
, cmap
='gray', vmin
=0, vmax
=255), ax
.set_xticks
([]), ax
.set_yticks
([])ax
.set_title
('Original')else:kernel
= np
.ones
([kernel_size
[i
-1], kernel_size
[i
-1]])kernel
= kernel
/ kernel
.sizeimg_dst
= separate_kernel_conv2D
(img
, kernel
)img_dst
= normalize
(img_dst
) * 255ax
.imshow
(img_dst
, cmap
='gray', vmin
=0, vmax
=255), ax
.set_xticks
([]), ax
.set_yticks
([])ax
.set_title
(f
'kernel size {kernel_size[i-1]}')
plt
.tight_layout
()
plt
.show
()
總結(jié)
以上是生活随笔為你收集整理的第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波13 - 平滑低通滤波器 -盒式滤波器核的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。