python不使用库函数实现灰度图均衡化
时间: 2023-05-27 19:03:18 浏览: 82
def histeq(image):
#获取图片的灰度值直方图
hist = [0] * 256
for i in range(image.shape[0]):
for j in range(image.shape[1]):
intensity = int(image[i, j])
hist[intensity] += 1
#计算直方图均衡化映射表
s = [0] * 256
n = image.shape[0] * image.shape[1]
sum_hist = 0
for i in range(256):
#计算当前灰度级别对应的累计概率
sum_hist += hist[i] / n
#计算并保存映射表
s[i] = round(255 * sum_hist)
#进行直方图均衡化
for i in range(image.shape[0]):
for j in range(image.shape[1]):
intensity = image[i, j]
image[i, j] = s[intensity]
return image
相关问题
python在不调用库函数的条件下实现灰度图均衡化
以下是Python代码实现灰度图均衡化:
```
import numpy as np
import cv2
# 读取灰度图像
img = cv2.imread('image.jpg', 0)
# 获取图像宽度与高度
h, w = img.shape
# 统计图像直方图
hist = np.zeros(256)
for i in range(h):
for j in range(w):
hist[img[i][j]] += 1
# 计算累积分布函数
cdf = np.zeros(256)
sum_hist = np.sum(hist)
for k in range(256):
if k == 0:
cdf[k] = hist[k] / sum_hist
else:
cdf[k] = cdf[k-1] + hist[k] / sum_hist
# 映射原图像到均衡化后的图像
equalized_img = np.zeros((h, w))
for i in range(h):
for j in range(w):
equalized_img[i][j] = np.round(255 * cdf[img[i][j]])
# 显示原图和均衡化后的图像
cv2.imshow('Original Image', img)
cv2.imshow('Equalized Image', equalized_img)
cv2.waitKey(0)
```
首先读取灰度图像,然后统计图像直方图。接着计算累积分布函数,并根据累积分布函数将原图像映射到均衡化后的图像。最后使用`cv2.imshow()`展示原图和均衡化后的图像。
利用python实现直方图均衡化不调用任何库函数
好的,这是一个关于图像处理的问题。直方图均衡化是一种改善图像亮度和对比度的方法,它能够将图像的像素灰度值重新分配,使得灰度值更平均,从而达到增强图像的效果。具体实现方法是:
1. 首先读取原始图像,并统计其灰度级别的直方图;
2. 计算每个像素出现的频率,即像素值出现的次数除以总像素数;
3. 计算直方图的累积分布函数(CDF);
4. 接着将每个像素的灰度级别根据CDF进行均衡化;
5. 最后输出均衡化后的图像。
具体代码如下:
```
import cv2
import numpy as np
def hist_equalization(img):
# 计算灰度级别的直方图
hist, bins = np.histogram(img.flatten(), 256, [0, 256])
# 计算频率
freq = hist / np.sum(hist)
# 计算累积分布函数
cdf = np.cumsum(freq)
# 进行均衡化
img_eq = (255 * cdf[img] + 0.5).astype(np.uint8)
return img_eq
if __name__ == '__main__':
# 读取原始图像
img = cv2.imread('lena.jpg', cv2.IMREAD_GRAYSCALE)
# 进行均衡化
img_eq = hist_equalization(img)
# 显示结果
cv2.imshow('Original Image', img)
cv2.imshow('Equalized Image', img_eq)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
希望这个代码能够帮助解决你的问题!