智能识别系统---基于颜色直方图的相似目标查找(图像去噪,MeanShift匹配目标)

该博客介绍了如何基于颜色直方图进行相似目标查找,主要涉及图像去噪、MeanShift匹配目标等步骤。首先,将图像转换到HSV颜色空间并计算颜色直方图,接着通过计算概率图像和去噪来提取高饱和度区域。然后,应用MeanShift算法在概率图像上找到目标位置,实现目标跟踪。最后,提供了相关的Python代码示例。


(原地TP)
不清除什么是颜色直方图和反向投影的同学可以先看这一篇

简介

基于颜色直方图的相似目标查找的主要流程为

  • 将图像的颜色空间由BGR转为HSV
  • 获取HSV颜色空间中关于色调的颜色直方图(或者提取h,s双通道,计算二维颜色直方图
  • 计算得到颜色概率图
  • 去除噪声(取高饱和度图像作为模板,去掉低饱和度的地方(可以理解为是比较暗的地方))
  • MeanShift匹配目标(取密度高的部位)

计算概率图像

# 对图像 读取,显示以及各种操作
import cv2  as cv
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import warnings
warnings.filterwarnings('ignore')

导入原图,分别为目标图像(target)感兴趣区域图像(roi)
分别提取它们的hs通道,并分别计算它们的二维颜色直方图

# 源图片
target=cv.imread('image/baboon1.jpg')
hsvt=cv.cvtColor(target,cv.COLOR_BGR2HSV)
# 感兴趣区域
roi=cv.imread('image/baboon_face.jpg')
hsv=cv.cvtColor(roi,cv.COLOR_BGR2HSV)
# 提取了h,s两个通道,绘制二维直方图
## roi区域
M=cv.calcHist([hsv],[0,1],None,[180,256],[0,180,0,256])
## target区域
I=cv.calcHist([hsvt],[0,1],None,[180,256],[0,180,0,256])

# 打印原图片
plt.figure(figsize=[10,8])
plt.subplot(1,2,1)
plt.imshow(cv.cvtColor(target,cv.COLOR_BGR2RGB))
plt.title('target image')

plt.subplot(1,2,2)
plt.imshow(cv.cvtColor(roi,cv.COLOR_BGR2RGB))
plt.title('roi image')

plt.show()

在这里插入图片描述
经过计算之后我们得到了两个二维直方图

  • M(180x256roi
  • I(180x256target
    接着我们计算两者的比率R

h和s是target图像的h通道和s通道(为二维矩阵),将其展开之后
意味着对于原图片中每一个位置 a   i , j a_{\ i,j} a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值