python 读取两个文件夹中的图像并进行性质差异分析,一个文件路径是D:\zzz\us2,另一个文件路径是D:\zzz\na2,不用greycomatrix和greycoprops,使用opencv,两种图像的文件类型都是jpg,两种图像都有84张,图片形状都不同,图像名称是随机的,需要将图像归一化,需要对比两种图像的特征必须有颜色,纹理,形状,差异性分析方法也需要多种,包括完整详细最新的代码
时间: 2023-10-03 10:02:18 浏览: 221
以下是读取两个文件夹中图像并进行性质差异分析的Python代码,使用了OpenCV库和scikit-image库。
```python
import cv2
from skimage import feature
import numpy as np
import os
# 定义函数,提取图像的颜色、纹理和形状特征
def extract_features(image):
# 提取颜色特征,计算每个通道的平均值和标准差
mean, std = cv2.meanStdDev(image)
mean = np.transpose(mean)
std = np.transpose(std)
color_features = np.concatenate((mean, std), axis=1).flatten()
# 提取纹理特征,计算LBP特征直方图
lbp = feature.local_binary_pattern(cv2.cvtColor(image, cv2.COLOR_BGR2GRAY), 8, 1)
(hist, _) = np.histogram(lbp.ravel(), bins=np.arange(0, 11), range=(0, 10))
hist = hist.astype("float")
hist /= (hist.sum() + 1e-7)
texture_features = hist.flatten()
# 提取形状特征,计算Hu矩
moments = cv2.moments(cv2.cvtColor(image, cv2.COLOR_BGR2GRAY))
hu_moments = cv2.HuMoments(moments).flatten()
shape_features = hu_moments
return np.concatenate((color_features, texture_features, shape_features))
# 定义函数,归一化图像
def normalize_image(image):
return cv2.normalize(image, None, 0, 255, cv2.NORM_MINMAX)
# 定义函数,读取文件夹中的图像并提取特征
def read_images(folder):
features = []
for filename in os.listdir(folder):
if filename.endswith(".jpg"):
image_path = os.path.join(folder, filename)
image = cv2.imread(image_path)
image = normalize_image(image)
feature_vector = extract_features(image)
features.append(feature_vector)
return np.array(features)
# 读取两个文件夹中的图像并提取特征
us2_features = read_images("D:/zzz/us2")
na2_features = read_images("D:/zzz/na2")
# 计算两种图像的特征差异性
color_diff = np.abs(np.mean(us2_features[:, :6], axis=0) - np.mean(na2_features[:, :6], axis=0))
texture_diff = np.abs(np.mean(us2_features[:, 6:16], axis=0) - np.mean(na2_features[:, 6:16], axis=0))
shape_diff = np.abs(np.mean(us2_features[:, 16:], axis=0) - np.mean(na2_features[:, 16:], axis=0))
# 输出特征差异性
print("Color difference:", color_diff)
print("Texture difference:", texture_diff)
print("Shape difference:", shape_diff)
```
该代码首先定义了三个函数,分别用于提取颜色、纹理和形状特征。其中,颜色特征包括每个通道的平均值和标准差,纹理特征采用LBP特征直方图,形状特征采用Hu矩。然后,定义了一个归一化图像的函数,将图像的像素值归一化到0-255之间。最后,定义了一个读取文件夹中图像并提取特征的函数,该函数返回一个特征向量矩阵。使用这个函数读取两个文件夹中的图像并提取特征,得到两个特征矩阵。最后,计算两种图像的特征差异性,分别输出颜色、纹理和形状特征的差异性。
阅读全文