常用图像滤波及色彩调节操作(Opencv)

发布于:2025-04-13 ⋅ 阅读:(23) ⋅ 点赞:(0)

1. 常用滤波/模糊操作

import cv2
import numpy as np
import matplotlib.pyplot as plot

img = cv2.imread("tmp.jpg")
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
img_g = cv2.GaussianBlur(img, (7,7), 0)
img_mb = cv2.medianBlur(img, ksize=7) #中指滤波
img_bm = cv2.blur(img, ksize=(7,7)) #均值滤波
img_bf = cv2.boxFilter(img, ddepth=-1, ksize=(7,7)) #方框滤波
img_bfr = cv2.bilateralFilter(img, 7, 100, 100) #双边滤波
self_kernel = np.array([[0,-1,0],[-1,7,-1],[0,-1,0]]) #自定义锐化核
img_f = cv2.filter2D(img, ddepth=-1, kernel=self_kernel)
img_eh = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
img_eh = cv2.equalizeHist(img_eh)

plot.figure(figsize=(12,8));
plot.subplot(2,4,1)
plot.title('source image')
plot.imshow(img)
plot.subplot(2,4,2)
plot.title('Gaussian Blur')
plot.imshow(img_g)
plot.subplot(2,4,3)
plot.title('Mean blur')
plot.imshow(img_bm)
plot.subplot(2,4,4)
plot.title('Median Blur')
plot.imshow(img_mb)
plot.subplot(2,4,5)
plot.title('box filter')
plot.imshow(img_bf)
plot.subplot(2,4,6)
plot.title('bilateral Filter')
plot.imshow(img_bfr)
plot.subplot(2,4,7)
plot.title('self filter')
plot.imshow(img_f)
plot.subplot(2,4,8)
plot.title('equalize Hist')
plot.imshow(img_eh)

plot.show()

在这里插入图片描述

2. 常用色彩调节操作

import cv2
import numpy as np
import matplotlib.pyplot as plot

img = cv2.imread("tmp.jpg")
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
noise = np.random.randint(0, 50, img.shape[:3], dtype=np.uint8) #增加随机噪声
img_ni = cv2.add(img, noise)
img_bi = cv2.add(img, np.array([50])) #增加亮度
img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
(h,s,v) = cv2.split(img_hsv)
s1 = np.clip(s+50, 0, 255) #增加饱和度
img_si = cv2.merge([h,s1,v])
img_si = cv2.cvtColor(img_si, cv2.COLOR_HSV2RGB)
v1 = np.clip(v+50, 0, 255) #增加亮度
img_sb = cv2.merge([h,s,v1])
img_sb = cv2.cvtColor(img_sb, cv2.COLOR_HSV2RGB)

plot.figure(figsize=(15,3));
plot.subplot(1,5,1)
plot.title('source image')
plot.imshow(img)
plot.subplot(1,5,2)
plot.title('add noise')
plot.imshow(img_ni)
plot.subplot(1,5,3)
plot.title('RGB add bright')
plot.imshow(img_bi)
plot.subplot(1,5,4)
plot.title('add saturation')
plot.imshow(img_si)
plot.subplot(1,5,5)
plot.title('HSV add bright')
plot.imshow(img_sb)

plot.show()

在这里插入图片描述

3. 滤波函数说明

函数名 作用描述 典型应用场景 核心特点
cv2.blur() 均值滤波(归一化方框滤波) 快速简单去噪、均匀模糊 ✅ 计算快
❌ 边缘模糊明显
cv2.boxFilter() 方框滤波(可非归一化) 自定义权重模糊、非归一化计算 ✅ 支持非归一化(可能溢出)
❌ 需手动控制
cv2.GaussianBlur() 高斯滤波(正态分布权重) 消除高斯噪声、自然平滑 ✅ 保留边缘较好
❌ 计算量较大
cv2.medianBlur() 中值滤波(取像素中位数) 去除椒盐噪声、脉冲噪声 ✅ 保护边缘
❌ 仅支持奇数核大小
cv2.bilateralFilter() 双边滤波(空间+颜色权重) 保边去噪、美颜处理 ✅ 保留细节
❌ 计算复杂度极高
cv2.filter2D() 自定义卷积核滤波 特殊滤波效果(锐化、边缘检测等) ✅ 高度灵活
❌ 需手动设计卷积核

系列文章:

  1. opencv常用边缘检测算子示例
  2. 图像颜色空间对比(Opencv)
  3. 图像变换方式区别对比(Opencv)
  4. 常用图像滤波及色彩调节操作(Opencv)
  5. 图像形态学操作对比(Opencv)

网站公告

今日签到

点亮在社区的每一天
去签到