颜色迁移-EM概率分割的局部颜色迁移

文章: Local Color Transfer via Probabilistic Segmentation by Expectation-Maximization,[paper][code(未公开)]

本文目的为: 图像局部颜色迁移.

1-符号说明

在进行本文算法原理说明之前, 先对一些英文缩写进行简单说明:

  1. EM: Expectation-Maximization, 期望最大化, 是一种非监督期望最大化算法, 结合了极大似然和迭代求解的方法去预估数据的分布, 详见: 期望最大化(Expectation Maximization)算法介绍_Y学习使我快乐V的博客-CSDN博客_expectation maximization, EM(Expectation-Maximization)算法(通俗易懂) - 知乎 (zhihu.com), 最大期望算法(Expectation-Maximization algorithm,EM) - 八九十度 - 博客园 (cnblogs.com)
  2. GMM: Gaussian Mixture Model, 高斯混合模型, 混合高斯模型, 使用多个高斯分布来拟合数据分布, 详见: 一文详解高斯混合模型原理 - 知乎 (zhihu.com), 详解EM算法与混合高斯模型(Gaussian mixture model, GMM)_林立民爱洗澡的博客-CSDN博客_gmm

2-算法原理

简单来说, 本文对图像进行颜色分割, 对分割后区域单独进行颜色迁移, 对各区域迁移后的图像进行加权平均得到最后图像, 具体:

  1. 使用调整后的EM算法进行颜色分割
  2. 寻找每个区域的映射关系
  3. 对每个区域单独进行颜色迁移
  4. 将迁移后的图像进行加权平均得到最后的迁移图像

3-算法核心

为了利用局部信息, 本文利用GMM来描述图像颜色分布, 并使用EM进行概率分割, 因而EM算法对图像进行颜色分割是关键. 本文对EM进行了调整, 主要有2个方面: 一是期望计算, 二是对概率滤波.

3.1-E-step

E-step是计算每个像素属于每个区域的概率(将图像分为N区域), 原始计算期望及均值方差的方法如下,



与原始计算方式不一样, 更改后的计算方式为: 使用前一次滤波后的结果与当前结果进行加权, 如下所示:

文中对于这样做的解释是:

  • 如果前一次滤波后的结果与当前结果具有相似的分布, 则相邻像素极有可能具有相似的颜色值, 这表明该像素不位于任何区域边界上, 因此, 加法操作增加了像素属于某些占主导地位的高斯分量的概率
  • 如果具有不同的概率分布, 则像素可能处于区域的边界处, 加法运算使这些分布平均, 因此这个像素将有相似的概率同时适合几个高斯分量

3.2-概率滤波

本文在进行GMM分割时, 仅考虑了颜色信息, 没有使用空位位置信息. 对于相邻像素, 如果它们有相似的颜色, 他们的高斯分布也应该相似, 即概率也是要相似的.

因而为了增加空间相关信息, 使用了空间滤波方法对概率进行滤波处理. 本文使用的是调整后的双边滤波, 如下所示:



可以看到, 文中使用的滤波方式是: 在图像上计算双边滤波权重, 然后对概率进行加权平均. 作者没有解释为什么这样做, 为什么不直接在概率上计算权重.

我的理解是:

  • 计算出来的期望图(每个像素属于每个区域的概率)是一个软的边界, 图像中的细节边缘可能已经没有那么明显了, 如果直接对概率进行滤波, 就不能很好的保护边缘信息
  • 一般图像中的区域会>>图像的颜色通道数, 这样期望图的通道数也会>>图像的颜色通道数, 这样对期望图(概率)进行滤波会比图像进行滤波难
  • 还有一点, 我认为比较重要的是: 期望图是迭代生成的, 每次迭代都需要重新计算, 而对原始图像进行滤波处理, 只需要计算一次即可, 可以节省算法耗时

滤波对结果的影响还是很大的, 滤波窗口不能太大也不能太小, 文中做实验进行了验证, 如下所示, 最后设置为7.

图中N为滤波窗口大小, 如果超过目标大小, 目标没有被检测出来, 最后颜色迁移不成功; 如果串口大小小于目标大小, 对目标边缘有影响, 颜色迁移后图像边缘颜色存在异常.

4-算法效果

如下所示为文中给出的一组结果:

图(b)-(d)为概率分割结果, (e)为直方图均衡结果, (f)为全局颜色迁移结果, (g)为本文局部迁移结果

下图为另一组结果:

图( c)为本文结果, (d)为全局颜色迁移结果, (e)为直方图均衡结果

5-补充说明

关于本文算法, 还有一些需要补充的说明:

  1. 本文算法是在Lab颜色空间进行处理的
  2. 在进行GMM-EM概率分割时, 使用Kmeans进行的初始化, 这个就对初始点的设置有一定的要求, 如果使用随机初始化, 可能每次结果还不一致
  3. 分割过程中, 会对比较接近的高斯模型(均值距离<阈值)进行合并, 并重新计算参数, 但没有详细说明这个阈值参数的设置
  4. 分割成颜色块之后, 颜色块之间的对应关系没有详细说明, 仅说明了2个规则, 对于图像分割后的颜色块数量不一致时(如合并完成后, target图像的颜色块>>source图像的颜色块), 如何处理映射关系文章中也没有介绍

    - 亮度空间(L通道)最接近

    - 保持单调性
  5. 文中对每个颜色块计算映射, 最后对所有映射迁移后的图像使用概率图进行加权平均融合

  1. 文中使用的算法, Kmeans, GMM-EM, bilateral filter都是比较耗时, 因而处理比较大的图像时是非常耗时, 文中也给出自己的耗时测试: Pentium-M 1.4GHz laptop computer, 512*512, 20 Gaussians initially, 耗时4分钟!!! 这结果...

另外本文使用的都是很成熟的算法, 没有太大的改动, 方便实现, 但有些地方感觉没有写清楚(可能是没有看懂, 特别是颜色块处理), 同时也没有给出测试图像, 因而也不方便复现. 下面是使用matlab自带的kmeans和GMM相关函数实现的分割, 后面的颜色迁移没有进行复现.

原始图像是使用搜图, 找到的比较类似的图像. 原始图像地址



原图



Kmeans结果



GMM结果

最后, 关于GMM的matlab实现, 可以参考: MATLAB中“fitgmdist”的用法及其GMM聚类算法 - 凯鲁嘎吉 - 博客园 (cnblogs.com)

[论文阅读] 颜色迁移-EM概率分割的局部颜色迁移的更多相关文章

  1. 深度学*点云语义分割:CVPR2019论文阅读

    深度学*点云语义分割:CVPR2019论文阅读 Point Cloud Oversegmentation with Graph-Structured Deep Metric Learning 摘要 本 ...

  2. 论文阅读:Review of Visual Saliency Detection with Comprehensive Information

    这篇文章目前发表在arxiv,日期:20180309. 这是一篇针对多种综合性信息的视觉显著性检测的综述文章. 注:有些名词直接贴原文,是因为不翻译更容易理解.也不会逐字逐句都翻译,重要的肯定不会错过 ...

  3. 论文阅读笔记六:FCN:Fully Convolutional Networks for Semantic Segmentation(CVPR2015)

    今天来看一看一个比较经典的语义分割网络,那就是FCN,全称如题,原英文论文网址:https://people.eecs.berkeley.edu/~jonlong/long_shelhamer_fcn ...

  4. 论文阅读之Joint cell segmentation and tracking using cell proposals

    论文提出了一种联合细胞分割和跟踪方法,利用细胞segmentation proposals创建有向无环图,然后在该图中迭代地找到最短路径,为单个细胞提供分割,跟踪和事件. 3. PROPOSAL GE ...

  5. BERT 论文阅读笔记

    BERT 论文阅读 BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 由 @快刀切草莓君 ...

  6. Action4D:人群和杂物中的在线动作识别:CVPR209论文阅读

    Action4D:人群和杂物中的在线动作识别:CVPR209论文阅读 Action4D: Online Action Recognition in the Crowd and Clutter 论文链接 ...

  7. Deep Reinforcement Learning for Dialogue Generation 论文阅读

    本文来自李纪为博士的论文 Deep Reinforcement Learning for Dialogue Generation. 1,概述 当前在闲聊机器人中的主要技术框架都是seq2seq模型.但 ...

  8. 论文阅读:Prominent Object Detection and Recognition: A Saliency-based Pipeline

    论文阅读:Prominent Object Detection and Recognition: A Saliency-based Pipeline  如上图所示,本文旨在解决一个问题:给定一张图像, ...

  9. 【医学图像】3D Deep Leaky Noisy-or Network 论文阅读(转)

    文章来源:https://blog.csdn.net/u013058162/article/details/80470426 3D Deep Leaky Noisy-or Network 论文阅读 原 ...

  10. 论文阅读 | FCOS: Fully Convolutional One-Stage Object Detection

    论文阅读——FCOS: Fully Convolutional One-Stage Object Detection 概述 目前anchor-free大热,从DenseBoxes到CornerNet. ...

随机推荐

  1. Hint 使用--leading

    Oracle hint -- leading 的作用是提示优化器某张表先访问,可以指定一张或多张表,当指定多张表时,表示按指定的顺序访问这几张表.而 Postgresql leading hint的功 ...

  2. git hooks在业务中的使用

    起因 最近公司项目发生了一起线上事故,最后排查下来是配置文件的问题.项目里application.yml文件内会用@build.time@记录打包时的时间,但是这个写法是build-helper-ma ...

  3. 最强cron解析器

    背景 大家有没有这么一种困境 我现在需要去配置一个定时任务:"每天早上九点执行任务" 若你有一个好的定时任务平台,相信很容易就能配置完成.那若是没有定时任务平台呢?是不是就要自己写 ...

  4. Dockerfile文件:设置变量启动的时候传递进去

    from openjdk:8-jdk-alpine RUN ln -sf /usr/share/zoneinfo/Asia/shanghai /etc/localtime RUN echo 'Asia ...

  5. CentOS7使用tar方式安装Containerd,配置文件介绍

    主机:centos 7.9 下载 官网GitHub上下载地址:https://github.com/containerd/containerd/releases 问题: 创建容器后,运行的时候报错: ...

  6. 部署一个生产级别的 Kubernetes 应用(以Wordpress为例)

    文章转载自:https://mp.weixin.qq.com/s?__biz=MzU4MjQ0MTU4Ng==&mid=2247487811&idx=1&sn=67b39b73 ...

  7. Linux yum安装PostgreSQL9.6

    PostgreSQL10版本的主从安装配置在 https://www.cnblogs.com/virtulreal/p/11675841.html 一.下载安装 1.创建PostgreSQL9.6的y ...

  8. centos7使用yum方式安装redis6

    yum -y install epel-release wget make gcc-c++ cd /opt wget https://download.redis.io/releases/redis- ...

  9. 1.nexus的安装

    1,Nexus 介绍 Nexus是什么 Nexus 是一个强大的maven仓库管理器,它极大地简化了本地内部仓库的维护和外部仓库的访问. 不仅如此,他还可以用来创建yum.pypi.npm.docke ...

  10. python_flask开发环境设置

    flask开发环境设置,在powershell终端窗口,可以通过一下方式设置: # 设置当前app实例 $env:FLASK_APP="app:create_app()" #将当前 ...