直方图统计量增强python代码
时间: 2023-10-13 10:19:43 浏览: 147
以下是一个简单的直方图统计量增强的Python代码示例:
```python
import cv2
import numpy as np
import matplotlib.pyplot as plt
# 读取图像
img = cv2.imread('lena.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)
# 将图像还原到2D
equ = equ.reshape(img.shape)
# 绘制原图和直方图均衡化后的图像
plt.subplot(121)
plt.imshow(img, cmap='gray')
plt.title('Original Image')
plt.subplot(122)
plt.imshow(equ, cmap='gray')
plt.title('Equalized Image')
plt.show()
```
该代码将读取名为“lena.jpg”的灰度图像并对其进行直方图均衡化。它首先计算图像的直方图,然后计算累积分布函数以及其归一化版本。接下来,它使用插值函数计算等化映射。最后,它将等化图像还原为2D格式并显示原始图像和均衡化后的图像。
相关问题
python 直方图均衡
直方图均衡化是一种用于增强图像对比度的方法,它通过重新分配图像的灰度级来扩展像素值的动态范围。在Python中,可以使用numpy和skimage库来实现直方图均衡化。
下面是利用numpy和skimage库实现直方图均衡化的步骤:
1. 导入所需的库:
```python
import numpy as np
from skimage import exposure, data
```
2. 加载图像:
```python
image = data.camera() * 1.0
```
3. 使用numpy计算直方图:
```python
hist1 = np.histogram(image, bins=256)
```
4. 使用skimage计算直方图:
```python
hist2 = exposure.histogram(image, nbins=256)
```
5. 打印直方图统计量:
```python
print(hist1)
print(hist2)
```
通过以上步骤,你可以获得图像的直方图统计量。其中,`hist1`是使用numpy计算得到的直方图,`hist2`是使用skimage计算得到的直方图。
首先,使用Python编程计算iris数据集中各属性的均值、最大值、最小值、四分位数等统计量;然后,使用Python中的Matplotlib绘图库分别绘制箱线图、直方图和散点图。
首先,在Python中,我们可以利用pandas库对Iris数据集进行处理。例如,如果你的数据存储在一个名为`iris_data.csv`的CSV文件中,可以按照以下步骤进行:
1. 导入所需的库:
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
```
2. 加载数据集并查看前几行:
```python
iris = load_iris()
df = pd.DataFrame(data= iris.data, columns= iris.feature_names)
print(df.head())
```
3. 计算统计量:
```python
mean_values = df.mean()
max_values = df.max()
min_values = df.min()
quantiles = df.quantile([0.25, 0.5, 0.75])
# 对于数值型特征,四分位数通常用于描述数据分布的离散程度
```
4. 绘制箱线图、直方图和散点图:
- 箱线图(Boxplot):
```python
for column in df.columns:
plt.figure(figsize=(8, 6))
plt.boxplot(df[column])
plt.title(f'{column} Boxplot')
plt.show()
```
- 直方图(Histogram):
```python
for column in df.columns:
plt.figure(figsize=(8, 6))
plt.hist(df[column], bins='auto', edgecolor='black')
plt.title(f'{column} Histogram')
plt.xlabel(column)
plt.ylabel('Frequency')
plt.show()
```
- 散点图(Scatter plot):
```python
for i in range(4):
for j in range(i+1, 4):
plt.figure(figsize=(8, 6))
plt.scatter(df.iloc[:, i], df.iloc[:, j], alpha=0.5)
plt.xlabel(iris.feature_names[i])
plt.ylabel(iris.feature_names[j])
plt.title(f'{iris.feature_names[i]} vs {iris.feature_names[j]} Scatter Plot')
plt.show()
```
以上就是基本的操作流程,你可以根据实际需求调整数据预处理和图形展示部分。
阅读全文