如何在Halide中单独修改颜色通道?

时间:2016-07-06 05:38:14

标签: c++ halide

我有兴趣修改Halide像素的各个颜色通道。例如,如何使红色通道变亮但保持绿色和蓝色通道不变?为所有像素增亮所有颜色将如下所示:

Halide::Expr value = input(x, y, c);
value = value * 2.0f;
brighter(x, y, c) = value;

但是当尝试使用下面的方法照亮单个通道时,会收到错误。

Halide::Expr value = input(x, y, c);
value(x,y,0) = value(x,y,0) * 2.0f; // brighten red
value(x,y,1) = value(x,y,2);        // keep green the same
value(x,y,2) = value(x,y,3);        // keep blue the same
brighter(x, y, c) = value;

错误:

ImgPipe_Halide.cpp:88:14: error: no match for call to ‘(Halide::Expr) (Halide::Var&, Halide::Var&, int)’

那么,如何从像素中读取单个通道值,以及如何修改它们?

1 个答案:

答案 0 :(得分:3)

一种方法是使用卤化物的选择功能

示例:

value = Halide::select(c == 0, input(x,y,c) * 2.0f,
                       input(x,y,c));