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");
相关推荐
ShineWinsu9 分钟前
对于Qt:QDial常见属性以及信号的解析
开发语言·c++·qt·gui·客户端·旋钮·qdial
.道阻且长.2 小时前
AI 按数据模态分类:计算机视觉、NLP、语音处理,一篇理清
人工智能·计算机视觉·分类
Java后端的Ai之路2 小时前
RAG 还是 Agent 自主检索?Claude Code 删掉向量库之后,我把选型讲透了
开发语言·人工智能·prompt·agent·rag
starzy19903 小时前
深入理解Scala高阶函数:函数式编程核心
开发语言·scala
qq_158895411115 小时前
AI 音乐生成完成后,音频 URL 为什么会过期?一套可恢复的交付方案
python·api·ai音乐
Warson_L7 小时前
高性能架构设计
python·go
databook8 小时前
新数据到手,先跑哪几步检查
python·数据分析
czq_26867194878 小时前
Python打卡第46天
开发语言·python
Flynt10 小时前
日涨4000星的OSINT工具,我拿Linus的用户名和一个随机字符串实测了一遍
python·安全
末世灯光10 小时前
ICML 2026|AURA:用视觉原型理解情感,而不只是预测标签
计算机视觉·情感识别·情感计算