美文网首页
Chapter 2.1 实现一个均值滤波器

Chapter 2.1 实现一个均值滤波器

作者: vincehxb | 来源:发表于2017-06-16 15:30 被阅读0次

        本节我们利用tf的一些函数来实现一个最简单的均值滤波器对图片进行滤波,假设图片的大小为16*16*1,设计一个模块来实现均值滤波

    首先介绍一下tf.nn.conv2d函数

    conv2d(

    input,filter,strides,padding,use_cudnn_on_gpu=None,data_format=None,name=None

    )

    其中input应该为四维tensor: [batch, in_height, in_width, in_channels]

    filter为四维tensor:[filter_height, filter_width, in_channels, out_channels]

    padding可以选择:‘SAME'也就是使得输入输出W,H不改变。'VALID'指不加padding

    关于padding,查看api可以看到,'SAME'的意思并不是说输入输出不变

    For the'SAME'padding, the output height and width are computed as:

    out_height=ceil(float(in_height)/float(strides[1]))

    out_width=ceil(float(in_width)/float(strides[2]))

    也就是说与strides有关,而valid是指不加padding

    strides强制要求首尾必须为一:[1,s,s,1]

    以一个错误为例子,学习conv2d的用法:

    想法:输入一个 [1,32,32,3]的全部为4的tensor,滤波器尺寸为[2,2,3,6]其值全部为1,步长为2.

    希望输出[1,32,32,,6] 其值全部为1

    实际上:输出 [1,16,16,,6] 其值全部为12

    问题:

    1.关于输出值12 :这里是卷积的运算概念没有掌握,filter为6个 [2,2,3]的滤波器,每一个滤波器应该对3个channel的值进行计算:所以是(0.25*4+0.25*4+0.25*4+0.25*4)*3=0.25*4*4*3=12

    2.关于padding:上面也提到了,'SAME’并不表示输入输出w,h一致,而是与步长有关

    相关文章

      网友评论

          本文标题:Chapter 2.1 实现一个均值滤波器

          本文链接:https://www.haomeiwen.com/subject/rzzdqxtx.html