灰度图像转彩色

问题描述 投票:0回答:4

enter image description here有没有办法将灰度图像转换为彩色图像?

这里有一些 JPG 示例

  1. 照片1
  2. 照片2
  3. 照片3

ImageMagick功能强大,但似乎无法转换为彩色版本。

opencv image-processing imagemagick image-manipulation imagemagick-convert
4个回答
7
投票

您无法准确地重新创建在转换为颜色时将三个通道聚合在一起而丢失的信息。但是,您可以生成“假”颜色,并且还可以做出一些对于某些/许多图片来说可能相当合理的假设。 通常,在执行这些类型的操作时,您会创建一个

LUT

(查找表)并使用每个像素位置的灰度值来查找替换颜色。因此,如果我们制作一个从红色到绿色再到蓝色的 LUT,图像中的暗色调将映射到红色,中间色调映射到绿色,高光映射到蓝色。我们来试试吧: convert -size 1x1! xc:red xc:lime xc:blue +append -resize 255x1! rainbowCLUT.png

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

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

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

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

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

现在我们可以将其应用到您的图像中:

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

请注意我如何使用

-normalize

来尝试使图像符合我的假设,即图像中有纯黑色调和纯白色高光。


此技术只是尝试重新创建图像中不再存在的东西,因此它并不总是有效。当然,如果您知道有关拍摄对象、灯光等的额外信息,您可以将其构建到 LUT 中。


2
投票

您可以使用 imagemagick 应用滤镜,但无法重新引入颜色。

http://www.imagemagick.org/Usage/color_mods/#level-colors


1
投票


1
投票
siggraph2016_colorization

我没有尝试过,但看起来很有趣。 他们提出了一种新颖的技术来自动对灰度图像进行着色,该技术结合了全局先验和局部图像特征。

着色架构:

他们的模型由四个主要部分组成:低级特征网络、中级特征网络、全局特征网络和着色网络。这些组件都是紧密耦合的,并以端到端的方式进行训练。我们模型的输出是图像的色度,它与亮度融合形成输出图像。

这里有一个样本

© www.soinside.com 2019 - 2024. All rights reserved.