OpenCV Decolorization

Posted yhl_leo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCV Decolorization相关的知识,希望对你有一定的参考价值。


本系列文章由 @yhl_leo 出品,转载请注明出处。
文章链接: http://blog.csdn.net/yhl_leo/article/details/55270873


使用了很久OpenCV和Matlab中的图像灰度化操作,因为是非常基础的操作又很常见,也就没怎么思考过,直到这些灰度化遇到了一些问题:

Original ImageColor2Gray

OpenCV和Matlab中灰度化的方法都非常简单:

Y=0.2989×R+0.5870×G+0.1140×B

很明显,这种线性灰度化方法用于解决这一非线性问题,有些时候会导致图像对比度严重损失。

看到OpenCV3.x中集成了新的灰度化方法decolor

void decolor(InputArray src, OutputArray grayscale, OutputArray color_boost)
用法很简单:
#include <opencv2/opencv.hpp>

using namespace cv;

int main()

    Mat src = imread("test.png");
    Mat grayScale, color_boost;
    decolor(src, grayScale, color_boost);

    imshow("test", grayScale);
    waitKey(0);
    return 0;

差异立竿见影!

找到原论文:Contrast Preserving Decolorization, ICCP 2012,方法也很简单,相比于简单的使用R/G/B线性组合,作者构造了更为复杂的多项式拟合,向量空间的基底为: [r,g,b,rg,rb,gb,r2,g2,b2] ,核心就是求取灰度化函数:

f(r,g,b;w)=iwimi

其中 mi 是向量空间的第 i 个基底,于是灰度化问题就转化为求解9个w系数。作者的解法也挺巧妙,值得一看~

以上是关于OpenCV Decolorization的主要内容,如果未能解决你的问题,请参考以下文章

思源黑体怎么刷了几次刷不上

[OpenCV实战]28 基于OpenCV的GUI库cvui

css font-family常用的黑体宋体等字体中英文对照表

css 黑体,宋体指定

markdown修改文字颜色,字体,背景等

iOS里的隐藏黑体 | 今黑