gpt4 book ai didi

android - 如何分配 LUT 以在 ScriptIntrinsic3DLUT 上使用?

转载 作者:搜寻专家 更新时间:2023-11-01 07:57:20 24 4
gpt4 key购买 nike

使用 RenderScript,我正在尝试使用 ScriptIntrinsic3DLUT ( http://developer.android.com/reference/android/renderscript/ScriptIntrinsic3DLUT.html )

一般来说,这个脚本就像任何其他渲染脚本一样工作

  • 创建 RS 上下文
  • 使用此上下文创建脚本
  • 创建输入和输出分配
  • 设置脚本参数
  • 调用内核

可能问题出在set script parameters步骤上,从文档中我应该调用script.setLUT (Allocation lut),但是生成/为此分配设置值?

我的代码示例是:

// create RS context
RenderScript rs = RenderScript.create(context);

// create output bitmap
Bitmap bitmapOut = Bitmap.createBitmap(bitmapIn.getWidth(), bitmapIn.getHeight(), bitmapIn.getConfig());

// create bitmap allocations
Allocation allocIn = Allocation.createFromBitmap(rs, bitmapIn);
Allocation allocOut = Allocation.createFromBitmap(rs, bitmapOut);

// create script
ScriptIntrinsic3DLUT script = ScriptIntrinsic3DLUT.create(rs, Element.U8_4(rs));

// set 3D LUT for the script
how to create the `Allocation lut` ??
script.setLUT(lut);

// process the script
script.forEach(allocIn, allocOut);

// copy result to bitmap output
allocOut.copyTo(bitmapOut);

我的问题类似于How to use ScriptIntrinsic3DLUT with a .cube file?

但不一样。我不关心多维数据集文件。我可以从字节数组、整数、矩阵等等创建 LUT。我只想知道如何/在何处将这些字节放入分配中。此分配的适当格式是什么?

最佳答案

我在网上找到了一个例子: https://android.googlesource.com/platform/frameworks/rs/+/master/java/tests/ImageProcessing/src/com/android/rs/image/ColorCube.java

这会创建一个不修改实际颜色值的 3D LUT。很好的例子,尽管它是如何工作的。

private ScriptIntrinsic3DLUT mIntrinsic;
private void initCube() {
final int sx = 32;
final int sy = 32;
final int sz = 16;
Type.Builder tb = new Type.Builder(mRS, Element.U8_4(mRS));
tb.setX(sx);
tb.setY(sy);
tb.setZ(sz);
Type t = tb.create();
mCube = Allocation.createTyped(mRS, t);
int dat[] = new int[sx * sy * sz];
for (int z = 0; z < sz; z++) {
for (int y = 0; y < sy; y++) {
for (int x = 0; x < sx; x++ ) {
int v = 0xff000000;
v |= (0xff * x / (sx - 1));
v |= (0xff * y / (sy - 1)) << 8;
v |= (0xff * z / (sz - 1)) << 16;
dat[z*sy*sx + y*sx + x] = v;
}
}
}
mCube.copyFromUnchecked(dat);
}

然后像这样使用它

mIntrinsic.setLUT(mCube);

如果有人可以帮助解析 .cube 文件并将其放入其中,我将不胜感激。

关于android - 如何分配 LUT 以在 ScriptIntrinsic3DLUT 上使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26401503/

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