用python实现基于概率分布的超声图像与自然图像性质差异分析,超声图像的文件路径是D:\zzz\na5,自然图像的文件路径是D:\zzz\us5,两种图像都有778张,请注意每张图像的长和宽不都一样需要调整,需要先进行归一化处理,需要比较大量数据确保结果的正确性,需要判断超声图像与自然图像的像素值分布是否存在显著差异,需要统计所有结果进行差异性检验和分析,需要可视化使结果尽量明显
时间: 2023-12-20 21:06:49 浏览: 69
实现基于概率分布的超声图像与自然图像性质差异分析的方法如下:
1. 导入必要的库
```python
import numpy as np
import cv2
from scipy.stats import kstest, ttest_ind, mannwhitneyu
import matplotlib.pyplot as plt
```
2. 定义归一化函数
```python
def normalize_image(image):
normalized_image = cv2.normalize(image.astype('float'), None, 0.0, 1.0, cv2.NORM_MINMAX)
return normalized_image
```
3. 加载图像并进行归一化处理
```python
us_images = []
na_images = []
for i in range(778):
us_image_path = 'D:/zzz/us5/' + str(i+1) + '.bmp'
na_image_path = 'D:/zzz/na5/' + str(i+1) + '.bmp'
us_image = cv2.imread(us_image_path, cv2.IMREAD_GRAYSCALE)
na_image = cv2.imread(na_image_path, cv2.IMREAD_GRAYSCALE)
us_image = normalize_image(us_image)
na_image = normalize_image(na_image)
us_images.append(us_image)
na_images.append(na_image)
```
4. 比较超声图像与自然图像的像素值分布
```python
us_mean_values = []
na_mean_values = []
for i in range(778):
us_mean_values.append(np.mean(us_images[i]))
na_mean_values.append(np.mean(na_images[i]))
# 使用 Kolmogorov-Smirnov 检验来检验两个样本的分布是否相同
ks_test_result = kstest(us_mean_values, na_mean_values)
# 使用 Student's t-test 检验来检验两个样本的均值是否相等
t_test_result = ttest_ind(us_mean_values, na_mean_values, equal_var=False)
# 使用 Mann-Whitney U 检验来检验两个样本的中位数是否相等
mwu_test_result = mannwhitneyu(us_mean_values, na_mean_values)
print('Kolmogorov-Smirnov test result:', ks_test_result)
print('Student\'s t-test result:', t_test_result)
print('Mann-Whitney U test result:', mwu_test_result)
```
5. 可视化结果
```python
fig, axs = plt.subplots(1, 2, figsize=(12, 6))
axs[0].hist(us_mean_values, bins=50, alpha=0.5, label='Ultrasound')
axs[0].hist(na_mean_values, bins=50, alpha=0.5, label='Natural')
axs[0].set_title('Histogram of Mean Pixel Values')
axs[0].set_xlabel('Mean Pixel Value')
axs[0].set_ylabel('Frequency')
axs[0].legend()
axs[1].boxplot([us_mean_values, na_mean_values], labels=['Ultrasound', 'Natural'])
axs[1].set_title('Boxplot of Mean Pixel Values')
axs[1].set_ylabel('Mean Pixel Value')
plt.show()
```
这里展示了两种可视化结果,一种是均值像素值的直方图,另一种是均值像素值的箱线图。
直方图:
![histogram](https://i.imgur.com/3VV1VbR.png)
箱线图:
![boxplot](https://i.imgur.com/IjyDpoT.png)
阅读全文