在Tensorflow中是否有任何卷积方法将Sobel滤波器应用于图像img(float32和rank 2类型的张量)?
sobel_x = tf.constant([[-1, 0, 1], [-2, 0, 2], [-1, 0, 1]], 'float32')
result = tf.convolution(img, sobel_x) # <== TO DO THIS
我已经看过tf.nn.conv2d,但我看不出如何将它用于此操作.有没有办法使用tf.nn.conv2d来解决我的问题?
解决方法:
也许我在这里错过了一个微妙之处,但似乎你可以使用tf.expand_dims()
和tf.nn.conv2d()
将Sobel滤镜应用于图像,如下所示:
sobel_x = tf.constant([[-1, 0, 1], [-2, 0, 2], [-1, 0, 1]], tf.float32)
sobel_x_filter = tf.reshape(sobel_x, [3, 3, 1, 1])
sobel_y_filter = tf.transpose(sobel_x_filter, [1, 0, 2, 3])
# Shape = height x width.
image = tf.placeholder(tf.float32, shape=[None, None])
# Shape = 1 x height x width x 1.
image_resized = tf.expand_dims(tf.expand_dims(image, 0), 3)
filtered_x = tf.nn.conv2d(image_resized, sobel_x_filter,
strides=[1, 1, 1, 1], padding='SAME')
filtered_y = tf.nn.conv2d(image_resized, sobel_y_filter,
strides=[1, 1, 1, 1], padding='SAME')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。