对于卷积神经网络中垂直和水平特征过滤器的理解

对于垂直和水平特征过滤器的理解

1、首先是sobel算子,用于检测图像的轮廓

开始使用的是垂直特征检测的过滤器,可以识别图像轮廓

后来使用了水平特征检测的过滤器,也可以识别图像轮廓

import tensorflow as tf
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import numpy as np
​
myimg = mpimg.imread("images/te.jpg")
plt.imshow(myimg)
plt.axis("off")
plt.show()
print(myimg.shape)
​
full = np.reshape(myimg,[1,566,500,3])
inputfull = tf.Variable(tf.constant(1.0,shape=[1,566,500,3]))
# 可能是因为对于大的图片来说,垂直特征过滤器和水平特征过滤器能起到类似作用,
# 因为对于颜色变化的区域,很少是非常垂直或者平行的,都存在斜角,并且像素点的显示是矩形,也就是会有在水平和垂直方向都有颜色的变化(下降幅度不同),能检测出对应特征,但可以发现对相应的特征检测更明显
# filter = tf.Variable(tf.constant([[-1.0,-1.0,-1.0],[0,0,0],[1.0,1.0,1.0],[-2.0,-2.0,-2.0],[0,0,0],
#                                   [2.0,2.0,2.0],[-1.0,-1.0,-1.0],[0,0,0],[1.0,1.0,1.0]],shape=[3,3,3,1]))
filter = tf.Variable(tf.constant([[-1.0,-1.0,-1.0],[-2.0,-2.0,-2.0],[-1.0,-1.0,-1.0],[0,0,0],[0,0,0],
                                  [0,0,0],[1.0,1.0,1.0],[2.0,2.0,2.0],[1.0,1.0,1.0]],shape=[3,3,3,1]))
​
op = tf.nn.conv2d(inputfull,filter,strides=[1,1,1,1],padding='SAME')
o = tf.cast(((op - tf.reduce_min(op))/(tf.reduce_max(op)-tf.reduce_min(op))) * 255,tf.uint8)
​
with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    t,f = sess.run([o,filter],feed_dict={inputfull:full})
    t = np.reshape(t,[566,500])
    plt.imshow(t,cmap="Greys_r")
    plt.axis("off")
    plt.show()

2、个人理解

可能是因为对于大的图片来说,垂直特征过滤器和水平特征过滤器能起到类似作用,因为对于颜色变化的区域,很少是非常垂直或者平行的,都存在斜角,并且像素点的显示是矩形,也就是会有在水平和垂直方向都有颜色的变化(下降幅度不同),能检测出对应特征,但可以发现对相应的特征检测更明显

对应的图片如下:

  • 原图

原图

 

  • 垂直检测过滤器

垂直检测

 

  • 水平检测过滤器

水平检测

 

  • 原图局部区域放大

原图局部放大

 

3、总结

  1. 首先可以发现垂直特征检测和水平特征检测虽然都得到了人物的大致轮廓,但是轮廓的细节是存在不同的,即对于原图中色彩变化是很水平或者垂直的,则必须要在相应的特征检测器中才能识别出。

  2. 从原图放大的细节来看,只要不是绝对水平或者垂直的色彩变化,都是想两个方向(水平和垂直)共同变化的,只是变化的幅度不同(即色差不同)。考虑到像素点在屏幕上的显示是一个个小方块,呈矩形状,而过滤器就是以像素点为单位组成的方块,便能对两个方向的色差变化做出识别(卷积操作)。而对于绝对水平的区域,垂直过滤器自然无法识别出特征(无法通过卷积得到分界线)。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值