【问题标题】:What is the difference between filter2D, and Conv2D?filter2D 和 Conv2D 有什么区别?
【发布时间】:2020-03-01 08:56:07
【问题描述】:

当我必须使用 opencv 锐化图像时,我使用:

#Create our shapening kernel    
kernel_sharpening = np.array([[0,-1,0], 
                              [-1, 5,-1],
                              [0,-1,0]])

# applying the sharpening kernel to the input image & displaying it.
sharpened = cv2.filter2D(image, -1, kernel_sharpening)

在上面的代码中锐化的是我们的结果图像。正如您在上面的代码中看到的,我使用名为 filter2D 的 opencv 函数来执行输入图像与内核的卷积,结果我得到了锐化的图像。

最近我浏览了这个关于图像超分辨率的链接(link

发现 Keras 有类似 filter2D 的东西,Keras 称之为 Conv2D。

其语法如下:

dis2 = Conv2D(filters=64, kernel_size=3, strides=2, padding='same')(dis1)

我的问题是 opencv filter2D 和 Keras Conv2D 有什么区别?

(我假设两者都在图像与内核的卷积中起到相同的作用,我可能错了,请纠正)

【问题讨论】:

    标签: python opencv keras deep-learning computer-vision


    【解决方案1】:

    我不确定我是否收到您的问题,但是使用 OpenCV,您只能运行 constant 预定义的过滤器。但是使用 Keras,您可以学习特定于您的问题和数据集的权重!

    【讨论】:

    • 您能否展示如何使用 Conv2D 使用代码生成“锐化”图像(在上面的代码中描述)。这将解决我的问题。
    • 可以使用.set_weights 功能来做到这一点,并将权重设置为特定的过滤器矩阵,但我想说这不是 keras 的用途。它是为您将学习过滤器值而不是使用常量值进行卷积的用例而构建的。
    • 缺少代码并不能解决我的查询。如果您制作一个短代码 sn-p 来使用 Conv2D 锐化图像,我将非常感激,并解释它与 filter2D 的区别
    猜你喜欢
    • 2019-09-19
    • 2019-07-09
    • 1970-01-01
    • 2012-02-19
    • 2018-05-05
    • 2010-10-02
    • 2011-12-12
    • 2010-09-16
    • 2012-03-14
    相关资源
    最近更新 更多