如何使图像呈现出陈旧、布满灰尘、颜色褪色的外观?

Nir*_*bag 2 opencv image image-processing

我有旧画的图像。这些画很旧,布满灰尘,颜色褪色,如图所示

如何赋予任何图像这种“旧”外观?我找不到任何过滤器或 openCV 函数来实现这种类型的外观?

编辑:我的问题有所不同,因为另一个问题使用棕褐色滤镜和颗粒效果解决了问题。我并不是在寻找那种外表。我希望我的图像看起来像一幅损坏的旧画。这意味着颜色应该褪色并且整体外观应该是灰尘状的。

Mar*_*ell 5

没有真正需要编写任何代码并使用OpenCV ,因为您可以使用ImageMagick在命令行上完成所有这些操作,它安装在大多数 Linux 发行版上,并且适用于 macOS 和 Windows。


首先,褪色。这可以通过降低图像的饱和度来模拟。因此,如果我们从这张蒙娜丽莎的图像开始:

在此输入图像描述

我们可以使用此命令淡化她,使亮度保持其原始值的 100% 不变,并将饱和度降低至其原始值的 50%。我故意“过度怂恿”一切,这样你就可以清楚地看到它。也许你应该更微妙一些。

convert mona.jpg -modulate 100,50 result.jpg
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


接下来是渐晕或暗角。你可以使用这样的东西:

convert mona.jpg \
   \( +clone -fill white -colorize 100 -background "gray(50%)" -vignette 0x15+1+1% \) \
   -compose multiply -composite result.jpg
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

控制0x15滚降,或者变化的渐进程度,因此0x15如果您想要更平滑的滚降,请增加 ;0x5如果您想要更困难,请降低 。这+1+1%意味着椭圆将比图像的宽度小 1%,比图像的高度小 1%。因此,如果您想要更小的光孔和更大的暗角,请选择+10+10%。变暗的程度由 控制,gray(50%)因此您可以随意调整,直到您也满意为止:-)


最后,灰尘。最好的办法是获取一些灰尘的 PNG 图像,调整其大小以匹配图像的大小并覆盖它。

首先得到Mona的尺寸:

identify mona.jpg
mona.jpg JPEG 403x600 403x600+0+0 8-bit sRGB 57130B 0.000u 0:00.000
Run Code Online (Sandbox Code Playgroud)

所以,她的尺寸是 403x600。这是一些灰尘的样本 - 再说一次,你可以更微妙 - 我只是用力过猛,所以它表明:

在此输入图像描述

让我们调整灰尘的大小以匹配并覆盖它:

convert mona.jpg \( dust.png -resize 403x600\! \) -composite result.jpg
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


然后,您可以将所有三种效果(褪色、渐晕和灰尘)组合到一个命令中:

convert mona.jpg -modulate 100,50% \
   \( +clone -fill white -colorize 100 -background "gray(50%)" -vignette 0x15+1+1% \) \
  -compose multiply -composite     \
  \( dust.png -resize 403x600\! \) -composite result.jpg
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如果您有大量图像需要处理,您可以使用GNU Parallel轻松编写要并行完成的所有图像的脚本- 有关示例,请参阅我的其他一些答案。

关键词:人工老化、图像老化、命令行、命令行、ImageMagick、magick、老、老照片、照片效果、转换、灰尘、划痕、褪色、褪色。