android - 在 YUV 颜色空间中操纵亮度

标签 android image-processing yuv

我不会在字节 [] 形式的图像上设置对比度/亮度。 该图像位于 YCbCr_420 色彩空间(安卓相机)中。 我以这种方式获得亮度值:

for (int j = 0, yp = 0; j < height; j++) {
for (int i = 0; i < width; i++, yp++) {
    int y = (0xff & (yuv420sp[yp])) - 16;
    }
}

如何操纵 y 值来设置更多光线? 我也不确定这是否是设置回值的正确方法:

yuv420sp[yp] = (byte) ((0xff & y) +16);

感谢您的帮助。

最佳答案

我从这个 API 中知道的一点是 3 个 channel 的值连接在一个字节数组中。所以,同样在使用 RGB 的 Windows 中,我猜这里你有相同的,我的意思是,每 3 个字节代表一个像素。所以我猜,您可以访问它每 3 个位置跳转一次以仅访问一个 channel (在您的情况下为 Luma)。就是不知道luma是用第一个、第二个还是第三个字节表示的。

第二,如果我理解你只是想改变亮度/对比度(增加/减少),对吗? 因为如果是这样,对比度只是乘法,亮度是加法。

例如 - 假设您正在使用 8 位 channel 的伪代码:

luma[y] = luma[y] * 1.10; //Increases contrast

或者你可以有一个更通用的形式:

luma[y] = luma[y] + (luma[y] * contrast); //where contrast ranges from -1.0 to 1.0

同样你可以对亮度做同样的事情:

luma[y] = luma[y] + bright; //Where bright can range from -255 to 255

在这两种情况下,在将最终像素结果分配给图像之前,您必须小心上溢和下溢。

关于android - 在 YUV 颜色空间中操纵亮度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10684220/

相关文章:

android - 如何在 Eclipse 中使用 Google 提供的 Android Design Pack

c# - YUV色间距

image-processing - Y'CbCr 空间中的 Gamma 校正

android - 如何确定 ListView 何时完成填充

java - android :name attribute do? 是什么意思

opencv - 过滤错误的、闪烁的向量(来自 findContours)

image-processing - OpenCL 中本地内存的优势是什么?

matlab - 椭圆的协方差矩阵

image-processing - 为什么 YUV <-> RGB 中的常数被选择为它们现在的值

java - 条形码扫描仪使用 ML Kit 仅读取 QR 码