Cás*_*lli 1 opencv image-manipulation imagemagick image-processing imagemagick-convert
有没有办法将灰度图像转换为彩色图像?
这是一些JPG示例
ImageMagick功能强大,但似乎无法转换为彩色版本。
你不能准确地重新创建是通过汇总三个渠道一起转换颜色时,会丢失的信息。但是,您可以生成错误的颜色,还可以做出一些假设,这些假设对于某些/许多图片而言可能是相当合理的。
通常,在执行这些类型的操作时,您将创建一个LUT(查找表),并在每个像素位置使用灰度值来查找替代颜色。因此,如果我们创建一个从红色到绿色再到蓝色的查找表,则图像中的暗色调将被映射为红色,中间色调将被映射为绿色,高光将被映射为蓝色。让我们尝试一下:
convert -size 1x1! xc:red xc:lime xc:blue +append -resize 255x1! rainbowCLUT.png
Run Code Online (Sandbox Code Playgroud)
如果现在将其应用于您的图片:
convert yourImage.jpg rainbowCLUT.png -clut result.png
Run Code Online (Sandbox Code Playgroud)
好的,我们现在有了颜色,但这不是很现实。因此,为了做得更好,我们需要开始做一些假设。一种假设可能是图片中有些漂亮的黑色(例如,领带,夹克,深色头发或深处的阴影),另一种假设可能是图像中的某处可能有白色高光(即白色背景,眼睛的白色),最后我们假设中间有一些肉色。因此,让我们制作一个看起来像这样的CLUT,即它从纯黑色到中间的肉色到白色高光:
convert -size 128x1! gradient:black-"rgb(210,160,140)" gradient:"rgb(210,160,140)"-white +append clut.png
Run Code Online (Sandbox Code Playgroud)
(我在它周围放了一个1像素宽的红色边框,以便可以在StackOverflow的白色背景上看到它)
现在我们可以将其应用于您的图像:
convert yourImage.jpg -normalize clut.png -clut result.png
Run Code Online (Sandbox Code Playgroud)
请注意,我以前也是如何-normalize尝试使图像适合我的假设的,即图像中有纯黑色调,而白色有高亮显示。
这项技术仅是尝试重新创建图像中不再存在的内容,因此它不会始终有效。当然,如果您知道有关拍摄对象,照明等方面的更多信息,则可以将其内置到LUT中。