使用opencv和python写出代码:利用全彩色图像处理的两种方法,对彩色图像进行平滑滤波处理:使用 均值滤波、中值滤波和高斯滤波,分别在RGB空间和HSI空间对彩色图像进行平滑处理,并显示平滑后的图像。
时间: 2024-05-15 19:14:11 浏览: 178
数字图像处理5 分别在RGB和HSI颜色模型上使用领域平均法平滑彩色图像 python+opencv2(csdn).pdf
5星 · 资源好评率100%
好的,以下是代码实现:
```python
import cv2
import numpy as np
# 读取彩色图像
img = cv2.imread('color_img.jpg')
# RGB空间下的均值滤波
mean_rgb = cv2.blur(img, (5, 5))
# RGB空间下的中值滤波
median_rgb = cv2.medianBlur(img, 5)
# RGB空间下的高斯滤波
gaussian_rgb = cv2.GaussianBlur(img, (5, 5), 0)
# HSI空间下的均值滤波
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
h, s, v = cv2.split(hsv)
mean_hsi_v = cv2.blur(v, (5, 5))
mean_hsi = cv2.merge([h, s, mean_hsi_v])
mean_hsi = cv2.cvtColor(mean_hsi, cv2.COLOR_HSV2BGR)
# HSI空间下的中值滤波
median_hsi_v = cv2.medianBlur(v, 5)
median_hsi = cv2.merge([h, s, median_hsi_v])
median_hsi = cv2.cvtColor(median_hsi, cv2.COLOR_HSV2BGR)
# HSI空间下的高斯滤波
gaussian_hsi_v = cv2.GaussianBlur(v, (5, 5), 0)
gaussian_hsi = cv2.merge([h, s, gaussian_hsi_v])
gaussian_hsi = cv2.cvtColor(gaussian_hsi, cv2.COLOR_HSV2BGR)
# 显示原始图像和处理后的图像
cv2.imshow('Original', img)
cv2.imshow('Mean RGB', mean_rgb)
cv2.imshow('Median RGB', median_rgb)
cv2.imshow('Gaussian RGB', gaussian_rgb)
cv2.imshow('Mean HSI', mean_hsi)
cv2.imshow('Median HSI', median_hsi)
cv2.imshow('Gaussian HSI', gaussian_hsi)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
其中,我们首先读入一张彩色图像。然后,我们在RGB空间下使用 `cv2.blur()` 函数来实现均值滤波,使用 `cv2.medianBlur()` 函数来实现中值滤波,使用 `cv2.GaussianBlur()` 函数来实现高斯滤波。在HSI空间下,我们首先将图像转换为HSV颜色空间,然后再将其分离为H、S、V三个通道。接着,我们对V通道进行均值滤波、中值滤波和高斯滤波,然后再将三个通道合并为一个图像,并将其转换回BGR颜色空间。最后,我们将原始图像和处理后的图像都显示出来。
注意,这里我们使用的是 `cv2.cvtColor()` 函数来进行颜色空间的转换。同时,我们也可以使用 `cv2.split()` 和 `cv2.merge()` 函数来分离和合并通道。
阅读全文