使用C++和Qt进行亮度、对比度和伽马调整

3
什么是调整图像亮度、对比度和伽马值的最简单方法?这里的“正确”是因为我知道如何不正确地执行这些调整:循环遍历所有RGB像素,并对每个通道进行以下操作:
int changeBrightness( int value, int brightness) {
    return qBound<int>(0, value + brightness * 255 / 100, 255);
}
int changeContrast( int value, int contrast ) {
    return qBound<int>(0, int(( value - 127 ) * contrast / 100 ) + 127, 255 );
}
int changeGamma( int value, int gamma ) {
    return qBound<int>(0, int( pow( value / 255.0, 100.0 / gamma ) * 255 ), 255 );
}

尽管此代码可以添加亮度/对比度/伽马变化效果,但效果并不好。像Photoshop这样的专业图像软件处理得更好。

哪个库是处理这种问题的最佳选择?我知道有ImageMagick,但它非常沉重,我不想链接到成百上千的功能中的一个。有没有轻量级的替代方案?


2
Photoshop可能除了基本的亮度/对比度/伽马调整之外,还在做其他的事情,如果它的结果与你的实现不同的话。我会投票支持OpenCV。 - Chris O
ImageMagick显示与Photoshop类似的结果。我认为它们都使用了适当的技术。我确定这不是火箭外科手术,但仍然相当复杂。 - ak.
1个回答

2

我实际上正在寻找一些轻量级的东西,选择OpenCV和ImageMagick之间,我会选择后者。此外,提供一个可以进行上述调整的API链接将会很有帮助。 - ak.
我认为你发的这9行代码比其他任何解决方案都更轻量级。自己编写代码有什么不妥吗? - Luke
正如我所提到的 - 这对我来说似乎不太合适,因为在Photoshop中进行相同的操作会产生质量更好的图像。 - ak.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接