gpt4 book ai didi

java - 在 Java 中实现 Sobel 过滤器 - 标准化值

转载 作者:太空宇宙 更新时间:2023-11-04 14:34:25 25 4
gpt4 key购买 nike

我想自己实现Sobel Filter(实际上没有漂亮的实现)。但是在进行卷积之后我不知道如何计算 rgb 值。

  • 假设:灰度图像

    double [][] sobel_x = 
    {
    { -1, 0, 1},
    { -2, 0, 2},
    { -1, 0, 1}
    };

    double [][] sobel_y =
    {
    { 1, 2, 1},
    { 0, 0, 0},
    {-1, -2, 1}
    };

    for(int y=1; y<image.getHeight()-1; y++)
    {
    for(int x=1; x<image.getWidth()-1; x++)
    {
    Color a = new Color(image.getRGB(x-1, y-1));
    Color b = new Color(image.getRGB(x, y-1));
    Color c = new Color(image.getRGB(x+1, y-1));
    Color d = new Color(image.getRGB(x-1, y));
    Color e = new Color(image.getRGB(x, y));
    Color f = new Color(image.getRGB(x+1, y));
    Color g = new Color(image.getRGB(x-1, y+1));
    Color h = new Color(image.getRGB(x, y+1));
    Color i = new Color(image.getRGB(x+1, y+1));

    double pixel_x = (sobel_x[0][0] * a.getRed()) + (sobel_x[0][1] * b.getRed()) + (sobel_x[0][2] * c.getRed()) +
    (sobel_x[1][0] * d.getRed()) + (sobel_x[1][1] * e.getRed()) + (sobel_x[1][2] * f.getRed()) +
    (sobel_x[2][0] * g.getRed()) + (sobel_x[2][1] * h.getRed()) + (sobel_x[2][2] * i.getRed());
    double pixel_y =
    (sobel_y[0][0] * a.getRed()) + (sobel_x[0][1] * b.getRed()) + (sobel_x[0][2] * c.getRed()) +
    (sobel_y[1][0] * d.getRed()) + (sobel_x[1][1] * e.getRed()) + (sobel_x[1][2] * f.getRed()) +
    (sobel_y[2][0] * g.getRed()) + (sobel_x[2][1] * h.getRed()) + (sobel_x[2][2] * i.getRed());

    //Here it is possible to get values between [-1020, 1020]

    //How to going on

    //int rgb = (int) Math.sqrt(pixel_x*pixel_x+pixel_y*pixel_y);

    //int rgbAsInt = (int)(65536 * rgb + 256 * rgb + rgb);
    }
    }

最佳答案

我的想法之一是进行线性变换。例如,您得到的图像中的最小像素值为-998,最大像素值为1000。因此您可以将-998对应于0,将1000对应于255,然后得到(-998,1000)的比例尺与刻度为 (0,255),并将 [-998,1000] 到 [0,255] 之间的所有值标准化。

关于java - 在 Java 中实现 Sobel 过滤器 - 标准化值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25770019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com