计算机视觉——图像处理基础

本文介绍了图像处理的基础知识,包括灰度直方图的原理及其反映的图像灰度分布,高斯滤波的模糊效果及其在图像平滑化中的应用,以及直方图均衡化如何增强图像对比度。通过Python实现,详细展示了灰度直方图、高斯滤波和直方图均衡化的实验代码和结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

图像处理基础

1、实验需求

以自己的计算智能博客(大头照或生活照)为基础,做完图像处理基础章节内容,并将直方图、高斯滤波、直方图均衡化的结果及基本原理描述放到博客中

2、语言和平台

语言:python2.7.13 (anaconda2)
平台:pycharm 2018.2

3、图像处理基本原理

3.1 灰度直方图

灰度直方图反映的是一幅图像中各灰度级像素出现的频率。以灰度级为横坐标,纵坐标为灰度级的频率,绘制频率同灰度级的关系图就是灰度直方图。它是图像的一个重要特征,反映了图像灰度分布的情况。
频率公式为: v i = n i / n v_i=n_i/n vi=ni/n ( n i ni ni为灰度为i的像元个数, n i n_i ni表示整张图片的像元数, n n n表示把灰度分成多少级,该实验分为256级)

3.2 高斯滤波(高斯模糊)

所谓”模糊”,可以理解成每一个像素都取周边像素的平均值。
在这里插入图片描述
上图中,2是中间点,周边点都是1。
在这里插入图片描述
“中间点”取”周围点”的平均值,就会变成1。在数值上,这是一种”平滑化”。在图形上,就相当于产生”模糊”效果,”中间点”失去细节。
显然,计算平均值时,取值范围越大,”模糊效果”越强烈。

3.3 直方图均衡化

把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布的技术。实质上是对图像进行非线性拉伸,重新分配图像象元值,使一定灰度范围内象元值的数量大致相等。这样,原来直方图中间的峰顶部分对比度得到增强,而两侧的谷底部分对比度降低,输出图像的直方图是一个较平的分段直方图:如果输出数据分段值较小的话,会产生粗略分类的视觉效果。直方图均衡化能起到增强图像对比度的作用。
在这里插入图片描述

4、重要函数

1、convert(‘L’):将图片转变为灰色图像,它的每个像素用8个bit表示,0表示黑,255表示白,其他数字表示不同的灰度。
2、contour():画出图片轮廓
3、rof.denoise():基于rof的降噪处理
4、filters.gaussian_filter():高斯模糊处理
5、imtools.histeq():用自带的工具包生成均衡化直方图

5、实验代码和结果

原图
在这里插入图片描述

5.1灰度直方图 histogram.py
# encoding:utf-8
from PIL import Image
from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei']

im = array(Image.open('D:/XYH.jpg').convert('L'))

figure()
subplot(121)
gray()
contour(im, origin='image')
axis('equal')
axis('off')
title(u'图像轮廓')

subplot(122)
hist(im.flatten(), 128)
title(u'图像直方图')
plt.xlim([0, 260])
plt.ylim([0, 11000])

show()

在这里插入图片描述

5.2高斯滤波(高斯模糊)gauss.py
# encoding:utf-8

from PIL import Image
from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei']
from numpy import *

from scipy.ndimage import filters

from PCV.tools import rof

im = array(Image.open('D:/XYH.jpg').convert('L'))

U, T = rof.denoise(im, im)
G = filters.gaussian_filter(im, 10) # 第二个参数越大,图像越模糊

figure()
gray()

subplot(1, 3, 1)
imshow(im)
#axis(‘equal’)
axis('off')
title(u'原噪声图像')

subplot(1, 3, 2)
imshow(G)
#axis(‘equal’)
axis('off')
title(u'高斯模糊后的图像')

subplot(1, 3, 3)
imshow(U)
#axis(‘equal’)
axis('off')
title(u'ROF降噪后的图像')

show()

在这里插入图片描述

5.3直方图均衡化 equalization.py
 # -- coding: utf-8 --
from PIL import Image
from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei']
from PCV.tools import imtools

im = array(Image.open('D:/XYH.jpg').convert('L'))

im2, cdf = imtools.histeq(im)

figure()
subplot(2, 2, 1)
axis('off')
gray()
title(u'原始图像')
imshow(im)

subplot(2, 2, 2)
axis('off')
title(u'直方图均衡化后的图像')
imshow(im2)

subplot(2, 2, 3)
axis('off')
title(u'均衡化后的直方图' )

hist(im.flatten(), 128, normed=True)

subplot(2, 2, 4)
axis('off')
title(u'均衡化后的直方图')

hist(im2.flatten(), 128, normed=True)

show()

在这里插入图片描述

6、总结

1、这些相对基础的图像处理在上学期已经通过数字图像处理这门课中稍微有所了解,只不过当是用matlab编写的,和python相比,有部分相同之处也有所不同。
2、初学python,首先装环境和许多模块就用了很多时间,python可以调用其他许多第三方库之类的,用起来很方便(我不知道其他语言可不可以也这样)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值