opencv 灰度图像到彩色

koaltpgm  于 2023-10-24  发布在  其他
关注(0)|答案(4)|浏览(173)

enter image description here是否有办法将灰度图像转换为彩色图像?
这里有几个JPG的例子

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

7eumitmz1#

当转换为彩色时,您无法通过将三个通道聚合在一起来 * 准确地 * 重新创建丢失的信息。但是,您可以生成一个 * 假 * 颜色,并且您还可以对某些/许多图片进行一些可能相当合理的假设。
一般来说,在执行这些操作时,您会创建一个LUT(查找表),并使用每个像素位置的灰度值来查找替换颜色。因此,如果我们创建一个从红色到绿色再到蓝色的LUT,那么图像中的暗色调将Map为红色,中间色调Map为绿色,高光Map为蓝色。让我们试试:

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中。

n1bvdmb6

n1bvdmb62#

不幸的是,这是不可能的。灰度图像不包含足够的信息来创建彩色图像。在您看到B&W/灰度图像转换为彩色的情况下,这是在Photoshop等应用程序中手动完成的。
您可以使用imagemagick应用滤镜,但不能重新引入颜色。http://www.imagemagick.org/Usage/color_mods/#level-colors

ctehm74n

ctehm74n3#

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

zfciruhq

zfciruhq4#

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

着色架构:

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

相关问题