在之前的博客中,我们已经介绍过高斯混合模型(GMM)的一些基础知识,链接:

Gaussian Mixture Model:混合高斯模型介绍_程序猿老甘的博客-CSDN博客

在该博客中,我们提到了贾佳亚老师团队利用GMM实现颜色迁移的一个工作[1]。后来我详细的学习了该工作,发现还是有很多细节是值得深入研究的。因此,我在学习该工作的基础上,决定撰写这篇博客,分享一些学习心得,以帮助那些希望学习GMM模型的同学深入理解其算法机制。

1. 简介

我们在之前的博客中已经介绍过了一些主流的图像颜色迁移方法。这些方法一般通过计算全局颜色分布对应或者语义分析对应,来构建颜色迁移策略。这带来了一个问题,就是对图像建立一个统一的颜色迁移策略,会降低颜色映射的灵活性,使得结果图缺少色彩的对比度,不能突出一些特定的区域。一个简单的解决方案是首先把图像分成不同的色块或者基于颜色分类的不同区域,然后针对这些区域来建立不同的颜色映射方案。基于GMM模型的图像颜色迁移方法,就是通过GMM来实现图像分割,然后基于分割结果,建立分区域的颜色迁移方案,获得更好的结果。下面,我们来具体介绍下该方法的实现细节。

2. 基于GMM的图像分割

这里的GMM模型是通过期望最大算法(EM)来实现的。简单来说,EM算法就是通过一种迭代计算的方式,将数据按照某一种概率分布的规则,计算出满足要求的最大期望结果。对于图像分割这个具体应用来说,就是建立一种对图像像素的基于概率的分类,使得满足颜色分布的某种最大期望,以获得基于颜色信息的分割结果。

EM算法包含两个基本步骤,即E-step与M-step,分别表示为:

iPxy可以理解为像素点(x,y)属于第i类的概率,通过一个二维的高斯权重函数来计算获得。相关的参数μ和σ的计算依赖于概率 iPxy本身,使得EM实现一个迭代计算的闭环。对于初始化,文献[1] 中提到使用K-means来实现第一轮像素概率预测的赋值。

上述的EM算法只是提供了基础的迭代计算模型,但是对于退出条件以及中间的计算细节没有展开。在原方法中,整个基于EM算法实现的GMM图像分割计算策略包括4步骤; 1) 期望更新;2) 空间平滑;3) 期望最大化;4) 高斯优化。实际上步骤3的期望对大化对应的是EM算法对μ和σ的计算,与上面已经提到的公式一致。步骤 4的高斯优化用于合并一些像素信息十分解决的颜色分类区域,以防止过于细碎的分割,当||μi - μj||<δ时,合并分割i与j。最后当得带不能改变高斯分割结果或改变的量化结果小于某一个特定的极小值时,直接输出。这里我们重点介绍下步骤1和步骤2。(注意,原文的结构,作者是有调整的,有些版本首先介绍了步骤2,这里我们参考的是贾老师在个人网站上上传的版本)

2.1 期望更新

我们假设在分割区域i中,其整个区域类似于一个圆盘,那么这个圆盘的中点极可能属于区域i。如果这个区域被拉长,或者像素正好在这个区域的边缘,那么我们希望该像素对于其属于区域i的概率为非零(我理解的结果是一个极小值),这样保证了边界区域的平滑性。首先我们定义一个新的概率表示,即:

相比于之前我们介绍过的iPxy计算公式,新的概率表示增加了一项P‘,这里可以理解为考虑了上一步对概率平滑的影响。其计算过程将在2.2中介绍。如果我们用P’‘来表示上面公式的后一项,并考察P‘与P’‘的关系,我们就会发现,如果二者有相似的分布,那么对应的像素(x,y)与其邻居具有相似的颜色值,即该点应该不在边界上,从而判断出该点属于高斯分割的一个确定的类中。反之,该点处在一个边界上,使得该点属于多个高斯分割,这时就需要额外的平滑操作以进行进一步处理。2.2步详细的介绍了平滑操作的过程。

2.2 空间平滑

空间平滑定义了平滑操作的具体过程。

N为点(x,y)的邻域,如果邻域的颜色分布与对应点的颜色一致,那么对应的概率iPxy与iPx’y'应该是近似的。基于上述计算,在EM迭代过程中,考虑了像素邻域的概率分布,使得最后的分割效果具有更好的连续性。结合四个步骤,GMM模型能够最终得到一个基于颜色分布的图像分割结果。下图展示一个示例来说明GMM分割计算。

 

图1. GMM图像分割示意图。

3. 颜色迁移

这里分为两种情况,1)不具有空间对应;2)具有空间对应。

对于第一种情况,假设存在一对高斯分割,Gi与Gj,而在Lab空间的L通道,μi>=μj,那么迁移后的结果需要继承这种关系。在实际执行中,参考图的一块高斯分割映射到原图的一块高斯分割,当他们的L通道值比较接近,并且满足L通道的单调约束。

对于第二种情况,直接使用语义分析建立对应即可。

综合起来,基于高斯分割对应的颜色迁移公式如下:

这个公式在形式上类似于基于高斯分割对应的Lab颜色迁移计算,并考虑了概率分布的影响,使得最后的结果更加平滑。

4. 总结

基于GMM模型的图像分割以及颜色迁移,很好的利用了源图像内颜色分布的连续性,建立了基于颜色的图像语义连续区域。这对于获得精确的图像分割结果,以及基于分割建立局部语义一致的颜色迁移提供了有效的参考。该方法作为2005年提出的方案,我认为还是具有非常不错的参考价值,深入研究我发现其实还有很多细节可以通过目前颜色迁移领域的新的研究进展加以完善,以建立更加精确的结果。

Reference

YW. Tai, J. Jia, CK. Tang. Local color transfer via probabilistic segmentation by expectation-maximization[C]. 2005 IEEE Computer Society Conference on Computer Vision and Pattern Recognition (CVPR'05). IEEE, 2005, 1: 747-754.

基于GMM模型的图像分割与颜色迁移算法相关推荐

  1. python opencv 实现Reinhard颜色迁移算法

    https://www.cnblogs.com/likethanlove/p/6003677.html Reinhard颜色迁移算法的过程很简单,流程如下,细节部分见原文,题目为color trans ...

  2. 使用证据理论和GMM模型进行图像分割(其他博客未提到的细节记录)

    最近在看使用GMM(高斯混合分布)模型进行图像分割的文献<Interactive color image segmentation via interactive evidential labe ...

  3. Halcon例程(基于GMM模型的分类)详解 —— classify_citrus_fruits.hdev

    一.例程简介 该例程比较有代表性,属于Halcon里的分类方法之一,直接调用Halcon封装好的GMM分类器(高斯混合模型)对橘子和柠檬进行分类.GMM属于概率分类方法,属于P(Y|X),通过对样本的 ...

  4. 基于GMM模型的Waving Trees序列前景检测

    实验内容 本次实验主要通过运动python语言实现了一种基于混合高斯模型(GMM)的前景检测算法,其思想主要参考论文[4][7][8]. 本次实验使用WavingTrees[9]数据来进行实验.该数据 ...

  5. WEBRTC实现的基于GMM模型的VAD

    一.高斯混合模型(GMM) 参考链接:https://blog.csdn.net/lin_limin/article/details/81048411 1.为什么要使用混合模型?   高斯混合模型是单 ...

  6. 【图像分割】基于snake模型的图像分割matlab 源码

    一.简介 2 原理解释 二.源代码 clear all; close all; Img = imread('twocells.bmp'); % The same cell image in the p ...

  7. 基于扩散模型的文本引导图像生成算法

    ©作者 | 微风 单位 | 中山大学+IDEA研究院 研究方向 | 多模态表征学习.多模态生成 DALL·E 2 之所以能够生成十分惊艳的图像,扩散模型功不可没,相比 GAN,该模型可以生成更多样,更 ...

  8. 点云孔洞定位_基于TSDF模型的点云孔洞修复方法

    摘要 深度摄像头的点云集合一般存在黑色孔洞闪烁的现象,在识别机械臂静态目标抓取时,点云集合数据的关键位置的体素不规则出现,就会对目标中心点的识别造成无法修正的偏差.因此,引入多个点云集合累积的思想,提 ...

  9. [论文阅读] 颜色迁移-梯度保护颜色迁移

    [论文阅读] 颜色迁移-梯度保护颜色迁移 文章: [Gradient-Preserving Color Transfer], [代码未公开] 本文目的: 如题所示为梯度保护的颜色迁移方法. 1-算法原 ...

最新文章

  1. synopsys PCIE IP协议解析
  2. 记录一下增加标定评价标准的过程
  3. 图解Oracle dump 命令初步
  4. 当TFS/VSTS遇上Power BI
  5. 蒙特卡洛分析 pmp_PMP基础名词介绍 | 59. 实施定量风险分析
  6. 根据生日计算年龄 java_Java 根据出生日期获得年龄
  7. 控制器不存在CategoryController does not exist
  8. python基础教程ppt下载_python基础分享ppt
  9. function中this的指向性
  10. Trie树(字典树、前缀树) (小白整理)
  11. 谷歌跟oracle_Google vs Oracle –判决临近,Oracle的知识产权案件步履蹒跚
  12. win32项目中使用 skia渲染的一个编译问题
  13. c语言数组转换树存储结构,c语言, 一棵具有n个结点的完全二叉树以数组存储,试写一个非递归 算法实现对 该树的前序遍历。...
  14. C语言利用差分法求解泊松方程
  15. 计算机领域会议期刊,数据挖掘等计算机领域顶级会议期刊~(转)
  16. KingbaseES共享集群存储方案的选择
  17. 信号与系统(day10)补充
  18. 2020第十一届蓝桥杯国赛JAVA B组真题解析(带源码及解析)
  19. 使用Burp抓包iphone(苹果)
  20. canvas电子画板 涂鸦、橡皮擦、保存图片,图片放大缩小

热门文章

  1. vs怎么配置c语言codemac,在Mac上使用vs-code快速上手c语言学习(入门文,老鸟退散)...
  2. 设计性思考维模型及步骤(上)
  3. java导出excel表格设置行高_EasyExcel之不使用对象灵活生成Excel,并且调整行高、自动列宽与自由合并...
  4. 大学计算机基础实验实施,大学计算机基础实验实施的方案学生用.docx
  5. CSS的浮动属性,详细学习指南
  6. 华为手机linux连接网络设置ip地址,华为路由器(Huawei)默认登录IP地址是多少
  7. 牛客网 2018年全国多校算法寒假训练营练习比赛(第二场) A.吐泡泡-STL(stack)
  8. Ubuntu 16.04系统安装VS Code流程详解
  9. egret可以用php做后端吗,Egret引擎开发指南之创建项目_node.js
  10. 编程语言php加密与解密的方法