数字图像处理_012_(图像直方图比较,图像直方图均衡化)

1.直方图比较

import numpy as np
import matplotlib.pyplot as plt
import cv2 as cv
def show(img):
    if img.ndim==2:
        plt.imshow(img,cmap='gray')
    else:
        img2=cv.cvtColor(img,cv.COLOR_BGR2RGB)
        plt.imshow(img2)
    plt.show()
img1=cv.imread('pic/petal200x300.jpg')
img2=cv.imread('pic/petal500x500.jpg')
img3=cv.imread('pic/parrot500x450.jpg')
#图片构成list
imgs=[img1,img2,img3]
#获得个图像的直方图,这里注意cv.calcHist([img],[0],None,[64],[0,256])中的都是[],都是list形式
#[img]中放至多张图片,[0]代表0(b)通道,None是mask,[64]为bits代表直方图共64段,[0,256]代表直方图的范围。
hists=[cv.calcHist([img],[0],None,[64],[0,256]) for img in imgs]

#要对hist进行归一化且转换为浮点类型,compareHist就是要用到浮点类型
hists=[(hist/img.size*3).astype(np.float32) for (hist,img) in zip(hists,imgs)]
#分别对图1图2进行比较,对图2图3进行比较比较的方式是相关系数比较
#相关系数的范围在[-1,1],越接近-1越负相关,越接近1越正相关,越接近0越无关
corr1=cv.compareHist(hists[0],hists[1],cv.HISTCMP_CORREL)
corr2=cv.compareHist(hists[1],hists[2],cv.HISTCMP_CORREL)
print(corr1,corr2)
#循环绘制
[plt.plot(hist) for hist in hists]
plt.show()
for img in imgs:
    show(img)

2.直方图均衡化

1.具体均衡化步骤

实现公式:
S ( r ) = ( L − 1 ) ∑ i = 0 r n r N S(r)=(L-1)\sum_{i=0}^r\frac{n_r}{N} S(r)=(L1)i=0rNnr
1.灰度图片读取。
2.对灰度图片进行直方图的计算得到 h i h_i hi
3.计算灰度分布频率 f i f_i fi,计算方法为: h i / ( w ∗ h ) h_i/(w*h) hi/(wh)
4.计算累计频率 a i a_i ai, a i a_i ai为前 i i i f i f_i fi之和。
5.对计算结果进行四舍五入取整型。
6.实现从原图像到均衡化图像的映射。

2.实现代码

%%time

#S(r)=K/N(n0+n1+n2...nr)
img= cv.imread('pic/wolf500x750.jpg',0)
#计算灰度直方图
hist=cv.calcHist([img],[0],None,[256],[0,256])
#计算灰度分布频率f,f=hist/(w*h),直方图/图片大小
f=hist/img.size
L=256
#累计分布频率
a=np.cumsum(f)
#四舍五入
s=np.round(a*(L-1)).astype(np.uint8)
#1等同于下面双循环,%%time可以对比两个程序的运行时间
equ1=s[img]
#对equ1进行初始化赋值
# equ1=np.zeros_like(img)
# #
# for i in range(img.shape[0]):
#     for j in range(img.shape[1]):
#         r=img[i,j]
#         equ1[i,j]=s[r]

show(equ1)
plt.plot(f)
plt.show()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值