Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >与图像不同的是角点的conv2D

与图像不同的是角点的conv2D
EN

Stack Overflow用户
提问于 2019-07-01 00:40:39
回答 1查看 278关注 0票数 1

的目标是尝试在模型的第一层上使用自定义权重来充分填充高通滤波器的功能--使模型的第一层与图像的高通滤波器相同。

1.首先,类似的解决方案是:在图像处理中使用高通滤波器,生成新的图像,并将其应用于模型中。--这是必须使用的图像处理,这是时间的成本。

2.我要设置Conv2D的a层,它也可以高传递图像。使用自定义筛选器(作为初始化器)。其基本原理是滤波器和conv2D都采用卷积规则。

但结果与第一解不同。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#The image processing code:
    kernel55 = np.array([[-1, 2, -2, 2, -1], 
                         [2, -6, 8, -6, 2], 
                         [-2, 8, -12, 8, -2], 
                         [2,-6, 8, -6, 2],
                         [-1, 2, -2, 2, -1]])/12
        # load the image, pre-process it, and store it in the data list
        image = cv2.imread('1.pgm',-1)
        image = ndimage.convolve(image, kernel55)
        print(image)

#the first layer of the Model:

    def kernel_init(shape):
        kernel = np.zeros(shape)
        kernel[:,:,0,0] = np.array([[-1, 2, -2, 2, -1], 
                             [2, -6, 8, -6, 2], 
                             [-2, 8, -12, 8, -2], 
                             [2,-6, 8, -6, 2],
                             [-1, 2, -2, 2, -1]])/12
        return kernel
    #Build Keras model
    model = Sequential()
    model.add(Conv2D(1, [5,5], kernel_initializer=kernel_init, 
                     input_shape=(256,256,1), padding="same",activation='relu'))
    model.build()

test_im=cv2.imread('1.pgm',-1)  # define a test image
test_im=np.expand_dims(np.expand_dims(np.array(test_im),2),0)
out = model.predict(test_im)

问题是:使用图像处理能够产生合适的高通率图像,但使用Conv2D的结果并不相同。

我假设两个结果应该是相同或相似的,结果不是.

为什么,我的想法有什么问题吗?

EN

回答 1

Stack Overflow用户

发布于 2019-07-01 02:48:59

对这个不完整的答案表示歉意,但我有一些部分有效的东西,还有一些解释。下面是代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import cv2
import numpy as np
import scipy.ndimage as ndimage
from keras.models import Sequential
from keras.layers import Dense, Activation, Conv2D

#The image processing code:
#the first layer of the Model:

def kernel_init(shape):
    kernel = np.zeros(shape)
    kernel[:,:,0,0] = np.array([[-1, 2, -2, 2, -1],
                         [2, -6, 8, -6, 2],
                         [-2, 8, -12, 8, -2],
                         [2,-6, 8, -6, 2],
                         [-1, 2, -2, 2, -1]])
    #kernel = kernel/12
    #print("Here is the kernel")
    #print(kernel)
    #print("That was the kernel")
    return kernel

def main():
    print("starting")
    kernel55 = np.array([[-1, 2, -2, 2, -1],
                         [2, -6, 8, -6, 2],
                         [-2, 8, -12, 8, -2],
                         [2,-6, 8, -6, 2],
                         [-1, 2, -2, 2, -1]])
    # load the image, pre-process it, and store it in the data list
    image = cv2.imread('tiger.bmp',-1)
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    myimage = cv2.resize(gray,(256,256))
    myimage = myimage
    print("The image")
    #print(myimage)
    print("That was the image")
    segment = myimage[0:10, 0:10]
    print(segment)

    imgOut = ndimage.convolve(myimage, kernel55)
    #imgOut = imgOut/12
    print(imgOut.shape)
    cv2.imwrite('zzconv.png', imgOut)

    #print(imgOut)
    segment = imgOut[0:10, 0:10]
    print(segment)

    #Build Keras model
    print("And the Keras stuff")
    model = Sequential()
    model.add(Conv2D(1, [5,5], kernel_initializer=kernel_init, input_shape=(256,256,1), padding="same"))
    model.build()

    test_im=myimage
    test_im = test_im.reshape((1, 256, 256, 1))
    print(test_im.shape)
    imgOut2 = model.predict(test_im)
    imgOut2 = imgOut2.reshape(256, 256)
    print(imgOut2.shape)
    #imgOut2 = imgOut2 / 12
    imgOut2[imgOut2 < 0] += 256

    cv2.imwrite('zzconv2.png', imgOut2)

    #print(imgOut2)
    segment = imgOut2[0:10, 0:10]
    print(segment)

以下是要注意的事情:

  • 这是一个图像,像素是字节,任何大于字节的东西都可能被截断,并且可能被不正确地截断(请注意,我必须删除内核上的"/12“。这就是为什么我添加了"+=256“部分。
  • 您不能假设“填充”区域将产生相同的结果。我不知道keras和opencv用于填充的值是什么,但它似乎不是相同的值。您的输出图像应该仅与3,3相同。
  • 在使用之前先检查一下内核。在我的系统中它被四舍五入到-1和0。大概是使用整数运算。添加“核=内核/12”行对内核给出了更正确的结果,但是卷积函数中的舍入似乎又把事情搞砸了,所以我没有使用"/12“。
  • Relu把事情搞砸了,这也是因为舍入(没有正确截断为无符号字节的任何低于零的字符都会被激活函数过滤掉)。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56832504

复制
相关文章
opencv图像角点提取
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/179735.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/27
5410
图像匹配中Harris角点特征提取
在进行图像检测或者是识别的时候,我们需要提取出一些有特征的点加以识别,最常用的就是基于点的识别。这里所谓的点,其实就是一些重要的点,比如轮廓的拐角,线段的末端等。这些特征比较容易识别,而且不容易受到光照等环境的影响,因此在许多的特征匹配算法中十分常见。
mythsman
2022/11/14
8540
图像匹配中Harris角点特征提取
CNN 是如何处理图像中不同位置的对象的?
AI 研习社按:这篇博客来自 Jetpac(现被谷歌收购) CTO、苹果毕业生、TensorFlow 团队成员 Pete Warden。文中讨论了当要识别的对象出现在图像中的不同位置时,CNN 是如何应对、识别的。Pete Warden 给出的解释也许算不上完善,而且也仍然无法保证能够消除位置的影响,但这是一个不错的开始。AI 研习社全文编译如下。
AI研习社
2018/07/26
1.7K0
CNN 是如何处理图像中不同位置的对象的?
干货 | CNN 是如何处理图像中不同位置的对象的?
AI 科技评论按:这篇博客来自 Jetpac(现被谷歌收购) CTO、苹果毕业生、TensorFlow 团队成员 Pete Warden。文中讨论了当要识别的对象出现在图像中的不同位置时,CNN 是如何应对、识别的。Pete Warden 给出的解释也许算不上完善,而且也仍然无法保证能够消除位置的影响,但这是一个不错的开始。AI 科技评论全文编译如下。
AI科技评论
2018/07/27
1.8K0
干货 | CNN 是如何处理图像中不同位置的对象的?
角点精确检测
import cv2 import numpy as np from skimage.io import imread from skimage.color import rgb2gray from skimage.measure import ransac from skimage.util import img_as_float from matplotlib import pylab as pylab from skimage.feature import corner_harris, corner
裴来凡
2022/05/28
5670
角点精确检测
Harris角点学习[通俗易懂]
人们普遍认为角点是二维图像亮度变化剧烈的点或图像边缘曲线上曲率极大值的点。这些点在保留图像图形重要特征的同时,可以有效地减少信息的数据量,使其信息的含量很高,有效地提高了计算的速度,有利于图像的可靠匹配,使得实时处理成为可能。其在三维场景重建、运动估计、目标跟踪、目标识别、图像配准与匹配等计算机视觉领域起着非常重要的作用。
全栈程序员站长
2022/11/09
2930
Harris角点学习[通俗易懂]
OpenCV中检测ChArUco的角点(2)
ArUCo标记板是非常有用的,因为他们的快速检测和多功能性。然而,ArUco标记的一个问题是,即使在应用亚像素细化后,其角点位置的精度也不太高。相反,棋盘图案的角点可以更精确地细化,因为每个角点被两个黑色正方形包围。然而,寻找棋盘图案并不像寻找aruco棋盘那样通用:它必须是完全可见的,并且不允许遮挡。
点云PCL博主
2022/02/10
2.9K0
OpenCV中检测ChArUco的角点(2)
FASTN如何快速的检测出角点
1. FASTN算法的动机 大部分特征检测算法的效果较好,但是达不到实时,因此提出FAST (Features from Accelerated Segment Test) 2. FASTN算法的基本原理 用一句话来讲FASTN算法的原理就是:看一个像素周围有一定数量的像素与该点像素值不同,则认为其为角点。步骤如下: 1)在图像中任选一点p, 假定其像素(亮度)值为 Ip 2)以r为半径画圆,覆盖p点周围的M个像素,如下图所示: r=3, M=16 3)设定阈值t,如果这周围的16个像素中有连续的N个像素的
智能算法
2018/04/02
9030
FASTN如何快速的检测出角点
点集合的三角剖分
点集合的三角剖分是指如何将一些离散的点集合组合成不均匀的三角形网格,使得每个点成为三角网中三角面的顶点。这个算法的用处很多,一个典型的意义在于可以通过一堆离散点构建的TIN实现对整个构网区域的线性控制,比如用带高程的离散点构建的TIN来表达地形。
charlee44
2023/10/26
3200
点集合的三角剖分
图像特征点的跟踪
http://mpvideo.qpic.cn/0bc3kqaacaaaqmaktupovrqvavgdafkaaaia.f10002.mp4?dis_k=d2c8e1e90b7f1aefb319e36
点云PCL博主
2022/04/06
3980
图像特征点|SIFT特征点位置与方向
关键点是由DOG空间的局部极值点组成的,关键点的初步探查是通过同一组内各DoG相邻两层图像之间比较完成的。为了寻找DoG函数的极值点,每一个像素点要和它所有的相邻点比较,看其是否比它的图像域和尺度域的相邻点大或者小。如图下图所示,中间的检测点和它同尺度的8个相邻点和上下相邻尺度对应的9×2个点共26个点比较,以确保在尺度空间和二维图像空间都检测到极值点。
小白学视觉
2019/10/23
2.1K0
【5】OpenCV2.4.9实现图像拼接与融合方法【SURF、SIFT、ORB、FAST、Harris角点 、stitch 】
本文出现的数据结果和码源见:https://download.csdn.net/download/sinat_39620217/18269470
汀丶人工智能
2022/12/21
2.8K0
【5】OpenCV2.4.9实现图像拼接与融合方法【SURF、SIFT、ORB、FAST、Harris角点 、stitch 】
InnoDB与MyISAM的最大不同有两点
行级锁与表级锁本来就有许多不同之处,另外,事务的引入也带来了一些新问题。下面我们先介绍一点背景知识,然后详细讨论InnoDB的锁问题。
用户7999227
2021/10/08
3460
基于角点的Anchor-Free目标检测
基于角点的目标检测方法通过组合从特征图中学习到的角点对来预测边框。这种方法不需要设计锚框, 减少了对锚框的各种计算, 从而成为生成高质量边框的更有效的方法。 基于角点Anchor-Free 目标检测模型主要有 CornerNet 和 CornerNet 的优化CornerNet-Lite。
玖柒的小窝
2021/10/22
5210
基于角点的Anchor-Free目标检测
图像卷积与滤波的一些知识点
之前在学习CNN的时候,有对卷积进行一些学习和整理,后来就烂尾了,现在稍微整理下,先放上来,以提醒和交流。
bear_fish
2018/09/19
1.3K0
图像卷积与滤波的一些知识点
不同区域是呈现出不同的效果
环境光是没有特定方向的光源,会均匀的照亮场景中的所有物体,主要是均匀整体改变Threejs物体表面的明暗效果,这一点和具有方向的光源不同,遴选公务员比如点光源可以让物体表面不同区域明暗程度不同 环境光影响整个场景,它的光线没有特定来源但是又无处不在,它不能影响阴影生成,因为它没有方向,并且不能作为唯一光源,使用其他光源的同时使用 THREE.AmbientLight,目的是弱化阴影和添加一些颜色,同一平面的不同位置与点光源光线入射角是不同的,点光源照射下,同一个平面不同区域是呈现出不同的明暗效果http:/
用户7737280
2021/12/02
5340
41. 图像特征点、投影变换与图像拼接
在32. 镜头、曝光,以及对焦(下)中,我给你介绍了各种各样的相机镜头,也介绍了视场角(FOV)这个概念。现在咱们手机上的主摄像头一般FOV是七、八十度左右,有的更小一些。但人类的视觉系统FOV可以达到
HawkWang
2020/05/07
1.5K0
小程序map切换不同的标记点
图中的mapchart就是一个自定义组件,自定义组件为了规范通常放在conponents里。
算法与编程之美
2021/11/23
8560
Python数据分析中图像处理的实用技术点:图像加载与保存、图像转换与增强、特征提取与描述
图像处理是在计算机视觉和图像分析中的重要领域。Python作为一种强大的编程语言,在数据分析中提供了许多实用的技术点,用于图像的加载、处理和分析。本文将详细介绍Python数据分析中图像处理的实用技术点,包括图像加载与保存、图像转换与增强、特征提取与描述等。
网络技术联盟站
2023/07/03
3850
Python数据分析中图像处理的实用技术点:图像加载与保存、图像转换与增强、特征提取与描述
OpenCV中保存不同深度图像的技巧
很多人开始学习OpenCV之后,接触前面几个API就包括imwrite函数,而且很快知道了如何去保存Mat对象为图像,常规代码如下:
OpenCV学堂
2019/06/10
10.9K1
OpenCV中保存不同深度图像的技巧

相似问题

不同角点的JavaFX图像

24

与角js不同的是使用指令

26

pytorch conv2d与numpy的结果不同

111

Conv2D角的Regulizer

11

为什么DrawArc/DrawPie角点与相同角度的实际弧点不同?

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文