Python 直方图 均衡化 高斯滤波

Python 直方图 均衡化 高斯滤波

直方图

1、基本原理

直方图显示图像数据时,会以左暗右明的分布曲线呈现出来,并且可以通过算法来对图像按比例进行缩小,且具有图像平移、旋转、缩放不变性等众多优点。直方图是反映一个图像像素分布的统计表:横坐标代表图像像素的种类,纵坐标代表了每一种颜色致在图像中的像素总数后哦中所占所有像素个数的百分比。

由于直方图在进行图像计算处理时的代价比较小,所以经常用于图像处理。

2、代码实现

from numpy import array

from PIL import Image
from matplotlib.pyplot import *
from pylab import *
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False

im = array(Image.open('image1.jpg').convert('L'))  # 打开图像,并转成灰度图像
print(im)
figure()
subplot(121)
gray()
contour(im, origin='image')  #画图
axis('equal')  # 自动调整比例
axis('off')  # 去除x、y轴上的刻度
title(u'图像轮廓')

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

show()

3、运行结果

原图
原图

运行结果截图

运行结果

直方图均衡化

1、基本原理

直方图均衡化是一种增强图像对比度的方法,其主要思想是将一副图像的直方图分布变成近似均匀分布,从而增强图像的对比度。直方图均衡化虽然只是数字图像处理)里面的基本方法,但是其作用很强大,是一种很经典的算法。使用了直方图均衡化过后的图片会变得更加清晰,特征更加地明显。

2、代码实现

# -*- coding: utf-8 -*-
from PIL import Image
from matplotlib.pyplot import figure, subplot, axis, gray, title, imshow, hist
from numpy.core._multiarray_umath import array
from pylab import *
from PCV.tools import imtools
import matplotlib.pyplot as plt


# 添加中文字体支持
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"c:\windows\fonts\SimSun.ttc", size=14)

 # 打开图像,并转成灰度图像
im = array(Image.open('image1.jpg').convert('L'))
im2, cdf = imtools.histeq(im)

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

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

subplot(2, 2, 3)
axis('off')
title(u'原始直方图', fontproperties=font)
hist(im.flatten(), 128, density=True)

subplot(2, 2, 4)
axis('off')
title(u'均衡化后的直方图', fontproperties=font)
hist(im2.flatten(), 128, density=True)
plt.show()

3、运行结果

运行结果

高斯滤波

1、基本原理

高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。噪声在图像当中常表现为一引起较强视觉效果的孤立像素点或像素块。简单来说,噪声的出现会给图像带来干扰,让图像变得不清楚。高斯噪声就是它的概率密度函数服从高斯分布(即正态分布)的一类噪声。高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。

2、代码实现

import cv2
import matplotlib.pyplot as plt

im=cv2.imread("image1.jpg")
# 高斯滤波
img_Guassian = cv2.GaussianBlur(im,(5,5),0)

plt.subplot(121)
plt.imshow(im)
plt.subplot(122)
plt.imshow(img_Guassian)

plt.show()

3、运行结果

运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值