首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >卷积滤波器-对比度核

卷积滤波器-对比度核
EN

Stack Overflow用户
提问于 2020-09-17 03:00:34
回答 1查看 96关注 0票数 0

对比度卷积滤波的核(矩阵)是否存在?我已经在C#中实现了低通滤波器和更简单的滤波器,但即使花了几天时间寻找对比度滤波器的内核值,我仍然一无所获。

这是我的参考低通滤波器:

代码语言:javascript
复制
    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*提供了我用来分别计算像素的新的蓝、绿和红值的对比度。

代码语言:javascript
复制
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都无关紧要。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-17 05:08:43

多亏了Cris Luengo,我解决了这个问题。我的对比度滤镜如下所示:

代码语言:javascript
复制
    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,我使阴影和高光都更亮。通过使用前面提到的公式,我能够毫无问题地使阴影变暗,并使高光变亮。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63926424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档