颜色的灰度图像

时间:2015-08-26 15:17:27

标签: opencv image-processing imagemagick image-manipulation imagemagick-convert

有没有办法将灰度图像转换为彩色图像?

这里有一些JPG示例

  1. Photo 1
  2. Photo 2
  3. Photo 3
  4. ImageMagick 功能强大,但似乎无法转换为彩色版本。

4 个答案:

答案 0 :(得分:4)

在转换为彩色时,您无法准确地重新创建通过将三个通道聚合在一起而丢失的信息。但是,您可以生成 false 颜色,并且您还可以对某些/多张图片做出一些相当合理的假设。

通常,在执行这些类型的操作时,您可以创建 LUT (查找表)并使用每个像素位置的灰度值来查找替换颜色。因此,如果我们制作一个从红色到绿色通过蓝色的LUT,图像中的暗色调将映射为红色,中间色调将映射为绿色,高亮显示为蓝色。我们来试试吧:

convert -size 1x1! xc:red xc:lime xc:blue +append -resize 255x1! rainbowCLUT.png

enter image description here

如果我们现在将其应用于您的图片:

convert yourImage.jpg rainbowCLUT.png -clut result.png

enter image description here

好的,我们现在有颜色,但这不太现实。所以,要做得更好,我们需要开始做一些假设。一个假设可能是图片中有一些非常黑的东西(即领带,夹克,一些黑发,或某处的深阴影),另一个假设可能是图像中某处可能存在白色突出显示(即白色背景,白色的眼睛)最后我们假设在中间某处有一些肉色调。所以,让我们做一个看起来像这样的CLUT,即它从纯黑色到中间的肤色到白色高光:

convert -size 128x1! gradient:black-"rgb(210,160,140)" gradient:"rgb(210,160,140)"-white +append clut.png

enter image description here

(我在它周围放了一个1像素宽的红色边框,这样你就可以在StackOverflow的白色背景上看到它了)

现在我们可以将它应用到您的图片中:

convert yourImage.jpg -normalize clut.png -clut result.png

enter image description here enter image description here enter image description here

enter image description here enter image description here enter image description here

请注意我是如何使用-normalize尝试使图像适合我的假设,即图像中有一个纯黑色调和一个纯白色高光。

此技术只是尝试重新创建不再出现在图像中的内容,因此它不会始终有效。当然,如果你知道关于你的主题,灯光等的额外信息,你可以将它构建到LUT中。

答案 1 :(得分:2)

不幸的是,这是不可能的。灰度图像不包含足以创建彩色图像的信息。如果您看到B& W /灰度图像转换为颜色,则可以在Photoshop等应用程序中手动完成。

您可以使用imagemagick应用滤镜,但不能重新引入颜色。 http://www.imagemagick.org/Usage/color_mods/#level-colors

答案 2 :(得分:1)

要将图像转换为灰度,您只需获取每个像素中r g b值的平均值,并将r g和b设置为该值。因此几乎不可能将其转换回颜色。关键词是相当多的,我相信有人最终会发明一些复杂的算法,它会看到它周围的像素,看看它们的平均值,也许可以得出一个关于该区域内颜色的结论,我不知道。但就目前而言,我不认为不幸的是这样做是可能的。遗憾。

答案 3 :(得分:1)

看看siggraph2016_colorization 我没试过,但看起来很有趣。

他们提出了一种新技术,可以自动着色灰度图像,结合全局先验和局部图像特征。

着色架构:

他们的模型包括四个主要组件:低级功能网络,中级功能网络,全局功能网络和着色网络。这些组件都以端到端的方式紧密耦合和训练。我们模型的输出是图像的色度,它与亮度融合形成输出图像。

这里是一个样本 enter image description here enter image description here