导入
平滑处理
了解图像平滑的类型以及何时使用它们。
1.
When do we need to smooth an image?
0/500
图像平滑处理
...
受严重不相关高斯噪声影响的图像
1import cv2 2 3original_img = cv2.imread('./images/fruits/bananas_black1b_noise.jpg') 4grayscale_img = cv2.cvtColor(original_img, cv2.COLOR_BGR2GRAY) 5 6# 应用不同的全局阈值 7thresholds = [60, 90, 105, 120, 150] 8for threshold_ndx in range(len(thresholds)): 9 threshold = thresholds[threshold_ndx] 10 retval, mask = cv2.threshold(grayscale_img, threshold, 255, cv2.THRESH_BINARY) 11 # 在掩码上标注所使用的阈值 12 cv2.putText(mask, str(threshold), (0, 60), cv2.FONT_HERSHEY_SIMPLEX, 13 1.0, 255, 2) 14 cv2.imwrite(f'./output/{threshold_ndx + 1}_mask.png', mask) 15 16cv2.imwrite('./output/0_original.png', original_img)
...
使用3x3邻域进行均值模糊的示例
1import cv2 2 3original_img = cv2.imread('./images/fruits/bananas_black1b_noise.jpg') 4 5# 使用不同卷积核尺寸进行均值模糊 6kernel_sizes = [(3, 3), (7, 7), (11, 11)] 7for kernel_ndx in range(len(kernel_sizes)): 8 kernel_size = kernel_sizes[kernel_ndx] 9 blurred_img = cv2.blur( 10 src=original_img, 11 ksize=kernel_size 12 ) 13 # 在图像上标注使用的卷积核尺寸 14 cv2.putText(blurred_img, str(kernel_size), (10, 60), cv2.FONT_HERSHEY_SIMPLEX, 15 1.0, (255, 255, 255), 2) 16 cv2.imwrite(f'./output/{kernel_ndx + 1}_blurred.png', blurred_img) 17 18cv2.imwrite('./output/0_original.png', original_img)
1import cv2 2 3original_img = cv2.imread('./images/fruits/bananas_black1b_noise.jpg') 4 5# 使用不同卷积核尺寸进行高斯模糊 6kernel_sizes = [(3, 3), (7, 7), (11, 11)] 7for kernel_ndx in range(len(kernel_sizes)): 8 kernel_size = kernel_sizes[kernel_ndx] 9 blurred_img = cv2.GaussianBlur( 10 src=original_img, 11 ksize=kernel_size, 12 sigmaX=kernel_size[0]/4, # 水平方向的高斯标准差 13 sigmaY=kernel_size[1]/4, # 垂直方向的高斯标准差 14 ) 15 # 在图像上标注卷积核尺寸 16 cv2.putText(blurred_img, str(kernel_size), (0, 60), cv2.FONT_HERSHEY_SIMPLEX, 17 1.0, (255, 255, 255), 2) 18 cv2.imwrite(f'./output/{kernel_ndx + 1}_blurred.png', blurred_img) 19 20cv2.imwrite('./output/0_original.png', original_img)
...
受椒盐噪声影响的图像
1import cv2 2 3original_img = cv2.imread('./images/fruits/bananas_black1b_saltPepper.jpg') 4 5# 使用中值滤波处理椒盐噪声,尝试不同卷积核尺寸 6kernel_sizes = [3, 7, 11] 7for kernel_ndx in range(len(kernel_sizes)): 8 kernel_size = kernel_sizes[kernel_ndx] 9 blurred_img = cv2.medianBlur( 10 src=original_img, 11 ksize=kernel_size, 12 ) 13 # 在图像上标注卷积核尺寸 14 cv2.putText(blurred_img, str(kernel_size), (10, 60), cv2.FONT_HERSHEY_SIMPLEX, 15 1.0, (255, 255, 255), 2) 16 cv2.imwrite(f'./output/{kernel_ndx + 1}_blurred.png', blurred_img) 17 18cv2.imwrite('./output/0_original.png', original_img)