Python Opencv实践 - 图像中值滤波

import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt

img = cv.imread("../SampleImages/pomeranian.png", cv.IMREAD_COLOR)
print(img.shape)
pixel_count = img.shape[0] * img.shape[1]
print(pixel_count)


#为图像添加椒盐噪声
#参考资料:https://blog.csdn.net/sinat_29957455/article/details/123977298
img_pepper_salt_noise = img.copy()
#椒盐噪声中盐(白点)和椒(黑点)的比例
salt_ratio = 0.5
pepper_ratio = 1 - salt_ratio
#噪点占图像像素比例
noise_ratio = 0.03
#添加salt噪声
num_salt = np.ceil(noise_ratio * pixel_count * salt_ratio)
#噪声添加位置
noise_locations = [np.random.randint(0, i - 1, int(num_salt)) for i in img.shape]
img_pepper_salt_noise[noise_locations[0],noise_locations[1],:] = [255,255,255]
#添加pepper噪声
num_pepper = np.ceil(noise_ratio * pixel_count * pepper_ratio)
noise_locations = [np.random.randint(0, i - 1, int(num_salt)) for i in img.shape]
img_pepper_salt_noise[noise_locations[0],noise_locations[1],:] = [0,0,0]

#图像中值滤波
#cv.medianBlur(src, ksize)
#src: 待处理图像
#ksize:kernel大小,核大小必须是比1大的奇数,比如3、5、7等
#参考资料:https://blog.csdn.net/qq_49478668/article/details/123485382
img_blur = cv.medianBlur(img_pepper_salt_noise, 3)

#显示图像
fig,axes = plt.subplots(nrows=1, ncols=3, figsize=(15,15), dpi=100)
axes[0].imshow(img[:,:,::-1])
axes[0].set_title("Original");
axes[1].imshow(img_pepper_salt_noise[:,:,::-1])
axes[1].set_title("Salt And Pepper Noise");
axes[2].imshow(img_blur[:,:,::-1])
axes[2].set_title("Median Blurred");
相关推荐
画个逗号给明天"7 分钟前
C++对象模型之C++额外成本
开发语言·c++
又菜又爱玩呜呜呜~11 分钟前
langchain-go调用deepseek
开发语言·golang·langchain
VermouthSp13 分钟前
C++中& 左值引用(Lvalue Reference)
开发语言·c++
浮尘笔记16 分钟前
go-zero中定时任务的用法
开发语言·后端·golang
Pandaconda18 分钟前
【Golang 面试题】每日 3 题(六十七)
开发语言·经验分享·笔记·后端·面试·golang·go
EelBarb28 分钟前
django:更新页面但未生效
后端·python·django
起个破名想半天了39 分钟前
计算机视觉(opencv-python)入门之图像的读取,显示,与保存
图像处理·python·opencv·cv2
M_Lin_42 分钟前
C++继承 多态
开发语言·c++
猿周LV1 小时前
多线程进阶 : 八股文面试题 一 [Java EE 多线程 锁和死锁相关问题]
java·开发语言·java-ee
PeterClerk1 小时前
AIGC-LLAMA模型介绍
人工智能·python·语言模型·自然语言处理·aigc·llama