用python写一段代码实现直方图均衡,并展现出来
时间: 2023-04-12 10:00:37 浏览: 164
好的,以下是用 Python 实现直方图均衡的代码:
```python
import cv2
import numpy as np
import matplotlib.pyplot as plt
# 读取图片
img = cv2.imread('image.jpg', 0)
# 计算直方图
hist, bins = np.histogram(img.flatten(), 256, [0, 256])
# 计算累积分布函数
cdf = hist.cumsum()
cdf_normalized = cdf * hist.max() / cdf.max()
# 计算均衡化后的像素值
equ = np.interp(img.flatten(), bins[:-1], cdf_normalized)
# 将像素值转换回图像
equ = equ.reshape(img.shape)
# 显示原图和均衡化后的图像
plt.subplot(121), plt.imshow(img, cmap='gray')
plt.title('Original Image'), plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.imshow(equ, cmap='gray')
plt.title('Equalized Image'), plt.xticks([]), plt.yticks([])
plt.show()
```
这段代码可以实现直方图均衡,并将均衡化后的图像展示出来。
相关问题
用python写一段代码实现直方图均衡的函数,并展现出来
好的,以下是用 Python 实现直方图均衡的函数:
```python
import cv2
import numpy as np
import matplotlib.pyplot as plt
def histogram_equalization(image):
# 将图像转换为灰度图
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 计算灰度直方图
hist, bins = np.histogram(gray.flatten(), 256, [0, 256])
# 计算累积分布函数
cdf = hist.cumsum()
cdf_normalized = cdf * hist.max() / cdf.max()
# 计算均衡化后的像素值
equalized = np.interp(gray.flatten(), bins[:-1], cdf_normalized)
equalized = equalized.reshape(gray.shape)
# 显示原图和均衡化后的图像
plt.subplot(121)
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.title('Original Image')
plt.xticks([]), plt.yticks([])
plt.subplot(122)
plt.imshow(equalized, cmap='gray')
plt.title('Equalized Image')
plt.xticks([]), plt.yticks([])
plt.show()
# 测试函数
image = cv2.imread('test.jpg')
histogram_equalization(image)
```
这个函数可以将输入的彩色图像转换为灰度图像,然后对灰度直方图进行均衡化,最后显示原图和均衡化后的图像。你可以将 `test.jpg` 替换为你自己的图像文件名来测试函数。
用python写一段代码实现直方图均衡的函数,采用[h,w]=src.shape,并返回dst
好的,以下是用 Python 实现直方图均衡的函数的代码:
```python
import numpy as np
def histogram_equalization(src):
# 获取图像的高度和宽度
h, w = src.shape
# 计算每个像素值出现的次数
hist, _ = np.histogram(src.flatten(), bins=256, range=(0, 255))
# 计算每个像素值出现的概率
prob = hist / (h * w)
# 计算累计分布函数
cdf = np.cumsum(prob)
# 计算均衡化后的像素值
dst = np.floor(255 * cdf[src]).astype(np.uint8)
return dst
```
这个函数接受一个灰度图像作为输入,返回一个经过直方图均衡化处理后的图像。函数中使用了 NumPy 库中的一些函数来计算直方图、概率、累计分布函数等。
阅读全文