问题标签 [sobel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
595 浏览

renderscript - RenderScript Sobel 实现,不同的输入和输出类型

我想在 RenderScript 中实现一个 Sobel 过滤器,其中 uchar4 作为输入分配,float[] 作为输出分配。我不太确定是否可以在 RenderScript 中为输入和输出分配使用不同的类型。我想自己开发解决方案,但如果能获得一些关于解决该问题的最佳 Renderscript 结构的建议,我将不胜感激。我在某处读到,可以使用

浮动属性((内核))根(uchar4 *v_in,uint32_t x,uint32_t y){}

你会推荐这样的方法还是可以在不使用实际内核的情况下完成,即只是一个函数?提前致谢。

我的 Sobel(X 方向)的 rs 代码现在如下所示:

我正在努力从Java端传递参数:

I understand that, in order to use rsGetElementAt function (to access neighboring data within the kernel) I need to set the input allocation as a script global as well (rs_allocation gIn in rs code). However, I'm not sure how to handle this "double allocation" from the Java side. Also the outAllocation Statement in the Java code is probably not correct. Specifiyally I am not sure, whether the Kernel will returned this as float[] or as float[][].

0 投票
1 回答
263 浏览

matlab - MATLAB:自适应类sobel边缘检测

请帮忙!我有一个类似于附加的图像(从暗到亮的渐变,从南到北移动,带有一条有趣的水平白线)我试图从图像底部开始沿着 y 轴上的每个向量查看找到白线的底部。我可以使用类似索贝尔的边缘检测器,但是白线以南有黑点。所以进入一个点会给我的检测器一个很大的负值,我可以忽略它,但是当它离开黑点并返回渐变时我从检测器中得到一个很大的正值,我无法将其与白线底部所在的边缘区分开来。我试图放在一起的代码同时获取每个点的 sobel 值和强度,并添加到两个不同的向量(我稍后使用带有 sobel 值的向量来定位每个 y 轴向量的最大值/白线的底边)..如果有一个很大的负 sobel 值(即进入一个黑点),我会在点开始之前保持最后一个强度点,并使用“while”用零填充 sobel 向量,向上移动直到内核安全退出的黑点(强度值大于进入黑点之前),此时我开始再次收集实际的索贝尔值。我正在加载高度为 715 的图像,但我的 sobel 向量最终比这大得多......不知道我做错了什么:进入黑点)我在点开始之前保持最后一个强度点并使用“while”用零填充sobel向量,向上移动直到内核安全地离开黑点(强度值更大比进入黑点之前),此时我再次开始收集实际的索贝尔值。我正在加载高度为 715 的图像,但我的 sobel 向量最终比这大得多......不知道我做错了什么:进入黑点)我在点开始之前保持最后一个强度点并使用“while”用零填充sobel向量,向上移动直到内核安全地离开黑点(强度值更大比进入黑点之前),此时我再次开始收集实际的索贝尔值。我正在加载高度为 715 的图像,但我的 sobel 向量最终比这大得多......不知道我做错了什么:

在此处输入图像描述

0 投票
1 回答
604 浏览

c# - OpenCV:Sobel滤波器不是旋转不变的

我正在使用 Sobel 运算符通过 EmguCV 3.0(OpenCV 的 .NET Wrapper)检测灰度图像中的边缘。

我正在使用的代码是

这是预处理后的图像(灰色)

这就是我得到的(索贝尔)

如您所见,右上角和左下角的边缘非常弱。我首先想到,它可能与原始图像有关,所以我将它旋转了 180 度并再次运行 sobel-filter。结果在右上角和左下角的边缘仍然很弱(不幸的是,我不允许在这里发布两个以上的链接,所以我不能给你看)。

所以我的问题是:这是一个错误,还是我使用 sobel 过滤器错误?当在二维中运行时,它不应该是旋转不变的吗?我该如何解决它,才能看到这两个边缘与其他边缘一样坚固?

0 投票
3 回答
3619 浏览

c++ - Sobel derivative in OpenCV

I have been tasked with making my own Sobel method, and not use the cv::Sobel found in OpenCV. I tried implementing one I found at Programming techniques

When I run the program, cv::Mat throws an error, however. Anyone have any idea why?

Sobel method:

Calling and processing it in another function:

Main:

The absVal method:

When run it throws this error:

and points to here:

If anyone have any advice or ideas what I am doing wrong it would be greatly appreciated!

0 投票
1 回答
259 浏览

image - sobel滤波器的Scala实现

我正在 IT 学校项目中寻求帮助。我们需要创建一个程序来检测卫星照片中的道路。我们小组决定使用一个功能来检测边缘。我们在 Internet 上搜索不同的解决方案和过滤器,我们决定使用 Sobel 过滤器。

我们曾尝试在 Scala 中实现此过滤器,但没有成功。我们使用不同的网页来帮助我们,其中一些在 StackOverflow(这里)。我们使用这个来帮助我们并尝试翻译代码:Sobel filter in Ruby

此实现返回的图像只是具有黑白像素的图像,我不知道为什么。我没有图像处理方面的经验,我们在 8 周前学习了 Scala,所以这无济于事。对不起,我的英语不是很完美,如果我写得不好,请原谅我。

0 投票
1 回答
303 浏览

c++ - 我在 pgm 图像上有一个用于 sobel 运算符的 c++ 代码,我的代码编译但未能给我所需的结果

所以这里是执行 sobel 过程的函数:

我在 pgm 图像上有一个用于 sobel 运算符的 c++ 代码,我的代码编译但未能给我所需的结果。谁能告诉我出了什么问题?

0 投票
0 回答
721 浏览

point-clouds - 边缘检测点云

我正在开发一个从激光测距设备过滤点云的应用程序。它是一个只有 3x176x132 的小阵列,我试图在垃圾箱内找到零件并挑选最多的零件。到目前为止,我一直在尝试将数据过滤成一种可以被更传统的视觉算法处理的方式。我一直在对距离数据使用 Sobel 算子并对其进行规范化,这就是我想出的

索贝尔距离数据

应用于 PMD 幅度的相同滤波器

索贝尔振幅数据

我的问题是我觉得我没有从距离数据中获得足够的数据。当我探测实际高度值时,我看到边缘周围部分的厚度有所下降,但这并未反映在结果中。我认为这与图像中最大距离变化为 800 毫米而部分只有 10 毫米这一事实有关,但我确信必须有更好的方法来过滤它。

有什么建议么

0 投票
1 回答
97 浏览

matlab - 对图像片段应用过滤器

有一个图像片段A = [7 8 4; 8 6 3; 8 5 1],显示应用不同过滤器的结果。

  1. 应用 3 * 3 均值滤波器
  2. 应用 3 * 3 拉普拉斯滤波器
  3. 在水平方向应用 3 * 3 Sobel 滤波器测量梯度

以下是我的问题:

  1. 9 个像素的总和是 50,50 / 9 = 5,所以中心像素的结果应该是 5。但是中心周围的像素呢?
  2. 根据函数,很容易得到中心像素的值应该是8 + 5 + 8 + 3 - 4 * 6 = 0,但是中心周围的像素呢?我可以只复制原始值吗,因为我认为它只是图像片段。
  3. 根据 Sobel 算子,Gx = [-1 0 1; -2 0 2; -1 0 1]计算我需要计算的结果Gx * A。但我混淆了乘法。那是矩阵的传统乘法吗?我不知道如何执行此步骤。
0 投票
1 回答
252 浏览

python - 在图像阵列上应用边缘检测

我正在尝试在下面的代码中进行边缘检测:

我正在尝试使用 sobel 进行边缘检测,但据我所知,sobel 用于 1 张图像。我如何将它应用于多个图像或图像数组?

0 投票
1 回答
1037 浏览

c++ - 错误的 sobel 边缘检测(opencv 错误:断言失败(dims<=2&&data&&(unsigned)i0)

现在我正在尝试为 sobel 边缘检测编写代码。但是错误块打开图像和sobel边缘图像。当我调试我的代码时,窗口显示如下:

所以我无法进入下一步。