本文目录导读:

Python + OpenCV (推荐)
import cv2
import numpy as np
import os
from pathlib import Path
def add_noise(image, noise_type='gaussian', intensity=25):
"""添加噪声到图片"""
if noise_type == 'gaussian':
# 高斯噪声
row, col, ch = image.shape
gauss = np.random.normal(0, intensity/255.0, (row, col, ch))
noisy = image + image * gauss
return np.clip(noisy, 0, 255).astype(np.uint8)
elif noise_type == 'salt_pepper':
# 椒盐噪声
s_vs_p = 0.5
amount = intensity / 100
noisy = np.copy(image)
# 盐噪声
num_salt = np.ceil(amount * image.size * s_vs_p)
coords = [np.random.randint(0, i-1, int(num_salt)) for i in image.shape]
noisy[coords[0], coords[1], :] = 255
# 椒噪声
num_pepper = np.ceil(amount * image.size * (1.0 - s_vs_p))
coords = [np.random.randint(0, i-1, int(num_pepper)) for i in image.shape]
noisy[coords[0], coords[1], :] = 0
return noisy
elif noise_type == 'poisson':
# 泊松噪声
vals = len(np.unique(image))
vals = 2 ** np.ceil(np.log2(vals))
noisy = np.random.poisson(image * vals) / float(vals)
return np.clip(noisy * intensity/25, 0, 255).astype(np.uint8)
def batch_process_noise(input_dir, output_dir, noise_type='gaussian', intensity=25):
"""批量处理图片噪声"""
# 创建输出目录
Path(output_dir).mkdir(parents=True, exist_ok=True)
# 支持的图片格式
extensions = ['.jpg', '.jpeg', '.png', '.bmp', '.tiff']
# 遍历输入目录
for filename in os.listdir(input_dir):
if any(filename.lower().endswith(ext) for ext in extensions):
# 读取图片
img_path = os.path.join(input_dir, filename)
img = cv2.imread(img_path)
if img is not None:
# 添加噪声
noisy_img = add_noise(img, noise_type, intensity)
# 保存图片
output_path = os.path.join(output_dir, f'noisy_{filename}')
cv2.imwrite(output_path, noisy_img)
print(f"处理完成: {filename}")
# 使用示例
input_folder = "原始图片文件夹"
output_folder = "噪声处理后的图片"
# 调整参数:
# noise_type: 'gaussian'(高斯), 'salt_pepper'(椒盐), 'poisson'(泊松)
# intensity: 0-100,数值越大噪声越强
batch_process_noise(input_folder, output_folder, noise_type='gaussian', intensity=30)
去噪处理(减少噪声)
def denoise_image(image, method='nlm', strength=10):
"""对图片进行去噪处理"""
if method == 'nlm':
# 非局部均值去噪(效果好但慢)
return cv2.fastNlMeansDenoisingColored(image, None, strength, strength, 7, 21)
elif method == 'median':
# 中值滤波
return cv2.medianBlur(image, strength if strength % 2 == 1 else strength + 1)
elif method == 'gaussian':
# 高斯模糊
return cv2.GaussianBlur(image, (strength if strength % 2 == 1 else strength + 1,
strength if strength % 2 == 1 else strength + 1), 0)
def batch_denoise(input_dir, output_dir, method='nlm', strength=10):
"""批量去噪"""
Path(output_dir).mkdir(parents=True, exist_ok=True)
for filename in os.listdir(input_dir):
if filename.lower().endswith(('.jpg', '.png', '.jpeg')):
img = cv2.imread(os.path.join(input_dir, filename))
if img is not None:
denoised = denoise_image(img, method, strength)
cv2.imwrite(os.path.join(output_dir, f'denoised_{filename}'), denoised)
print(f"去噪完成: {filename}")
使用 PIL/Pillow
from PIL import Image, ImageFilter
import numpy as np
import os
def add_gaussian_noise_pil(image_path, output_path, intensity=0.1):
"""使用PIL添加高斯噪声"""
img = Image.open(image_path)
img_array = np.array(img)
noise = np.random.normal(0, intensity * 255, img_array.shape)
noisy_array = np.clip(img_array + noise, 0, 255).astype(np.uint8)
noisy_img = Image.fromarray(noisy_array)
noisy_img.save(output_path)
def batch_process_pil(input_dir, output_dir, intensity=0.1):
"""批量处理"""
os.makedirs(output_dir, exist_ok=True)
for filename in os.listdir(input_dir):
if filename.lower().endswith(('.jpg', '.png')):
input_path = os.path.join(input_dir, filename)
output_path = os.path.join(output_dir, f'noisy_{filename}')
add_gaussian_noise_pil(input_path, output_path, intensity)
命令行工具 (ImageMagick)
如果安装了ImageMagick,可以批量处理:
# 添加高斯噪声
# Windows PowerShell
Get-ChildItem "*.jpg" | ForEach-Object { magick $_.Name -noise 10% "noisy_$($_.Name)" }
# Linux/Mac
for img in *.jpg; do convert "$img" -noise 10% "noisy_$img"; done
# 去噪
# Windows PowerShell
Get-ChildItem "*.jpg" | ForEach-Object { magick $_.Name -median 3 "denoised_$($_.Name)" }
批量处理配置文件
# config.py - 配置文件
CONFIG = {
"input_dir": "./images/input",
"output_dir": "./images/output",
"process_type": "add_noise", # add_noise 或 denoise
"noise_type": "gaussian", # gaussian, salt_pepper, poisson
"intensity": 30, # 噪声强度 0-100
"denoise_method": "nlm", # nlm, median, gaussian
"denoise_strength": 10,
"keep_original_name": False, # 保留原文件名
"output_format": "jpg", # 输出格式
"quality": 95 # 图片质量
}
安装依赖
pip install opencv-python pillow numpy
使用建议
- 测试参数:先对小批量图片测试噪声参数
- 备份原图:处理前备份原始图片
- 进度显示:大量图片时添加进度条
- 参数调整:
- 增加噪声:intensity=20-50
- 减少噪声:denoise_strength=5-15
- 强去噪:denoise_strength=15-30
选择哪种方法取决于你的具体需求:
- 需要精细控制 → Python脚本
- 快速批量处理 → ImageMagick
- 简单操作 → GUI工具
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播