标签: sobel

Sobel滤芯大尺寸

我正在使用尺寸为3x3的索贝尔滤波器来计算图像导数.看一下互联网上的一些文章,似乎sobel过滤器的大小为5x5和7x7的内核也很常见,但我无法找到它们的内核值.

有人可以让我知道尺寸为5x5和7x7的sobel滤波器的内核值吗?此外,如果有人可以共享一个方法来生成内核值,那将非常有用.

提前致谢.

image-processing computer-vision edge-detection sobel

39
推荐指数
5
解决办法
3万
查看次数

OpenCV的Sobel滤镜 - 为什么它看起来如此糟糕,特别是与Gimp相比?

我正在尝试使用OpenCV重建我之前在Gimp中完成的一些预处理.第一阶段是用于边缘检测的Sobel滤波器.它在Gimp中非常有效:

在此输入图像描述

现在这是我对OpenCV的尝试:

opencv_imgproc.Sobel(/* src = */ scaled, /* dst = */ sobel,
  /* ddepth = */ opencv_core.CV_32F,
  /* dx = */ 1, /* dy = */ 1, /* ksize = */ 5, /* scale = */ 0.25,
  /* delta = */ 0.0, /* borderType = */ opencv_core.BORDER_REPLICATE)
Run Code Online (Sandbox Code Playgroud)

它看起来非常糟糕,基本上突出了点而不是轮廓:

在此输入图像描述

那么我做错了什么,或者Gimp如何实现如此好的结果?如何在OpenCV中复制它?

opencv gimp sobel

6
推荐指数
1
解决办法
2435
查看次数

不同边缘检测算法的优缺点是什么

有人可以描述不同的边缘检测算法来检测图像中的边缘及其用途的优缺点。我感兴趣的一些主要算法是:Sobel FuzzyLogic Canny

提前致谢

image-processing fuzzy-logic edge-detection canny-operator sobel

5
推荐指数
1
解决办法
2007
查看次数

Sobel滤波器无法正常工作

我为Sobel算子编写了一个用于边缘检测的类,但是当我使用示例图像时,我的边缘是关闭的.非常感谢有人可以帮助我.

import java.awt.image.BufferedImage;
import java.awt.image.ConvolveOp;
import java.awt.image.Kernel;
import java.awt.image.Raster;
import java.util.Arrays;

class SobelFilter {

private static final float[] sobel1 = { 1.0f, 0.0f, -1.0f};
private static final float[] sobel2 = { 1.0f, 2.0f,  1.0f};
private static final boolean[] sobelBoolean = {true, false};

private SobelFilter() {}

private static ConvolveOp getSobelX(boolean fs) {
    Kernel kernel = null;

    if (fs) {
        kernel = new Kernel(1, 3, sobel1);
    }
    else {
        kernel = new Kernel(3, 1, sobel2);
    }

    return new ConvolveOp(kernel, ConvolveOp.EDGE_ZERO_FILL, null);
} …
Run Code Online (Sandbox Code Playgroud)

java sobel

5
推荐指数
1
解决办法
1041
查看次数

Tensorflow中是否存在卷积函数以应用Sobel滤波器?

convolutionTensorflow中是否有任何方法将Sobel滤波器应用于图像img(张量类型float32和等级2)?

sobel_x = tf.constant([[-1, 0, 1], [-2, 0, 2], [-1, 0, 1]], 'float32')
result = tf.convolution(img, sobel_x) # <== TO DO THIS
Run Code Online (Sandbox Code Playgroud)

我已经看过,tf.nn.conv2d但我看不出如何使用它进行此操作.有什么方法可以tf.nn.conv2d用来解决我的问题吗?

python convolution sobel tensorflow

5
推荐指数
1
解决办法
5499
查看次数

应用边缘检测后如何去除一些边缘?

我需要找到虹膜边缘,我使用的输入图像不是完全圆形的虹膜,有时它可能被眼睑覆盖.我找到了一篇期刊文章的摘要,发现虹膜甚至被眼睑覆盖.但是,我坚持其中一个步骤.再次,它因为只有摘要而我找不到那篇文章的全文.

这就是我被卡住的地方,我有一个图像,它已经被垂直索贝尔边缘检测暗示了.我有一个图像输入,这是图片:

输入图像

这是应用垂直边缘检测后的图片:

在此输入图像描述

我需要移除除虹膜边缘(红色边缘)以外的所有边缘.

在此输入图像描述

我的预期结果应该是这样的:

在此输入图像描述

注意:有些图像可能只有瞳孔的左边缘或右边缘,如上图所示,但有些图像可能有瞳孔的左右边缘.

在我看来,有两种方法可以获得优势.

  1. 移除水平边缘,因为瞳孔边缘有点垂直.但我不知道如何去除水平边缘,它不是真正的水平线条,其弯曲的水平线条.

  2. 找到图片中最长的边缘(我也不知道找到最长边的算法是什么).

哪一个是解决我问题的正确方法?或不是以上两种选择?

如果你知道找到非全圆形物体的方法,特别是对于虹膜,请告诉我,它使我的项目更容易.

image-processing edge-detection iris-recognition sobel

5
推荐指数
1
解决办法
538
查看次数

python - 在没有 opencv 的情况下使用 python 实现 Sobel 运算符

给定一个灰度 8 位图像(像素强度值为 0 - 255 的二维数组),我想在图像上实现 Sobel 运算符(掩模)。下面的 Sobel 函数基本上围绕给定像素循环,对像素应用以下权重: 在此输入图像描述

在此输入图像描述

然后应用给定的公式:

在此输入图像描述

我试图实现此链接中的公式: http://homepages.inf.ed.ac.uk/rbf/HIPR2/sobel.htm

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import Image


def Sobel(arr,rstart, cstart,masksize, divisor):
  sum = 0;
  x = 0
  y = 0

  for i in range(rstart, rstart+masksize, 1):
    x = 0
    for j in range(cstart, cstart+masksize, 1):
        if x == 0 and y == 0:
            p1 = arr[i][j]
        if x == 0 and y == 1:
            p2 = arr[i][j]
        if x …
Run Code Online (Sandbox Code Playgroud)

python image vision sobel

5
推荐指数
1
解决办法
1万
查看次数

R 中的 Sobel 边缘检测器?

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

更新:

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

library(magick)

# get image
img <- image_read("https://www.r-project.org/logo/Rlogo.png")
print(image_info(img))

# define horizontal and vertical Sobel kernel
Shoriz <- matrix(c(1, 2, 1, 0, 0, 0, -1, -2, -1), nrow = 3)
Svert <- t(Shoriz)

# get horizontal and vertical edges
imgH <- image_convolve(img, Shoriz)
imgV <- image_convolve(img, Svert)

print(plot(as.raster(img)))     # view original image
print(plot(as.raster(imgH)))    # view horizontal …
Run Code Online (Sandbox Code Playgroud)

r image-processing edge-detection sobel

5
推荐指数
0
解决办法
2654
查看次数

Opencv 如何在掩码中应用过滤器


我想将索贝尔滤镜应用于图像,但我只想将其应用于我定义的蒙版内。我知道我只能cv2.bitwise_and获取蒙版内的图像,但这也会给我蒙版和内部图像之间的边缘,索贝尔会将其检测为边界。

那么我如何将过滤器(在我的例子中cv2.Sobel(dni,cv2.CV_64F,1,0,ksize=5))应用于仅在蒙版内的图像部分?

谢谢!

python opencv mask sobel

5
推荐指数
0
解决办法
1393
查看次数

对于尺寸大于3 x 3的OpenCV Sobel滤波器,内核系数是多少?

我正在使用尺寸为5x5和7x7的OpenCV Sobel滤镜来计算图像导数.

有人可以告诉我OpenCV中尺寸为5x5和7x7的Sobel滤波器的内核值吗?在进行谷歌搜索时,它向我展示了许多不同的内核.

以下是5 x 5的一些示例:

1.可分离的

2   1   0   -1  -2
4   8   0   -4  -8
6  12   0   -12 -6
4   8   0   -4  -8
2   1   0   -1  -2
Run Code Online (Sandbox Code Playgroud)

2.不可分离的

2   1   0   -1  -2
4  10   0   -4  -10
7  17   0   -17 -7
4  10   0   -4  -10
2   1   0   -1  -2
Run Code Online (Sandbox Code Playgroud)

奇怪的是不可分离的

2   1   0   -1  -2
3   2   0   -2  -3
4   3   0   -3  -4
3   2   0   -2  -3
2 …
Run Code Online (Sandbox Code Playgroud)

c++ python opencv image-processing sobel

4
推荐指数
1
解决办法
1995
查看次数