首页 > 其他分享 >[论文阅读] 颜色迁移-EM概率分割的局部颜色迁移

[论文阅读] 颜色迁移-EM概率分割的局部颜色迁移

时间:2022-11-17 09:12:44浏览次数:78  
标签:EM 颜色 滤波 算法 图像 迁移

颜色迁移-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
Kmeans结果
GMM
GMM结果

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

标签:EM,颜色,滤波,算法,图像,迁移
From: https://www.cnblogs.com/yfor1008/p/16864902.html

相关文章

  • Linux环境下配置vscode的C/C++ 的make编译环境(编写makefile方式)代码Demo版
    以前写过同样话题下的图文版的,这里给出一个代码Demo版本,上一个图文版本参见:​​Linux环境下配置vscode的C/C++的make编译环境(编写makefile方式)​​  ===================......
  • remote_login_passwordfile参数解析
    文档课题:remote_login_passwordfile参数解析.口令文件用于具有sysdba身份的用户执行远程登录数据库,Oracle允许用户通过口令文件验证,在数据库未启动之前登录,从而启动实例,加载......
  • Flask-SQLAlchemy
    一.介绍SQLAlchemy是一个基于Python实现的ORM框架。该框架建立在DBAPI之上,使用关系对象映射进行数据库操作,简言之便是:将类和对象转换成SQL,然后使用数据API执行SQL并获......
  • systemd启动jenkins
    新版本jenkins安装后竟然有两份启动文件,一份是/etc/init.d/jenkins,另一份是/usr/lib/systemd/system/jenkins.service,使用systemd启动jenkins的文件可以自定义下,其实......
  • CSS——NO.9(颜色值和长度值)
    */*Copyright(c)2016,烟台大学计算机与控制工程学院*Allrightsreserved.*文件名:text.cpp*作者:常轩*微信公众号:Worldhello*完成日期:2016年8月11日*版本号:V1......
  • qemu1
    qemu当发现有一个题目是qemu框架后一般有两种解法一个是通过不停动调得出输入流的数据变化另外一个找到qemu执行的框架下的代码,下面举两个题目复现进行一些总结MTCTF2......
  • memory hotplug
    memory_subsys_onlinememory_block_change_statememory_block_actionMEM_ONLINE:online_pagesmove_......
  • 基于 Bi-LSTM 和迁移学习的多元汇率预测研究学习记录
    博主初步打算使用Keras框架来实现LSTM网络,现阅读了相关论文并记录了实现流程,以供参考学习。下面是相关论文介绍:基于Bi-LSTM和迁移学习的多元汇率预测研究Bi-LSTM模型双......
  • 升级vs或者装了.Net 7.0后, 工程框架用 net6 的 dotnet watch 出错 Could not load fi
    升级vs或者装了.Net7.0后,工程框架用net6的dotnetwatch出错'Unhandledexception.System.IO.FileNotFoundException:Couldnotloadfileorassembly'System.R......
  • Rename a Local and Remote Git Branch
    RenamingGitBranchFollowthestepsbelowtorenameaLocalandRemoteGitBranch:01Startbyswitchingtothelocalbranchwhichyouwanttorename:gitch......