【问题标题】:Using MultiDimensional (2D) arrays as enums for Kernel convolution matrices使用多维 (2D) 数组作为内核卷积矩阵的枚举
【发布时间】:2021-06-07 23:54:20
【问题描述】:

我正在用 Java 制作一个非常基本的图像处理程序,我有一些预定义的 3x3 矩阵用于各种卷积(锐化、模糊、边缘检测等)我现在对它们进行硬编码以用于测试目的,但我正在尝试将它们放在更合适的格式中,例如枚举,但我不确定如何将二维数组用作枚举。当我尝试访问内核索引时,我只是收到一个警告,即预期类型是数组但解析为内核。

    
    IDENTITY(new  double[][] {
            {0, 0, 0},
            {0, 1, 0},
            {0, 0, 0}
    }),

    EDGE_DETECTION_1(new double[][]  {
            {-1, -1, -1},
            {-1, 8, -1},
            {-1, -1, -1}
    }),
    
    
    EDGE_DETECTION_2(new double[][] {
            {1, 0, -1},
            {0, 0, 0},
            {-1, 0, 1}
    }),

Kernel array

我对使用比基本字符串等更复杂的枚举有点陌生,所以我可能会遗漏一些非常明显的东西,但我会很感激任何指针。

【问题讨论】:

标签: java image-processing matrix convolution


【解决方案1】:

发现只需要使用 getter 来访问实际的索引,而不是直接从内核访问它们。太明显了。

 red+=  (R*k.getKernels()[yOffset + k.getKernels().length/2][xOffset +k.getKernels().length/2]);

而不是

public static Kernel k = Kernel.LAPLACIAN;
k[0][0];

【讨论】:

    猜你喜欢
    • 2013-05-23
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 2017-07-25
    • 2012-11-01
    • 1970-01-01
    相关资源
    最近更新 更多