【问题标题】:What are these bright yellow/red/pink colors I get from subtracting two images?从两张图像中减去这些明亮的黄色/红色/粉红色是什么?
【发布时间】:2017-12-20 21:24:22
【问题描述】:

我正在制作一个 Android 应用程序,用户在其中拍摄两张图像,第一张图像逐个像素地从第二张图像中“减去”。

本质上是将两个Bitmaps转换为2D int数组,使用以下方法进行图像减法:

private int[][] pixelmapDifference(int[][] subtrahend, int[][] minuend) {
    int[][] diff = new int[subtrahend.length][subtrahend[0].length];
    for (int x = 0; x < diff.length; x++) {
        for (int y = 0; y < diff[0].length; y++) {
            diff[x][y] = minuend[x][y] - subtrahend[x][y];
        }
    }
    return diff;
}

然后将生成的二维数组转换为位图。这就是 3 张图片的样子(第一张、第二张和不同)。

我该如何解释呢?我想知道两者之间的区别,在这种情况下只是水。

【问题讨论】:

  • 你不能只用图像减去这样的值。描述你真正想要达到的目标。请注意,计算机在比较图像之类的事情上真的很糟糕,因为重要的不是精确值而是模式。识别特征的计算机视觉仍然是一个热门领域。

标签: android image bitmap


【解决方案1】:

你总是从第一个中减去第二个。当第二个更亮时会发生什么?返回值低于零。我不是百分百确定会发生什么,但文档说颜色是 int color = (A &amp; 0xff) &lt;&lt; 24 | (R &amp; 0xff) &lt;&lt; 16 | (G &amp; 0xff) &lt;&lt; 8 | (B &amp; 0xff); 因此,在某些情况下,当您从较暗中减去较亮时,结果就是这些奇怪的点。

【讨论】:

  • 检查哪个更小?但这取决于你想达到什么样的效果。
  • 所以澄清一下,我的应用程序可能正在做,例如,23,34,33 (RGB) 减去 25,33,32,红色值“环绕”到 254,对吧?
猜你喜欢
  • 2016-01-27
  • 1970-01-01
  • 2021-01-03
  • 2011-03-09
  • 1970-01-01
  • 2021-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多