基于opencv的图像纹理提取 颜色特征检测 快速灰度共现矩阵(GLCM)、LBP特征提取、颜色矩提取、颜色直方计算
Python实现提取图像的纹理、颜色特征包含快速灰度共现矩阵GLCM、LBP特征、颜色矩、颜色直方图。Python实现提取图像的纹理、颜色特征在图像处理和计算机视觉领域特征提取是理解图像内容的关键步骤。本文将详细介绍如何使用Python实现从图像中提取纹理和颜色特征包括快速灰度共现矩阵GLCM、局部二值模式LBP特征、颜色矩以及颜色直方图。一、原始图片展示首先我们需要加载并显示一张用于特征提取的原始图片。这里我们使用skimage库中的内置图像作为示例fromskimageimportdataimportmatplotlib.pyplotasplt imgdata.camera()# 加载内置的相机图像plt.imshow(img,cmapgray)plt.title(Original Image)plt.show()二、纹理特征提取1. 快速灰度共生矩阵GLCMGLCM是一种经典的纹理分析方法通过计算不同像素之间的空间关系来描述图像的纹理特性。下面是如何使用fast_glcm库来高效地计算GLCM均值importfast_glcmfromskimageimportdataif__name____main__:imgdata.camera()glcm_meanfast_glcm.fast_glcm_mean(img)plt.imshow(glcm_mean,cmapgray)plt.title(GLCM Mean)plt.show()这个脚本展示了如何在没有每个像素for循环的情况下计算GLCM并且其效率高于scikit-image上的GLCM实现。2. 局部二值模式LBPLBP是一种有效的纹理描述符广泛应用于人脸识别等领域。以下是获取LBP特征的方法原始LBP模式直接根据邻域像素与中心像素的比较结果生成。等价LBP模式减少模式数量以简化表示。旋转不变LBP模式使得特征对旋转具有不变性。等价旋转不变LBP模式结合了上述两种特性。主要文件get_LBP_from_Image.py用于获取图像的LBP特征。辅助文件如get_resolve_map.py和get_uniform_map.py帮助理解算法降维后新的像素值如何得到并已将求出的结果写入主文件中。# 示例代码片段fromskimage.featureimportlocal_binary_patternimportnumpyasnpdefget_lbp(image,P8,R1):lbplocal_binary_pattern(image,P,R,methoduniform)returnlbp lbp_imageget_lbp(img)plt.imshow(lbp_image,cmapgray)plt.title(LBP Feature Map)plt.show()三、颜色特征提取1. 颜色矩颜色矩是一种简单而有效的颜色特征表示方法包含一阶矩均值、二阶矩方差和三阶矩斜度。这些统计量足以表达图像的颜色分布。defcolor_moments(image):channelscv2.split(image)features[]forchannelinchannels:meannp.mean(channel)stdnp.std(channel)skewnessnp.mean(((channel-mean)/(std1e-7))**3)features.extend([mean,std,skewness])returnfeatures color_featurescolor_moments(cv2.cvtColor(img,cv2.COLOR_GRAY2BGR))print(Color Moments:,color_features)颜色矩的优点在于不需要颜色空间量化特征向量维数低但检索效率较低通常用于过滤图像以缩小检索范围。2. 颜色直方图颜色直方图是一种常见的颜色特征提取方法它记录了每种颜色在图像中出现的频率。可以通过以下方式计算importcv2defcolor_histogram(image,bins[8,8,8]):histcv2.calcHist([image],[0,1,2],None,bins,[0,256,0,256,0,256])cv2.normalize(hist,hist)returnhist.flatten()histogramcolor_histogram(cv2.cvtColor(img,cv2.COLOR_GRAY2BGR))print(Color Histogram:,histogram)四、总结本文详细介绍了如何使用Python从图像中提取纹理和颜色特征具体包括使用fast_glcm库高效计算灰度共生矩阵GLCM这是一种强大的纹理描述工具。通过局部二值模式LBP捕捉图像的纹理信息适用于多种应用场景尤其是人脸检测。利用颜色矩提供一种低维、无需颜色空间量化的颜色特征表示方法尽管其检索效率相对较低。采用颜色直方图记录颜色在图像中的分布情况为图像分类和检索提供了基础。这些技术不仅有助于深入理解图像的内容也为后续的图像处理任务如分类、检索等提供了强有力的支持。无论是研究还是实际应用中掌握这些特征提取方法都是非常有价值的。未来的工作可以考虑将这些特征与其他机器学习或深度学习模型结合进一步提升图像分析的效果。