基于内容的图像检索——提取颜色、形状、纹理三种特征方式实现(附Python实现代码)

一、先附上图像检索效果

在这里插入图片描述

二、基于内容的图像检索架构

图像检索的基本架构
在这里插入图片描述

三、数据集

图像库为Corel-1000数据集包含有非洲人、海滩、建筑物、大巴车、恐龙、大象、花朵、马、风景、美食10种不同的类别1000张图像。数据库示例:
在这里插入图片描述

四、图像特征提取

(一)颜色特征—颜色矩

颜色矩是基于数学的一种描述颜色分布的方法,通过计算不同颜色矩来描述图像中颜色的分布情况(具体颜色矩的理论基础自行学习)。颜色矩实现代码:

import cv2
import numpy as np

# 颜色矩
def colorMoments(img_path):
    img = cv2.imread(img_path)
    if img is None:
        return
    hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
    h, s, v = cv2.split(hsv)
    color_feature = []
    h_mean = np.mean(h)  
    s_mean = np.mean(s)  
    v_mean = np.mean(v)  
    color_feature.extend([h_mean, s_mean, v_mean])
    h_std = np.std(h) 
    s_std = np.std(s) 
    v_std = np.std(v) 
    color_feature.extend([h_std, s_std, v_std])
    h_skewness = np.mean(abs(h - h.mean()) ** 3)
    s_skewness = np.mean(abs(s - s.mean()) ** 3)
    v_skewness = np.mean(abs(v - v.mean()) ** 3)
    h_thirdMoment = h_skewness ** (1. / 3)
    s_thirdMoment = s_skewness ** (1. / 3)
    v_thirdMoment = v_skewness ** (1. / 3)
    color_feature.extend([h_thirdMoment, s_thirdMoment, v_thirdMoment])
    return color_feature

(二)形状特征—Hu不变矩

Hu不变矩其基本原理是利用灰度图像的各阶矩来分析图像的灰度分布特性。该方法具有旋转、缩放和平移不变性的特点,能够有效地表示图像的形状信息(具体Hu不变矩的理论基础自行学习)。Hu不变矩实现代码:

import cv2
import numpy as np

# hu不变矩
def huMoments(img_path):
    img = cv2.imread(img_path)
    img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    moments = cv2.moments(img_gray)
    humoments = cv2.HuMoments(moments)
    humoments = -(np.log(np.abs(humoments))) / np.log(10)
    feature = []
    for i in humoments:
        feature.append(i[0])
    return feature

(三)纹理特征—灰色共生矩阵

灰度共生矩阵(GLCM),是利用图像内部不同空间位置的灰度分布情况来表示图像的纹理信息,共包含14种不同的纹理特征,其中包括能量、熵、对比度、方差和逆方差等(具体灰色共生矩阵的理论基础自行学习)。灰色共生矩阵实现代码:

# 代码中仅采用能量、熵、对比度和逆方差4种纹理特征表示图像纹理信息。
import cv2
import math

# 定义最大灰度级数
gray_level = 64

def maxGrayLevel(img):
    max_gray_level = 0
    (height, width) = img.shape
    # print(height, width)
    for y in range(height):
        
  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值