我用它将高分辨率的灰度图像叠加在放大的低分辨率的彩色图像上,使彩色图像更加清晰。例如,给定一个灰度图像和一个彩色图像

在模糊的彩色图像上应用灰度图像作为亮度 "掩码 "的结果,就会产生一个清晰的彩色图像。

亮度过滤器是如何工作的,我如何在Python中实现它(例如使用Pillow)?

image-processing
python-imaging-library
gimp
Andreas Jansson
Andreas Jansson
发布于 2021-02-20
2 个回答
Mark Setchell
Mark Setchell
发布于 2021-02-22
已采纳
0 人赞同

简单地说,人眼对亮度(亮度)的微小变化比对颜色的微小变化更敏感。顺便说一下,这就是为什么JPEG做了 色度降低的采样 ,但保留了完整的亮度数据。

因此,基本上,你把你的低分辨率彩色图像转换成一个色彩空间,如 Lab HSV 或任何包含 L V 的组件。然后用你的(高质量/高分辨率)亮度数据替换该分量,再转换回RGB。这样,你就保留了低质量的颜色数据,但将其与高质量的亮度数据相结合。

现在已经很晚了,所以我可能明天再写代码,但它看起来大致是这样的。

from PIL import Image
# Load low quality colour image and convert to HSV
lowQualColour = Image.open('colour.png')
HSV = lowQualColour.convert('HSV')
# Split channels, discarding Luminance
H, S, _ = HSV.split()
# Load high quality luminance as single channel
hiQualLuminance = Image.open('luminance.png').convert('L')
# Merge with colour channels and revert to RGB
result = Image.merge('HSV', (H,S,hiQualLuminance)).convert('RGB')
    
xenoid
xenoid
发布于 2021-02-22
0 人赞同

实验中,使用这样的图像。

  • 在白色上面,亮度模式下的图层渲染了它自己的一个副本,所以合成图像的底层部分具有与顶层完全相同的亮度。

  • 如果你沿着垂直方向(比如用导光板)从其中一半移动到另一半,并查看 xyY 模式的指针值(其中 Y 是亮度),你会发现亮度值没有什么变化,所以总体来说,你可以假设亮度混合模式。

  • 将底部图像转换为某种带有亮度成分的颜色模型(也许是 xyY )。

  • 将顶部图像转换为相同的颜色模型

  • 使用顶部的亮度分量和底部的其他两个分量创建像素值。

  •