一、直方图绘制
直方图是数值数据分布的精确图形表示。 这是一个连续变量(定量变量)的概率分布的估计,并且被卡尔·皮尔逊首先引入。它是一种条形图。
为了构建直方图,第一步是将值的范围分段,即将整个值的范围分成一系列间隔,然后计算每个间隔中有多少值。 这些值通常被指定为连续的,不重叠的变量间隔。 间隔必须相邻,并且通常是(但不是必须的)相等的大小。
直方图的作用如下:
1、检验数据分布的类型,分析数据是否服从正态分布,判断数据有无异常;
2、与产品规格界限做比较,可直观地判断分布中心是否偏离规格中心,以确定是否需要调整并求出其调整量;还可判断数据分布的散差(分布范围)是否满足规格范围的要求,以确定是否采取缩小散差的技术性措施;
3、用于进行过程能力调查和不合格品率估计;
4、客观地反映操作者的技术水平和主观努力程度。
源码
from PIL import Image
from matplotlib.font_manager import FontProperties
from pylab import *
from numpy import array
font = FontProperties(fname=r"c:\windows\fonts\SimSun.ttc", size=14)
im = array(Image.open('1.jpg').convert('L'))
figure()
subplot(121)
gray()
contour(im, origin='image')
axis('equal')
axis('off')
title('原图轮廓',fontproperties=font)
subplot(122)
hist(im.flatten(),128)
title('图像直方图',fontproperties=font )
show()
输出
二、均衡化
直方图均衡化实质是对在图像中像素个数多的灰度级进行展宽,而对像素个数少的灰度级进行缩减,从而达到清晰图像的目的。
源码
from PCV.tools import imtools
from PIL import Image
from matplotlib.font_manager import FontProperties
from pylab import *
from numpy import array
font = FontProperties(fname=r"c:\windows\fonts\SimSun.ttc", size=14)
im = array(Image.open('timg.jpg').convert('L'))
im2,cdf = imtools.histeq(im)
figure()
subplot(221)
axis('off')
gray()
title('原始图片',fontproperties=font)
imshow(im)
subplot(222)
axis('off')
title('均衡化后图片', fontproperties=font)
imshow(im2)
subplot(223)
title('原图直方图',fontproperties=font)
hist(im.flatten(),128,density=True)
subplot(224)
title('均衡化直方图',fontproperties=font)
hist(im2.flatten(),128,density=True)
show()
输出
三、高斯滤波
图像大多数噪声均属于高斯噪声,因此高斯滤波器应用也较广泛。高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像去噪。
可以简单地理解为,高斯滤波去噪就是对整幅图像像素值进行加权平均,针对每一个像素点的值,都由其本身值和邻域内的其他像素值经过加权平均后得到。
高斯滤波的具体操作是:用一个用户指定的模板(或称卷积、掩膜)去扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。 [2]
一维高斯分布:
二维高斯分布:
源码
import cv2
import matplotlib.pyplot as plt
im=cv2.imread("dog.jpg")
# 高斯滤波
img_Guassian = cv2.GaussianBlur(im,(5,5),0)
plt.subplot(121)
plt.imshow(im)
plt.subplot(122)
plt.imshow(img_Guassian)
plt.show()