image-processing - 处理 CUDA 中的边界条件/Halo 区域

标签 image-processing cuda convolution

我正在使用 CUDA 进行图像处理,但我对像素处理有疑问。

应用 m x m 时通常对图像的边界像素做了什么卷积过滤器?

3 x 3卷积核,忽略 1图像的像素边界更容易处理,尤其是当代码使用共享内存进行改进时。实际上,在这种情况下,不需要检查给定像素是否具有所有可用的邻域(即坐标 (0, 0) 上的像素尚未离开、左上、上邻)。但是,删除 1原始图像的像素边界可能会产生部分结果。

与此相反,我想处理图像中的所有像素,也在使用共享内存改进时,例如,加载 16 x 16像素,但计算内部 14 x 14 .同样在这种情况下,忽略边界像素会生成更清晰的代码。

在这种情况下通常会怎么做?

有没有人通常使用我的方法忽略边界像素?

当然,我知道答案取决于问题的类型,即按像素添加两个图像没有这个问题。

提前致谢。

最佳答案

处理边框效果的常用方法是根据您的过滤器大小用额外的行和列填充原始图像。填充值的一些常见选择是:

  • 一个常数(例如零)
  • 根据需要多次复制第一行和最后一行/列
  • 在边框处反射图像(例如 column[-1] = column[1], column[-2] = column[2])
  • 包装图像值(例如 column[-1] = column[width-1], column[-2] = column[width-2])
  • 关于image-processing - 处理 CUDA 中的边界条件/Halo 区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5715220/

    相关文章:

    c++ - cvSnakeImage() OpenCV API 示例/文档

    image-processing - 在 AForge.NET 中使用霍夫变换检测图像中的同心圆

    image-processing - 使用 OpenCV 裁剪黑边

    cuda - 在 CUDA __device__ 函数的开始或结束处是否存在隐式屏障同步?

    c++ - openCV 2.4.9 与 CUDA 6.5 的编译错误

    cuda - 无法在cuda内核函数中使用printf

    python - Python 和 Julia 卷积之间的区别?

    python - 如何从时间序列信号中解卷积阶跃函数

    python - 使用 CV 从图像中提取树数

    php - 如何创建 TIFF 文件?