对比度卷积滤波的核(矩阵)是否存在?我已经在C#中实现了低通滤波器和更简单的滤波器,但即使花了几天时间寻找对比度滤波器的内核值,我仍然一无所获。
这是我的参考低通滤波器:
private double[,] _kernel = new double[,] { { 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 }, };
public override double[,] Kernel
{
get { return _kernel; }
}
private double _scale = 25.0;
public override double Scale
{
get { return _scale; }
}
private double _bias = 0.0;
public override double Bias
{
get { return _bias; }
}我确实理解实现对比度滤镜本身是相当容易的。*C = ((100.0 + T) / 100.0)^2*提供了我用来分别计算像素的新的蓝、绿和红值的对比度。
B = ( ( ( (B1 / 255.0) – 0.5) * C) + 0.5) * 255.0
G = ( ( ( (G1 / 255.0) – 0.5) * C) + 0.5) * 255.0
R = ( ( ( (R1 / 255.0) – 0.5) * C) + 0.5) * 255.0我的问题是,我的任务要求我实现一个卷积滤波器来进行对比。
关于我可以使用哪种内核有什么想法吗?无论是3x3还是5x5都无关紧要。
发布于 2020-09-17 05:08:43
多亏了Cris Luengo,我解决了这个问题。我的对比度滤镜如下所示:
private double[,] _kernel = new double[,] { { 10 } };
public override double[,] Kernel
{
get { return _kernel; }
}
private double _scale = 1.0;
public override double Scale
{
get { return _scale; }
}
private double _bias = 0.0;
public override double Bias
{
get { return _bias; }
}让内核成为1x1是一个神奇的想法!我唯一需要改变的就是完全使用B = ( ( ( (B1 / 255.0) – 0.5) * C) + 0.5) * 255.0来获得对比度。
增加对比度应该使阴影更暗,高光更亮,通过只使用B = ( (B1 / 255.0) * C) * 255.0 = B1 * C,我使阴影和高光都更亮。通过使用前面提到的公式,我能够毫无问题地使阴影变暗,并使高光变亮。
https://stackoverflow.com/questions/63926424
复制相似问题