[论文阅读] LCC-NLM(局部颜色校正, 非线性mask)

文章: Local color correction using non-linear masking

1. 算法原理

如下图所示为, 算法原理框图.

image

其核心有2个步骤:

  1. 对图像进行模糊, 生成mask;
  2. 对图像进行gamma校正, 得到输出图像, 校正公式为:
image

对公式含义的解释. 如下图所示, 为不同mask情况下, 输入和输出的关系, 可以看到:

  • 当mask>128时, gamma校正幂次为 2^\frac{128-mask}{128}<1, 校正后的值会增大, 如图中绿色线条所示
  • 当mask=128时, gamma校正幂次为1, 校正不会改变大小, 如图中黄色线条所示
  • 当mask<128时, gamma校正幂次为 2^\frac{128-mask}{128}>1, 校正后的值会减小, 如图中青色线条所示
image

2. 算法关键

如上述处理过程, 算法关键有2个:

  1. 如何生成mask, 是否需要取反滤波?
  2. gamma校正公式中使用的是与128进行比较, 对于图像整体偏暗或者偏亮的图像是否有效果?

2.1 是否需要滤波

至于是否需要滤波, 文章中一句话已经说明: 滤波可以将同一输入映射成不同的输出.

A local color correction will provide a method to map one input value to many different output values, depending on the values of neighboring pixels.

文章中, 另一句话, 更明显地说明了原因: 当mask没有模糊时, 图像的对比度会降低; 反之, 当mask模糊过度时, 就会简化成简单的gamma校正.

If the mask is not blurred, then the image contrast will be excessively reduced. In comparison, if the mask is overly blurred then this algorithm reduces to simple gamma correction.

这里详细说明这句话的意思:

  • 当有滤波时, 利用了局部邻域像素的信息: 对于同一个输入, 由于邻域像素不同, mask也不相同, 从而使得输出也不相同; 对于同一邻域内不同的输入, mask相同会使得邻域内输出变化相同;
  • 当没有滤波时, 没有利用局部邻域像素的信息, 这里mask可以为固定值或者当前像素的取反值: mask为固定值时, 相当于滤波时窗口半径非常大(滤波后图像为一个常数), 这样相当于对图像做了一个全局的gamma校正, 效果可能不理想; mask为当前像素取反时, 邻域内每个像素的mask都不相同, 输出变化也不相同, 可能会降低图像对比度;

因而, 是需要滤波的. 如下所示, 为不同参数滤波后的效果:

image
image

如上所示, 为使用了快速均值滤波不同参数情况下的效果:

  • 滤波半径为0时, 相当于没有滤波, mask为输入取反; 从图中可以看到, 图像中的草皮细节被模糊, 可能就是邻域内的变化不相同导致的;
  • 滤波半径为15时, mask得到了图像大致结构; 从图中可以看到, 图像整体效果较好;
  • 滤波半径为300时, mask基本为一个常数; 从图中可以看到, 效果不是太好;

这里有个问题, 如何选取合适的滤波参数?

2.2 算法适用性

从公式1中可以看到, 当图像整体亮度<128, 或者整体亮度>128时, 效果不太好, 如下图所示.

image

为了使的算法更具一般性, 可以先对图像进行线性拉伸, 然后再进行处理, 如下图所示结果:

image
image

这里线性拉伸不一定是最好的方法, 有可能只用线性拉伸已经有足够好的效果了.

3. 算法改善

3.1 公式调整1

算法在计算mask时, 进行了取反, 在进行gamma校正时, 也是做了取反, 实际上做了重复的工作, 因而可以进行简化, 简化后的校正公式为:
O_{xy} = 255 * (\frac{I_{xy}}{255}) ^ {2 ^ {\frac{m_{xy}-127}{128}}}
更改后, 与原始算法是等效的, 更改前后结果对比如下所示.

image

可以看到, 二者完全是一样的效果.

3.2 公式调整2

结合上面说的拉伸方法, 可以直接在公式中进行更改, 更改后公式如下:
O_{xy} = 255 * (\frac{I_{xy}}{ratio}) ^ {2 ^ {\frac{m_{xy}-127}{128}}}
其中, ratio 为抛出一定比例后的最大值, 下图所示为抛出1%后的效果:

pout_ratio_cmp
test_ratio_cmp

4. 代码

原始方法:

gray = double(gray);
gray_inv = 255 - gray;
mask = meanFilterSat(gray_inv, radius);
lcc = 255 * (gray / 255) .^ (2 .^((128 - mask) / 128));

调整后:

gray = double(gray);
mask = meanFilterSat(gray, radius);
lcc = 255 * (gray / 255) .^ (2 .^((mask - 127) / 128));

最后, 使用ratio的方法为:

gray = double(gray);
mask = meanFilterSat(gray, radius); % 快速均值滤波
h_gray = hist_count(gray); % 直方图
ranges = getRanges(h_gray, 0.01); % 动态范围
lcc = 255 * (gray / ranges(2)) .^ (2 .^((mask - 127) / 128));
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,185评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,652评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,524评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,339评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,387评论 6 391
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,287评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,130评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,985评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,420评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,617评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,779评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,477评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,088评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,716评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,857评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,876评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,700评论 2 354

推荐阅读更多精彩内容