图像均值漂移

图像均值漂移

概述

✔️ MeanShfit 均值漂移算法是一种通用的聚类算法,通常可以实现彩色图像分割。

基本原理

✔️ 对于给定的一定数量样本,任选其中一个样本,以该样本为中心点划定一个圆形区域,求取该圆形区域内样本的质心,即密度最大处的点,再以该点为中心继续执行上述迭代过程,直至最终收敛。

彩色图像分割

✔️ 均值迁移可以不断分割找到空间颜色分布的峰值,然后根据峰值进行相似度合并,解决过度分割问题,得到最终的分割图像,对于图像多维度数据颜色值(RGB)与空间位置(x,y),所以需要两个窗口半径,一个是空间半径、另外一个是颜色半径,经过均值漂移窗口的所有的像素点会具有相同的像素值。

严格来说并不是图像的分割,而是图像在色彩层面的平滑滤波,它可以中和色彩分布相近的颜色,平滑色彩细节,侵蚀掉面积较小的颜色区域。

函数

dst = cv.pyrMeanShiftFiltering(src, sp, sr, maxLevel, termcrit)

其中:

  • src --> 输入图像;
  • dst --> 输出结果;
  • sp --> 表示空间窗口大小;
  • sr --> 表示表示颜色空间;
  • maxLevel --> 表示金字塔层数,总层数为maxlevel+1;
  • termcrit --> 表示停止条件;

代码示例1

import cv2 as cv
import numpy as np

src = cv.imread("master.jpg")
dst = cv.pyrMeanShiftFiltering(src, 25, 40, None, 2)
cv.imshow("result", np.hstack((src,dst)))

结果:

示例代码2

#%% meanshift分割
import cv2
import numpy as np
import matplotlib.pyplot as plt

img = cv2.imread('building.jpg')

# kernel = np.ones((3,3),np.uint8)
# opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)

sp = 5
sr = 25
meanshift = cv2.pyrMeanShiftFiltering(img, sp, sr)
plt.figure(figsize=(20,18),dpi=80)
plt.subplot(121)
plt.imshow(img[:,:,::-1])
plt.subplot(122)
plt.imshow(meanshift[:,:,::-1])

结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陨星落云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值