【发布时间】:2020-11-29 21:16:36
【问题描述】:
问题
我正在尝试从头开始实现图像渐变。我知道有多种方法可以做到这一点(包括 Sobel 和其他过滤器)。我的问题是关于图像渐变的 Tensorflow 实现。
TF 通过这种方法实现图像渐变,如here 所示。所以根据 TF 文档,对于虚拟输入,
[[ 0. 1. 2. 3. 4.]
[ 5. 6. 7. 8. 9.]
[10. 11. 12. 13. 14.]
[15. 16. 17. 18. 19.]
[20. 21. 22. 23. 24.]
dy 和 dx 分别是,
dy = [[5. 5. 5. 5. 5.]
[5. 5. 5. 5. 5.]
[5. 5. 5. 5. 5.]
[5. 5. 5. 5. 5.]
[0. 0. 0. 0. 0.]]
dx = [[1. 1. 1. 1. 0.]
[1. 1. 1. 1. 0.]
[1. 1. 1. 1. 0.]
[1. 1. 1. 1. 0.]
[1. 1. 1. 1. 0.]],
但是当使用 Sobel 过滤器时(如图所示 here)我的输出是,
dx = [[[[-8., -8., -8.],
[-8., -8., -8.],
[-8., -8., -8.]]]]
dy = [[[[-40., -40., -40.],
[-40., -40., -40.],
[-40., -40., -40.]]]]
虽然我知道这两种方法都是公认的计算梯度的方法,但我的问题是,
- 为什么这两种方法的结果不一样?
- 有没有办法将一种方法的结果转换成另一种方法?
【问题讨论】:
标签: python tensorflow image-processing computer-vision