Halide Tutorial 02
æ¦è¦
libpngãç¨ãã¦å ¥åããç»åã«å¯¾ãã¦å¦çãå®è¡ãããã¥ã¼ããªã¢ã«ã å ¥åããç»åã®è¼åº¦ã1.5åããã Algorithmé¨åãåå²ï¼ã¯ã³ã©ã¤ã³ã§ã¯ãªãï¼ãã¦ããããã¨ãç´¹ä»ãã¦ããã
// Halide tutorial lesson 2: Processing images // The only Halide header file you need is Halide.h. It includes all of Halide. #include "Halide.h" // Include some support code for loading pngs. #include "halide_image_io.h" using namespace Halide::Tools; int main(int argc, char **argv) { // First we'll load the input image we wish to brighten. Halide::Buffer<uint8_t> input = load_image("images/rgb.png"); // Next we define our Func object that represents our one pipeline // stage. Halide::Func brighter; // Our Func will have three arguments, representing the position // in the image and the color channel. Halide treats color // channels as an extra dimension of the image. Halide::Var x, y, c; // Normally we'd probably write the whole function definition on // one line. Here we'll break it apart so we can explain what // we're doing at every step. // 1è¡ã§æ¸ããªãããã ããåå²OK // brighter(x, y, c) = Halide::cast<uint8_t>(min(input(x, y, c) * 1.5f, 255)); // For each pixel of the input image. Halide::Expr value = input(x, y, c); // Cast it to a floating point value. value = Halide::cast<float>(value); // Multiply it by 1.5 to brighten it. Halide represents real // numbers as floats, not doubles, so we stick an 'f' on the end // of our constant. value = value * 1.5f; // Clamp it to be less than 255, so we don't get overflow when we // cast it back to an 8-bit unsigned int. value = Halide::min(value, 255.0f); // Cast it back to an 8-bit unsigned integer. value = Halide::cast<uint8_t>(value); // Define the function. brighter(x, y, c) = value; Halide::Buffer<uint8_t> output = brighter.realize(input.width(), input.height(), input.channels()); // Save the output for inspection. It should look like a bright parrot. save_image(output, "brighter.png"); // See figures/lesson_02_output.jpg for a small version of the output. printf("Success!\n"); return 0; }
å®è¡ã³ãã³ã
g++ lesson_02*.cpp -g -I ../include -I ../tools -L ../bin -lHalide `libpng-config --cflags --ldflags` -lpthread -ldl -o lesson_02 -std=c++11 -ljpeg LD_LIBRARY_PATH=../bin ./lesson_02