问题标签 [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 回答
912 浏览

opengl - GLSL中纹理的平滑轮廓检测

我想从纹理生成平滑(一致的宽度和连续的)轮廓,例如以下纹理:

在此处输入图像描述

我目前运行一个着色器,它进行非常基本的边缘检测,最终得到以下结果:

在此处输入图像描述

显然生成的轮廓并不干净,但即使应用适当的 sobel 过滤也不能增强那么多结果。

我想获得几乎像素完美的轮廓,如果可能的话,最好也忽略输入纹理中的噪声。

谢谢!

编辑:可能需要添加一些平滑的步骤,例如: https ://www.shadertoy.com/view/4ssSRl

0 投票
1 回答
2753 浏览

python - 如何使用 Keras 实现自定义的基于 sobel 滤波器的损失函数

我是 DL 和 Keras 的新手,目前我正在尝试在 Keras 中实现一个基于 sobel-filter 的自定义损失函数。

这个想法是计算索贝尔滤波预测和索贝尔滤波地面实况图像的均方损失。

到目前为止,我的自定义损失函数如下所示:

使用这个损失函数会导致这个错误:

使用我发现的调试器,它y_true.shape只会返回None- 很好。但是当我替换y_true.shape为例如1它看起来像这样for i in range (0,1):时,会发生另一个错误:

在这里,我不确定为什么轴似乎无效?

谁能帮我弄清楚如何实现该损失函数?非常感谢您的帮助!

0 投票
1 回答
473 浏览

c - Sobel梯度算子:没有得到想要的输出

我已在维基百科( Bikesgray)的图像上应用了 sobel 运算符。但我没有得到想要的输出。我的输出比维基百科中显示的输出更亮。我的代码在 .pgm 文件上运行。

这是我的代码的输出和维基百科中显示的输出 在此处输入图像描述

这是我的 C 代码:

注意: 每个 temp[ i ][ j ] > 255 ==> temp[ i ][ j ] = 255

0 投票
1 回答
1324 浏览

java - 以 BufferedImage.TYPE_BYTE_BINARY 作为输出的 Sobel 边缘检测

我正在做一项学校作业,我们应该对图像进行 sobel 边缘检测。我们应该使用 sobel 核 och 进行卷积,然后计算每个像素的梯度幅度。之后,我们应该使用阈值方法给像素值 255(白色)或 0(黑色),具体取决于阈值。边缘检测的输出图像必须BufferedImage.TYPE_BYTE_BINARY类型。我使用灰度图像作为输入,但最终结果看起来很奇怪..它绝对没有检测到边缘。

我四处搜索并设法找到工作代码(在这里,请参阅标记的正确答案),但是,这里的输出图像是 BufferedImage.TYPE_INT_RGB 类型,这是不允许的......在这个问题中,也使用了 BufferedImage。 TYPE.INT.RGB 作为边缘检测的输入。

非常感谢您帮助解决此问题!

我执行程序时的结果。边缘检测结果在最右边。 在此处输入图像描述

边缘检测结果应该是什么样子。 在此处输入图像描述

我的代码:

0 投票
0 回答
1948 浏览

r - R中的Sobel边缘检测器?

我正在研究关于 Sobel 边缘检测的 R 任务。不幸的是,我关注的视频教程将 R 用于其他所有任务,但切换到 python 进行图像处理 - 我猜他没有找到任何用于图像卷积类型工作的有用 R 包(本教程来自去年)。我已经尝试过EBImagemagick(这个似乎是新的),但没有找到太多。这个魔法小插图谈论image_convolve('Sobel')(大约在页面的一半处)但仅适用于垂直边缘,而不是水平边缘。有人可以推荐一些我可以使用的好材料吗?我对图像处理相当陌生。

更新:

我已经设法使用magick包(粘贴在下面的代码)分别检测垂直和水平边缘,但不知道如何将它们组合起来生成单个图像

在教程中,接下来我需要组合imgHimgV计算这些边缘之间的欧几里得距离,但dist()不适用于图像对象本身。我需要从这些图像中获取数据,但不知道如何。类似于imageData()in package 的东西会有所帮助,但在.It 中EBImage找不到它。它有功能,但它的输出看起来很复杂。magickimage_data()

更新(2):

我(希望)得到了我想要的EBImage包(下面的代码)。magick一旦我弄清楚如何从如上所述的边缘图像中获取像素数据,以及如何将最终的边缘数据转换回图像,我仍然希望它与包一起使用。

谢谢。

0 投票
0 回答
318 浏览

python - 如何制作索贝尔滤波器并将偏导数和幅度应用于图像

我目前正在尝试在python中实现sobel过滤器,在下面的代码中我试图解释sobel过滤器是如何工作的,但是我不明白幅度对图像的影响,以及如何应用它

抱歉,如果以前有人问过这个问题,但是我能找到的唯一问题并没有证明我有任何帮助

在这个话题上,我也一直在做同样的事情,但使用有限的近似值,但是我不明白它们的结果有何不同(也许一旦我让 sobel 过滤器工作我会这样做),但如果有人也可以解释一下我会很高兴的。

0 投票
1 回答
388 浏览

java - Sobel 边缘检测会产生噪声

我试图在java中实现Sobel边缘检测。它有点工作,但我得到了很多看似随机的噪音......

我将图像加载为 BufferedImages 并首先将它们转换为灰度图像(通过我在网上找到的算法)。之后,我计算 x 和 y 方向的边缘。

这是我的代码:

这是我正在谈论的噪音的一个例子:

莉娜的形象:

在此处输入图像描述

我不知道为什么我会听到这么多噪音。任何建议表示赞赏。

0 投票
0 回答
41 浏览

matlab - 使用边缘检测和图像方向问题逐行剪切图像

我正在将大发票图像逐行转换为使用 ocr 获取文本。我正在使用 sobel egde 检测,它工作得很好。我正在切割边缘总和 = 0 的图像

现在,当源图像不是垂直成 90 度时,就会出现问题。图像是通过扫描仪扫描的,方向可能不正确,给定的技术会失败。下面是一个失败的示例图像,因为每一行都有边缘。因为,现在行的边缘为零,因为行没有水平对齐。下面是导致问题的图像。

在此处输入图像描述

0 投票
1 回答
808 浏览

fortran - 将图像读入数组?

我正在尝试编写一个利用 sobel 滤波器检测图像边缘的程序。因此,首先,我在一些基本代码中写下了一些要求,例如将 x 和 y 方向过滤器作为数组以及尝试读取 pgm 图像:

这是我第一次在 FORTRAN 中使用图像处理,除了一次我将图像打印为 pbm 文件。读取图像的代码是我之前打印出来的代码的复制品,除了我将写入更改为读取。

所以我的问题是,如何将 pgm 格式的图像读入“inp”数组,以便应用 sobel 过滤器?当我运行我的尝试时,我收到以下错误:

谢谢

0 投票
0 回答
136 浏览

fortran - 将图像读入数组输出“文件结尾”错误

我正在尝试将图像读入数组以将 sobel 过滤器应用于它。这是我的代码:

吐出以下错误:

我对在 fortran 中处理图像还很陌生。我该如何解决这个错误?我是否正在尝试将图像正确读入数组?