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



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

  

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

我来补充一个当年二师兄

@卢策吾

的一篇非常有趣的作品:

Contrast Preserving Decolorization

,已被收录进

OpenCV 3.0及之后的版本中

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

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

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

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

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




  

相关话题

  不用计算机程序,如何求1,2,…,n中所有与n互素的数的平方和? 
  如何评价 2021 年 ICPC 银川赛区? 
  如何理解压缩感知(compressive sensing)? 
  电脑长久不关机会缩短电脑寿命吗? 
  为什么时效上具有明显优势的基数排序(radix sort)没有快速排序流行? 
  深度学习图像处理什么时候用到GPU? 
  如何看待猫咪情绪识别APP?你相信用程序可以准确识别出宠物的情绪吗? 
  哪本《数据结构与算法》最好? 
  世界上有哪些代码量很少,但很牛逼很经典的算法或项目案例? 
  image caption这个方向更偏向NLP还是CV? 

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





© 2024-09-27 - tinynew.org. All Rights Reserved.
© 2024-09-27 - tinynew.org. 保留所有权利