将原图像转化为灰度图,并进行图像灰度直方图均衡化python代码
时间: 2023-09-12 12:08:18 浏览: 128
将原图像转化为灰度图并进行灰度直方图均衡化可以使用以下 Python 代码实现:
```python
import cv2
# 读取彩色图像
img = cv2.imread('image.jpg')
# 转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 直方图均衡化
equalized = cv2.equalizeHist(gray)
# 显示原图和均衡化后的图像
cv2.imshow('Original', gray)
cv2.imshow('Equalized', equalized)
# 等待按键
cv2.waitKey(0)
# 释放资源
cv2.destroyAllWindows()
```
在上面的代码中,我们首先使用 imread 函数读取一张彩色图像,并将其存储在 img 变量中。然后,我们使用 cvtColor 函数将图像转换为灰度图像,并将结果存储在 gray 变量中。接下来,我们使用 equalizeHist 函数对灰度图像进行直方图均衡化,并将结果存储在 equalized 变量中。最后,我们使用 imshow 函数显示原图和均衡化后的图像,并等待按键。注意,在显示图像之后,我们需要使用 destroyAllWindows 函数释放资源。
相关问题
直方图均衡化实验:读取图片,将彩色图转化为灰度图,显示灰度图的灰度直方图,改变原图像的灰度特征,在灰度上进行加减法处理,分别加上和减去一个固定的数值,观察灰度直方图的变化。得出什么结论
直方图均衡化实验通常涉及以下几个步骤[^1]:
1. **读取图片并转换为灰度**:
```python
from skimage.io import imread
gray_image = rgb_image.rgb2gray()
```
2. **显示灰度直方图**:
```python
from skimage.exposure import histogram
hist, bins = histogram(gray_image)
plt.plot(bins[:-1], hist, r'-o')
```
3. **原图像直方图均衡化**:
```python
from skimage.exposure import equalize_hist
eq_gray_image = equalize_hist(gray_image)
```
4. **对比新旧直方图**:
```python
new_hist, _ = histogram(eq_gray_image)
plt.figure(), plt.plot(bins[:-1], new_hist, r'-o')
```
5. **灰度特征变化**:
- 加上固定数值:
```python
modified_image = eq_gray_image + constant_value
```
- 减去固定数值:
```python
modified_image = eq_gray_image - constant_value
```
对比修改后的直方图。
通过这个过程,你可以观察到以下结论[^2]:
- 原始灰度图像的直方图可能呈现偏态(某些灰度级别较集中,而其他较少),这可能导致某些区域在视觉上显得较暗或亮。
- 直方图均衡化后,图像的灰度分布更均匀,各灰度级别的像素数量接近,增强了细节和整体对比度。
- 当添加或减去固定数值时,直方图会相应地发生平移,但均衡化的效果仍然明显,表明灰度级之间的相对关系得到了保持。
直方图灰度化均衡化python代码
以下是使用Python实现灰度化和直方图均衡化的代码:
灰度化:
```python
import cv2
# 加载图像
img = cv2.imread('image.jpg')
# 将图像转化为灰度图像
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 显示灰度图像
cv2.imshow('Gray Image',gray_img)
cv2.waitKey(0)
```
直方图均衡化:
```python
import cv2
# 加载图像
img = cv2.imread('image.jpg')
# 将图像转化为灰度图像
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 进行直方图均衡化
equ_img = cv2.equalizeHist(gray_img)
# 显示直方图均衡化图像
cv2.imshow('Equalized Image',equ_img)
cv2.waitKey(0)
```
这里以OpenCV库为例,通过`cv2.cvtColor()`函数将图像转化为灰度图像,再使用`cv2.equalizeHist()`函数进行直方图均衡化。最后通过`cv2.imshow()`函数显示灰度图像和均衡化后的图像。
阅读全文
相关推荐
















