首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编程形态学开放返回输入

编程形态学开放返回输入
EN

Stack Overflow用户
提问于 2016-10-04 12:45:53
回答 1查看 135关注 0票数 0

我在编程形态学打开,它返回的结果,这是相同的输入图像。我是不是误解了对它的解释?我的代码是:

代码语言:javascript
复制
Var x, y;
Func limit, erosion, dilation;

ImageParam input(type_of<uint8_t>(), 2);
Param<int> dimension;

RDom r(-1 * dimension / 2, dimension, -1 * dimension / 2, dimension);
limit = BoundaryConditions::repeat_edge(input);

erosion(x, y) = argmin(r, limit(x + r.x, y + r.y), "erosion")[2];
dilation(x, y) = argmax(r, erosion(x + r.x, y + r.y), "dilation")[2];

erosion.compute_root();
dilation.vectorize(x, 4).parallel(y);

Target target = get_host_target();

target.set_feature(Target::NoRuntime, true);

dilation.compile_to_static_library(path, { input,dimension }, target);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-04 20:37:14

下面的结果似乎与我的OpenCV教程映像相似:

代码语言:javascript
复制
#include "Halide.h"
#include "../../tools/halide_image_io.h"

using namespace Halide;

int main(int argc, char **argv) {
    Var x, y;
    Func limit, erosion, dilation;

    ImageParam input(type_of<uint8_t>(), 2);
    Param<int> dimension;

    RDom r(-1 * dimension / 2, dimension, -1 * dimension / 2, dimension);
    limit = BoundaryConditions::repeat_edge(input);

#if 0
    erosion(x, y) = minimum(limit(x + r.x, y + r.y), "erosion");
    dilation(x, y) = maximum(erosion(x + r.x, y + r.y), "dilation");
#else
    erosion(x, y) = argmin(r, limit(x + r.x, y + r.y), "erosion")[2];
    dilation(x, y) = argmax(r, erosion(x + r.x, y + r.y), "dilation")[2];
#endif

    erosion.compute_root();
    dilation.vectorize(x, 4).parallel(y);

    Image<uint8_t> in = Halide::Tools::load_image("/some/path/morphology.png");
    input.set(in);
    dimension.set(10);

    Image<uint8_t> result = dilation.realize(in.width(), in.height());

    Halide::Tools::save_image(result, "/some/path/morphology_out.png");

    return 0;
}

#if 0块只显示使用最小和最大运算符,而不是argmin/argmax。对argmin/argmax的r参数也是可选的。

我会问,是在如何将图像传递给Halide编译函数,还是在如何处理返回的输出方面出现了错误。您还可以使用debug_to_file或Halide代码中的打印来调试管道的中间阶段。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39852732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档