计算机视觉 (1)

一、安装和配置Python+opencv

具体方法网上都有,这里就不过多介绍了。
通过使用opencv,验证配置成功。
计算机视觉 (1)

2.直方图

2.1 基本原理

图像直方图是表示数字图像中亮度分布的直方图,绘制了图像中每个亮度值的像素数。在这样的直方图中,横坐标的左侧是纯黑色、较暗的区域,右侧是较亮、较纯的白色区域。
灰度直方图表示图像中不同灰度值的分布。横轴表示像素值,纵轴表示对应的像素值的个数。
直方图丢失了图像的坐标信息。

2.2 代码实现

使用matplotlib绘制直方图

import cv2
import matplotlib.pyplot as plt

img = cv2.imread("E://img1.jpg")
reim = cv2.resize(img,dsize=(600,480))

cv2.imshow("test",reim)

plt.hist(reim.ravel(), 256)  # ravel()是numpy里的函数,将多维数组转换为一维数组

plt.show()
cv2.waitKey()

计算机视觉 (1)

3. 高斯滤波器

3.1 基本原理

高斯滤波是一种线性平滑滤波器,适用于去除高斯噪声,广泛应用于图像处理的降噪过程中。每个像素的值是通过自身和邻域内其他像素值的加权平均得到的。因此,虽然可以消除噪声,但也不可避免地导致图像模糊。二维高斯分布如下:
计算机视觉 (1)

3.2 代码实现

使用opencv的函数cv2.GaussianBlur,并设置模板大小

gsim = cv2.GaussianBlur(reim, (5, 5), 0)
plt.subplot(1,2,1)
reim=cv2.cvtColor(reim,cv2.COLOR_BGR2RGB)
plt.title("origin")
plt.imshow(reim)
plt.subplot(1,2,2)
gsim=cv2.cvtColor(gsim,cv2.COLOR_BGR2RGB)
plt.title("gaussian")
plt.imshow(gsim)

输出一下,过滤后发现确实是模糊了
计算机视觉 (1)

四、直方图均衡化

4.1 基本原理

直方图均衡化就是对图像进行非线性拉伸,重新分配图像像素值,使一定灰度范围内的像素个数大致相同。其定义及实现效果如下图所示:
计算机视觉 (1)

4.2 代码实现

在此主要展示灰度图像的直方图均衡化,使用函数cv2.equalizeHist 即可。对于彩色图像,将彩色图像先用split()方法,将三个通道拆分,然后分别进行均衡化.最后使用merge()方法将均衡化之后的三个通道进行合并,原理同灰度相同,故不过多展示。

gray=cv2.cvtColor(reim,cv2.COLOR_BGR2GRAY)

plt.subplot(2,2,1)
gray1=cv2.cvtColor(gray, cv2.COLOR_BGRA2RGB)
plt.imshow(gray1)
plt.subplot(2,2,2)
plt.hist(gray1.ravel(),256)
plt.subplot(2,2,3)
equal = cv2.equalizeHist(gray)
equal1=cv2.cvtColor(equal, cv2.COLOR_BGRA2RGB)
plt.imshow(equal1)
plt.subplot(2,2,4)
plt.hist(equal1.ravel(), 256)

结果如下。对比图像直方图可以看出,经过直方图均衡化后,直方图分布更加均匀,图像更加明亮。
计算机视觉 (1)

五、总结

本次实验内容与上学去所学的数字图像处理内容相似,且opencv之前在C++中也使用过,函数比较熟悉。但是在python中用matplotlib输出BGR图像还是有一番费劲的。这是本课程第一次实验,后续继续加油吧。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
社会演员多的头像社会演员多普通用户
上一篇 2022年3月17日
下一篇 2022年3月17日

相关推荐

此站出售,如需请站内私信或者邮箱!