百科问答小站 logo
百科问答小站 font logo



彩色图片是通过何种算法变成黑白图片? 第1页

  

user avatar   xia-yang-7 网友的相关建议: 
      

我来补充一个当年二师兄

@卢策吾

的一篇非常有趣的作品:

Contrast Preserving Decolorization

,已被收录进

OpenCV 3.0及之后的版本中

简单来说,目前市面上绝大多数的彩色转黑白都是通过一个确定的函数Gray=f(R,G,B)将彩色空间映射到灰度空间。然而很容易想到的是,对于任何一个『事先确定好』的映射,我们总是能找到一些『坏』的数据,使得原先还算正常的彩图变成『很糟糕』的灰度图。例如:

理由也很简单:毕竟彩色空间到灰度空间降了两个维度,对于『事先确定好』的映射函数f,我们总是能找到颜色略有不同但灰度接近的情况。

那么如果我们换一个思路:这个映射函数本身是根据输入图像动态计算出来的。换句话说,对于不同的图,这个映射函数可以是不一样的!即使是同一个颜色,在不同的图像中也可能被映射成不同的灰度。这听起来似乎有点奇怪,但其实也合理——为什么非得一样呢?

于是我们回到问题的源头来思考:彩色转黑白的目的是什么?比如相当常见的一种情况就是印刷。如果产生灰度图最终的目的是给人(或者某些算法)来看的话,人们关心的未必是『不同图片里的同一种颜色必须要映射成同一级灰度』。更多的时候,是『原来彩图里的东西(物体、结构)转换成黑白也要能看得清』。

因此,二师兄这篇文章的重点在于,在转化映射函数的过程中尽量『保持图像的对比度不变』。原文的关键是一个最高不超过二次的多项式模型,以及一套用来保持对比度的optimization方法,不过我不打算在这里展开数学细节,大家可以自己慢慢读文章理解,但保持对比度的这个思路我觉得是相当有意思的。贴几张效果图感受一下:




  

相关话题

  OpenCV已经将图像处理(识别)的算法写成函数了,那我们还有必要去学习这些算法不? 
  n*n的棋盘填上1,2,...,n^2,使任意相邻(有公共边)格子里的数字之和不大于S,求S最小值? 
  视觉Transformer如何优雅地避开位置编码? 
  什么是相位?如何更加形象直观地理解相位? 
  如何用python来统计MacPro的圆圈个数? 
  如何在图片中优雅而又有效地添加水印? 
  彩色图片是通过何种算法变成黑白图片? 
  QR 二维码在不影响扫码的情况下,哪些部分可以删除? 
  计算机视觉是否已经进入瓶颈期? 
  图像检索(CBIR)中,topK precision怎么算? 

前一个讨论
抗战时期国军将领中有哪些话曾让人印象深刻?
下一个讨论
马前卒为什么这么博学多才?





© 2024-11-22 - tinynew.org. All Rights Reserved.
© 2024-11-22 - tinynew.org. 保留所有权利