用python实现基于概率分布的超声图像与自然图像性质差异分析这一课题,使用opencv, 不能用greycomatrix, greycoprops,两种图像的文件类型都是jpg,超声图像的文件路径是‘D:\zzz\us5’,自然图像的文件路径是‘D:\zzz\na4’,两种图像都有84张,图像的名称都是1到84的顺序数,两种图像的形状大小相同,需要对比两种图像的特征必须有颜色,纹理,形态学特征,差异性分析方法也需要多种,包括完整详细代码
时间: 2023-11-16 14:07:52 浏览: 28
为了比较超声图像和自然图像的特征,我们可以使用以下几种方法:
1. 颜色特征:使用颜色直方图来表示图像的颜色分布,比较两种图像的颜色直方图的相似度。
2. 纹理特征:使用局部二值模式(LBP)算法提取图像的纹理特征,比较两种图像的LBP直方图的相似度。
3. 形态学特征:使用形态学算法提取图像的形态学特征,比较两种图像的形态学特征的相似度。
下面是完整的代码实现:
```python
import cv2
import numpy as np
import os
# 定义颜色直方图比较函数
def compare_color_histogram(img1, img2):
hist1 = cv2.calcHist([img1], [0, 1, 2], None, [8, 8, 8], [0, 256, 0, 256, 0, 256])
hist2 = cv2.calcHist([img2], [0, 1, 2], None, [8, 8, 8], [0, 256, 0, 256, 0, 256])
return cv2.compareHist(hist1, hist2, cv2.HISTCMP_CORREL)
# 定义LBP特征提取函数
def get_lbp_feature(img):
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
radius = 3
n_points = 8 * radius
lbp = np.zeros_like(gray)
for i in range(radius, gray.shape[0]-radius):
for j in range(radius, gray.shape[1]-radius):
center = gray[i, j]
value = 0
for k in range(n_points):
x = i + int(radius * np.cos(2*np.pi*k/n_points))
y = j - int(radius * np.sin(2*np.pi*k/n_points))
if gray[x, y] > center:
value += 2**k
lbp[i, j] = value
hist, _ = np.histogram(lbp, bins=np.arange(0, 2**n_points+1), density=True)
return hist
# 定义形态学特征提取函数
def get_morphology_feature(img):
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
_, thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
opening = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel)
contours, _ = cv2.findContours(opening, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
area = 0
for cnt in contours:
area += cv2.contourArea(cnt)
return area
# 加载超声图像和自然图像
us_path = 'D:\\zzz\\us5'
na_path = 'D:\\zzz\\na4'
us_images = []
na_images = []
for i in range(1, 85):
us_file = os.path.join(us_path, str(i)+'.jpg')
na_file = os.path.join(na_path, str(i)+'.jpg')
us_images.append(cv2.imread(us_file))
na_images.append(cv2.imread(na_file))
# 计算颜色特征相似度
color_similarities = []
for i in range(84):
us_img = us_images[i]
na_img = na_images[i]
color_similarity = compare_color_histogram(us_img, na_img)
color_similarities.append(color_similarity)
# 计算LBP特征相似度
lbp_similarities = []
for i in range(84):
us_img = us_images[i]
na_img = na_images[i]
us_lbp = get_lbp_feature(us_img)
na_lbp = get_lbp_feature(na_img)
lbp_similarity = cv2.compareHist(us_lbp, na_lbp, cv2.HISTCMP_CORREL)
lbp_similarities.append(lbp_similarity)
# 计算形态学特征相似度
morphology_similarities = []
for i in range(84):
us_img = us_images[i]
na_img = na_images[i]
us_area = get_morphology_feature(us_img)
na_area = get_morphology_feature(na_img)
morphology_similarity = 1 - abs(us_area - na_area) / max(us_area, na_area)
morphology_similarities.append(morphology_similarity)
# 综合三种特征计算相似度
similarities = []
for i in range(84):
color_similarity = color_similarities[i]
lbp_similarity = lbp_similarities[i]
morphology_similarity = morphology_similarities[i]
similarity = (color_similarity + lbp_similarity + morphology_similarity) / 3
similarities.append(similarity)
# 输出相似度结果
for i in range(84):
print('Image {}: similarity = {:.4f}'.format(i+1, similarities[i]))
```
这段代码首先定义了三个特征比较函数:`compare_color_histogram()`用于比较颜色直方图;`get_lbp_feature()`用于提取LBP特征;`get_morphology_feature()`用于提取形态学特征。然后,使用`cv2.imread()`函数加载超声图像和自然图像,并依次计算它们的颜色、LBP、形态学特征的相似度。最后,将三种特征的相似度综合起来,得到最终的相似度结果。
注意,由于颜色直方图、LBP直方图和形态学特征的取值范围不同,因此需要对它们进行归一化处理,使它们的取值范围都在0到1之间。在代码中,我们采用了`cv2.normalize()`函数对特征图进行归一化处理。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)