图像处理:彩色直方图和灰度直方图实现源码

#彩色直方图源码实现
#本质:统计每个像素灰度出现的概率X:0-255, Y:P
import  cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread('image0.jpg',1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
count_b = np.zeros(256, np.float)
count_g = np.zeros(256, np.float)
count_r = np.zeros(256, np.float)
for i in range(0, height):
    for j in range(0, width):
        (b, g, r) = img[i, j]
        index_b = int(b)
        index_g = int(g)
        index_r = int(r)
        count_b[index_b] = count_b[index_b] + 1
        count_g[index_g] = count_g[index_g] + 1
        count_r[index_r] = count_r[index_r] + 1
for i in range(0, 256):
    count_b[i] = count_b[i] / (height * width)
    count_g[i] = count_g[i] / (height * width)
    count_r[i] = count_r[i] / (height * width)
x = np.linspace(0, 255,256)
y1 = count_b
plt.figure()
plt.bar(x, y1, 0.9, alpha=1, color='b')
y2 = count_g
plt.figure()
plt.bar(x, y2, 0.9, alpha=1, color='g')
y3 = count_r
plt.figure()
plt.bar(x, y, 0.9, alpha=1, color='r')
plt.show()
cv2.waitKey(0)

#灰度直方图均衡化
#本质:统计每一个像素灰度,出现的概率,X:0-255,Y:P
#累计概率:随像素由0-255增加,对各像素的概率进行累积求概率和,然后像素用新概率*255进行代替
import cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread('image0.jpg', 1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
#求取灰度图
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
count = np.zeros(256, np.float)
for i in range(0,height):
    for j in range(0,width):
        pixel = gray[i, j]
        index = int[pixel]
        count[index] = count[index] +1
for i in range(0, 255):
    count[i] = count[i] / (height * width)
#计算累计概率
sum1 = float(0)
#计算累计概率
for i in range(0,255):
    sum1 = sum1 + count[i]
    count[i] = sum1
# print(count),couture[i]最后趋于1
#计算映射表
map1 = np.zeros(256, np.uint8)
for i in range(0,256):
    map1[i] = np.uint(count[i] * 255)
#映射
for i in range(0, height):
    for j in range(0,width):
        pixel = gray[i, j]
        gray[i, j] = map1[pixel]
cv2.imshow('dst', gray)
cv2.waitKey(0)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MarkJhon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值