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



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

  

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

我来补充一个当年二师兄

@卢策吾

的一篇非常有趣的作品:

Contrast Preserving Decolorization

,已被收录进

OpenCV 3.0及之后的版本中

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

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

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

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

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




  

相关话题

  二维傅里叶变换是怎么进行的? 
  怎样把扭曲的直线图像修直? 
  有没有可以判断 “B是否属于A的子序列” 的单向加密算法? 
  世界上有哪些代码量很少,但很牛逼很经典的算法或项目案例? 
  N个互异数随机组成的数组的逆序数的分布公式是什么? 
  有n级台阶,每次可以走1~(n-1)的任意阶数,那么一共有多少种走法? 
  QR 二维码在不影响扫码的情况下,哪些部分可以删除? 
  数字图像处理的工作是用传统算法更多还是用深度学习更多? 
  有哪些算法或数据结构是ACM大牛们在比赛中创造出来的? 
  台式电脑放在没有网线的房间怎么办? 

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





© 2025-04-06 - tinynew.org. All Rights Reserved.
© 2025-04-06 - tinynew.org. 保留所有权利