【图像处理】均值漂移(mean shift)及深度学习超分辨代码中的mean shift

2024-02-25 06:50

本文主要是介绍【图像处理】均值漂移(mean shift)及深度学习超分辨代码中的mean shift,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

均值漂移(mean shift)

均值漂移是一种聚类算法,常用于特征点聚类、图像分割、对象轮廓检验、目标跟踪等。这里简单直观介绍一下这个算法大概是怎么回事。

基本概念

基本概念可以看下面这个图。左面是一堆像素点特征的分布(其实也不用管他是啥,只要当成一堆点就好了),我们可以看到这堆点有的地方密集,有的地方稀疏。把点的密度分布可视化之后就是右边这个图,大概可以理解为点的密度函数三维可视化。这样就可以看到,会存在几个极值点,也就是红色的点。
好,看到这里你其实就已经理解这个算法的一大半了。
这个算法的操作直观来讲就是,你每拿出一个点来,就把它移动到离它最近的一个极值点。(如图白色点所示,白色点是初始位置,这个点最终应该移动到右上角最高的那个红色点)。
也就是在图中任意一个点,它的类别与密度函数中离它最近的一个极大值点相同。
在这里插入图片描述
做完的结果大概是这样:
在这里插入图片描述

操作过程

讲完基本概念,我们来看如何找到某个点离拿个极大值点最近。操作过程就解释了为什么这个算法叫均值漂移。

  1. 首先找到一个你要聚类的点,如图红色点所示,我们称作sample pixel。
  2. 接着你需要一个window width,也就是你需要一个范围值,这个值就是这个算法很重要的一个参数。找到width范围内的所有点,如图蓝色圈所示。
  3. 接着计算出圈内所有点的均值。均值计算方法可以是直接平均,也可以是加权平均(这个不影响理解)。均值点如图绿色点所示。
  4. 接着将sample pixel移到绿色点,作为新的sample pixel点,
    在这里插入图片描述
  5. 接着以新的点为起始点,重复上述操作,直到sample pixel点和均值点重合或者距离小于某个值,就停止操作,认为这个点归属到了它应该属于的类别。在这里插入图片描述

这是英文版的算法过程,和我讲的意思大概差不多,感兴趣的朋友可以看看。
在这里插入图片描述

均值漂移用于图像分割

对于均值漂移,我们需要给定w,也就是上面讲的蓝色圈圈的范围。
在这里插入图片描述

参考视频

图片来源于这个视频,讲的很不错。感兴趣的朋友可以去看看。https://www.youtube.com/watch?v=PCNz_zttmtA

深度学习超分辨代码中的mean shift

最近在看RCAN的代码,结果点开就懵逼了,里面来了一个meanshift,了解完meanshift感觉它代码干的也不是这事情啊…
RCAN这部分代码大概长这样。

class MeanShift(nn.Conv2d):def __init__(self, rgb_range, rgb_mean, rgb_std, sign=-1):super(MeanShift, self).__init__(3, 3, kernel_size=1)std = torch.Tensor(rgb_std)self.weight.data = torch.eye(3).view(3, 3, 1, 1) # 第一维为输出通道,第二维为输入通道self.weight.data.div_(std.view(3, 1, 1, 1)) # torch.eye(3).view(3, 3, 1, 1) / std.view(3, 1, 1, 1)self.bias.data = sign * rgb_range * torch.Tensor(rgb_mean)self.bias.data.div_(std) # sign * rgb_range * torch.Tensor(rgb_mean) / std# (w*x+b)/stdself.requires_grad = False
# parameter of DIV2K
rgb_mean = (0.4488, 0.4371, 0.4040)
rgb_std = (1.0, 1.0, 1.0)
sub_mean = MeanShift(255, rgb_mean, rgb_std)
add_mean = MeanShift(255, rgb_mean, rgb_std, sign=1)

解释

这个其实是一个图像预处理过程。这个过程是将数据集中的每个样本都减去数据集的均值。(训练集,测试集肯定不能混进来算)

原因: 我们默认自然图像是一类平稳的数据分布(即数据每一维的统计都服从相同分布),在每个样本上减去数据的统计平均值可以凸显出个体差异。

参考博客: https://www.pythonf.cn/read/149532

指导老师

徐放、周鹏程、肖彦洋
对生物医学图像感兴趣的朋友欢迎了解 中国科学院深圳先进技术研究院脑信息中心。
实验室主页: http://icbi.siat.ac.cn/xu-lab/

这篇关于【图像处理】均值漂移(mean shift)及深度学习超分辨代码中的mean shift的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/744695

相关文章

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

Java中Map.Entry()含义及方法使用代码

《Java中Map.Entry()含义及方法使用代码》:本文主要介绍Java中Map.Entry()含义及方法使用的相关资料,Map.Entry是Java中Map的静态内部接口,用于表示键值对,其... 目录前言 Map.Entry作用核心方法常见使用场景1. 遍历 Map 的所有键值对2. 直接修改 Ma

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

深入解析 Java Future 类及代码示例

《深入解析JavaFuture类及代码示例》JavaFuture是java.util.concurrent包中用于表示异步计算结果的核心接口,下面给大家介绍JavaFuture类及实例代码,感兴... 目录一、Future 类概述二、核心工作机制代码示例执行流程2. 状态机模型3. 核心方法解析行为总结:三

python获取cmd环境变量值的实现代码

《python获取cmd环境变量值的实现代码》:本文主要介绍在Python中获取命令行(cmd)环境变量的值,可以使用标准库中的os模块,需要的朋友可以参考下... 前言全局说明在执行py过程中,总要使用到系统环境变量一、说明1.1 环境:Windows 11 家庭版 24H2 26100.4061

Python中文件读取操作漏洞深度解析与防护指南

《Python中文件读取操作漏洞深度解析与防护指南》在Web应用开发中,文件操作是最基础也最危险的功能之一,这篇文章将全面剖析Python环境中常见的文件读取漏洞类型,成因及防护方案,感兴趣的小伙伴可... 目录引言一、静态资源处理中的路径穿越漏洞1.1 典型漏洞场景1.2 os.path.join()的陷

pandas实现数据concat拼接的示例代码

《pandas实现数据concat拼接的示例代码》pandas.concat用于合并DataFrame或Series,本文主要介绍了pandas实现数据concat拼接的示例代码,具有一定的参考价值,... 目录语法示例:使用pandas.concat合并数据默认的concat:参数axis=0,join=

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

C#代码实现解析WTGPS和BD数据

《C#代码实现解析WTGPS和BD数据》在现代的导航与定位应用中,准确解析GPS和北斗(BD)等卫星定位数据至关重要,本文将使用C#语言实现解析WTGPS和BD数据,需要的可以了解下... 目录一、代码结构概览1. 核心解析方法2. 位置信息解析3. 经纬度转换方法4. 日期和时间戳解析5. 辅助方法二、L

Python使用Code2flow将代码转化为流程图的操作教程

《Python使用Code2flow将代码转化为流程图的操作教程》Code2flow是一款开源工具,能够将代码自动转换为流程图,该工具对于代码审查、调试和理解大型代码库非常有用,在这篇博客中,我们将深... 目录引言1nVflRA、为什么选择 Code2flow?2、安装 Code2flow3、基本功能演示