- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经计算了索贝尔梯度的大小和方向。但我一直不知道如何进一步使用它来进行形状检测。
图像>灰度>索贝尔过滤>索贝尔梯度和方向计算>下一步?
使用的 Sobel 内核是:
Kx = ([[1, 0, -1],[2, 0, -2],[1, 0, -1]])
Ky = ([[1, 2, 1],[0, 0, 0],[-1, -2, -1]])
(我只能使用 Numpy,不能使用其他 Python 语言的库。)
import numpy as np
def classify(im):
#Convert to grayscale
gray = convert_to_grayscale(im/255.)
#Sobel kernels as numpy arrays
Kx = np.array([[1, 0, -1],[2, 0, -2],[1, 0, -1]])
Ky = np.array([[1, 2, 1],[0, 0, 0],[-1, -2, -1]])
Gx = filter_2d(gray, Kx)
Gy = filter_2d(gray, Ky)
G = np.sqrt(Gx**2+Gy**2)
G_direction = np.arctan2(Gy, Gx)
#labels = ['brick', 'ball', 'cylinder']
#Let's guess randomly! Maybe we'll get lucky.
#random_integer = np.random.randint(low = 0, high = 3)
return labels[random_integer]
def filter_2d(im, kernel):
'''
Filter an image by taking the dot product of each
image neighborhood with the kernel matrix.
'''
M = kernel.shape[0]
N = kernel.shape[1]
H = im.shape[0]
W = im.shape[1]
filtered_image = np.zeros((H-M+1, W-N+1), dtype = 'float64')
for i in range(filtered_image.shape[0]):
for j in range(filtered_image.shape[1]):
image_patch = im[i:i+M, j:j+N]
filtered_image[i, j] = np.sum(np.multiply(image_patch, kernel))
return filtered_image
def convert_to_grayscale(im):
'''
Convert color image to grayscale.
'''
return np.mean(im, axis = 2)
最佳答案
您可以使用形状的以下独特特征:
一 block 砖有几个直边(从四到六个,具体取决于视角);
球体有一个弯曲的边缘;
圆柱体有两个弯曲边缘和两个直边缘(尽管它们可以完全隐藏)。
使用二值化(基于亮度和/或饱和度)并提取轮廓。然后找到直线部分,可能使用 Douglas-Peucker 简化算法。最后分析直边和弯边的顺序。
<小时/>解决最终分类任务的一种可能方法是将轮廓表示为一串 block ,无论是直的还是弯曲的,并粗略地指示长度(短/中/长)。由于分割不完善,每个形状都会对应一组模式。
您可以通过训练阶段来学习最多的模式,然后使用字符串匹配(其中字符串被视为循环)。可能会有需要仲裁的关系。另一种选择是近似字符串匹配。
关于python - 如何使用 Sobel 算子在图像中查找基本形状(砖 block 、圆柱体、球体)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52266119/
有一堵大小为4xN的墙.我们有无数 block 大小为 4x1 的砖 block 和 1x4 .砖 block 在墙上的排列方式总共有多少种,每次都会产生新的排列方式? 对于 N = 1 , 砖可以铺
所以我的问题是球只是穿过砖 block ,什么也没有发生。我将把整个代码放在jsbin中,这里我只发布不起作用的部分。正如你所看到的,我有一个弹跳球、一个 Racket 、砖 block 和一个ani
是否有任何 jQuery 或其他插件可以让我像这样显示缩略图: http://hellocute.tumblr.com/archive 我知道,这个例子很酷 :)。无论如何,这是很酷的砖 block
我必须承认,JavaScript 有时会有奇怪的行为。 var Npc = function() { this.name='Hello world'; } Npc.attr='my new a
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 8 年前。 Improve this qu
在云中,我们有一组 glusterfs 节点(参与 gluster 卷)和客户端(挂载到 gluster 卷)。这些节点是使用 terraform hashicorp 工具创建的。 集群启动并运行后,
我目前正在用 JavaScript 语言编写一个 BrickBreaker 游戏。这是我使用该语言的第一个项目之一,我遇到了一些困难。这是我的代码:
我已经计算了索贝尔梯度的大小和方向。但我一直不知道如何进一步使用它来进行形状检测。 图像>灰度>索贝尔过滤>索贝尔梯度和方向计算>下一步? 使用的 Sobel 内核是: Kx = ([[1, 0, -
我在 Blocks(和 Theano)中设计了一个非常简单的循环神经网络。作为成本函数,我决定使用平方误差函数,其简单定义为 (y-y')^2。我想计算整个小批量的平均成本。 下面的代码是一个几乎可以
我一直在为 Uni(经典街机游戏 Breakout)开发 Java 项目,到目前为止已经成功创建了球棒和球对象,并且它们按预期工作。我想使用数组来实现砖墙,因为让每个砖 block 都有自己的对象会导
我是一名优秀的程序员,十分优秀!