1
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)’
, 어떻게 픽셀에서 개별 채널 값을 읽을 수 있고, 어떻게 수정할 수 있습니까?
대답 주셔서 감사합니다! 표시 할 때 입력에 적용하면 작동합니다. 흥미롭게도 이것은 값 (실제로는 같은 오류)에서 선택하면 작동하지 않습니다. 이것은 선택 함수가 Halide 함수 및 이미지에서는 작동하지만 표현식에서는 작동하지 않는다는 것을 의미합니다. – Kantthpel
이것이 올바른 해결책입니다. 오류는 자유 변수를 사용하여 Expr을 인덱싱 할 수 없기 때문입니다. 자유 변수로만 Func을 인덱싱 할 수 있습니다. 값 (x, y, 0)은 의미가 없습니다 - 이미 값 (x, y, c)이 입력되어 있지 않습니다 (x, y, 0). –