Android Java - 如何以更快的方式去除图像噪音



我有这些代码来减少图像噪声:

for (int x = 0; x < bitmap.getWidth(); x++) {
    for (int y = 0; y < bitmap.getHeight(); y++) {
        // get one pixel color
        int pixel = processedBitmap.getPixel(x, y);
        // retrieve color of RGB
        int R = Color.red(pixel);
        int G = Color.green(pixel);
        int B = Color.blue(pixel);
        // convert into single value
        R = G = B = (int) (0.299 * R + 0.587 * G + 0.114 * B);
        // convert to black and white + remove noise
        if (R > 162 && G > 162 && B > 162)
            bitmap.setPixel(x, y, Color.WHITE);
        else if (R < 162 && G < 162 && B < 162)
            bitmap.setPixel(x, y, Color.BLACK);
    }
}

但是产生结果需要很长时间。有没有其他方法可以优化这些代码以使其更快?

不要使用 getPixel。 以数组形式获取图像数据,并使用数学访问正确的像素。 编写数学,以便使用尽可能少的乘法。 设置像素相同。

不要使用 Color.red((、Color.green(( 等。 使用屏蔽,它比函数调用更有效。

更好的是,进入 NDK 并在 C 中执行此操作。 Java 中的图像处理通常不是最佳的。

最新更新