标签: edge-detection

适用于 Android 的 Canny 边缘检测器 -- 递归函数上的 StackOverflow

我正在开发适用于 Android 的增强现实应用程序。我正在实现 Tom Gibara 的精明边缘检测器类,并用 Bitmap 替换了 Android 不支持的 BufferedImage。

方法“跟随”(在下面发布)导致我出现 StackOverflow 错误。这是一个递归函数,但让我感到困惑的是,它会在设备上崩溃前正常工作大约 10-15 秒。

从 Google 看来,人们似乎已经在 J​​ava 中成功实现了这个类,但我想知道,无论出于何种原因,它在 Android 上都不起作用。Gibara 的代码指定它仅供单线程使用;这可能是问题的一部分吗?如果不是这样,我的错误对任何人来说都是显而易见的吗?

谢谢!

private void follow(int x1, int y1, int i1, int threshold) {  
    int x0 = x1 == 0 ? x1 : x1 - 1;  
    int x2 = x1 == width - 1 ? x1 : x1 + 1;  
    int y0 = y1 == 0 ? y1 : y1 - 1;  
    int y2 = y1 …
Run Code Online (Sandbox Code Playgroud)

java stack-overflow android edge-detection

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

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

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

提前致谢

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

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

OCR 的字符重建和填充

我正在研究轮胎上的文本识别。为了使用 OCR,我必须首先获得清晰的二值图。

我已经处理了图像,文本出现边缘破损和不连续的情况。我已经在 MATLAB 中尝试过使用圆盘和线元素进行标准腐蚀/膨胀,但它并没有真正帮助。

Pr1-关于如何重建这些字符并填补字符笔划之间的空白的任何想法?

原图_highres 原始图像_lowRes 检测到精明的边缘

Pr2- 上面的图像分辨率更高,光照良好。但是,如果如下图所示,照明较差且分辨率相对较低,那么可行的处理选项是什么?

在此处输入图片说明

尝试的解决方案:

S1:这是对Spektre共享的处理过的图像应用中值滤波器的结果。为了去除噪声,我应用了中值滤波器 (5x5),随后使用线元素 (5,11) 进行图像膨胀。即使现在 OCR (Matlab 2014b) 也只能识别一些字符

无论如何,非常感谢到目前为止的建议。我仍然会等着看是否有人可以提出不同的建议,也许是开箱即用的:)。

在此处输入图片说明

Matlab 实现以下 Spektre 代码中的步骤的结果(没有笔画扩张(按 1、2、3、4 的顺序对角进行标准化:

在此处输入图片说明

并且阈值 tr0=400 和 tr1=180 以及归一化的角顺序 1,3,2,4 在此处输入图片说明

此致

瓦贾哈特

ocr matlab image-processing edge-detection

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

低对比度分割深度图像

我试图从这张深度图像中分割手:

在此输入图像描述

我尝试过分水岭、区域增长、抓取,但都失败了,主要是因为没有明确的边缘。我也尝试锐化图像,但也没有给我带来好的结果。

c++ opencv computer-vision edge-detection image-segmentation

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

霍夫线变换 - 45 度角的伪影

我在 OpenCV (c++) 中实现了霍夫线变换,我在霍夫空间中得到了奇怪的工件。下图显示了霍夫空间。距离 rho 在行中描绘,而 180 列表示从 0 到 179 度的角度。如果放大第 45 和 135 列,您会看到一条垂直线,其中暗像素和亮像素交替出现。 http://imgur.com/NDtMn6S

对于更高的阈值,可以很好地检测到围栏的线条,但是当我降低阈值时,在最终图片中可以将伪影视为 45° 或 135° 旋转的线条: 检测到中等阈值的线条

起初我认为这是我实现霍夫线方法的错误,但使用 OpenCV 的霍夫线方法获得了中等阈值的类似线。使用 Canny 而不是 Sobel 时,我也遇到了同样的问题。

所以问题是:为什么我会得到这些文物,我该如何摆脱它们?我无法找到任何关于此的信息,任何帮助将不胜感激。

这是我与 OpenCV Hough Lines 方法一起使用的代码:

// read in input image and convert to grayscale
Mat frame = imread("fence.png", CV_LOAD_IMAGE_COLOR);
Mat final_out;
frame.copyTo(final_out);

Mat img, gx, gy, mag, angle;
cvtColor(frame, img, CV_BGR2GRAY);

// get the thresholded maggnitude image
Sobel(img, gx, CV_64F, 1, 0);
Sobel(img, gy, CV_64F, 0, 1);
cartToPolar(gx, gy, …
Run Code Online (Sandbox Code Playgroud)

c++ opencv edge-detection hough-transform

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

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

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

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

输入图像

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

在此输入图像描述

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

在此输入图像描述

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

在此输入图像描述

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

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

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

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

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

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

image-processing edge-detection iris-recognition sobel

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

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
查看次数

使用深度机器学习的 Android 文档边缘检测应用程序

我使用 OpenCV 边缘检测功能开发了 Android 文档扫描仪,该功能无法一直按预期工作,并且需要特殊背景才能像深色纯背景一样正常工作。此外,文档颜色可能会影响文档边缘检测的准确性。所有这些要求对应用程序用户来说都是真正的挫败感。

在互联网上搜索我了解到 google play 上的所有专业移动文档扫描仪都使用机器学习,如 Tensorflow 或任何其他 DML,以便扫描仪应用程序在任何情况下都能以极高的准确性工作。

我浏览了 TensorFlow 示例,例如图像分类和图像分割。我不知道这些是否可以用于文档边缘检测。任何人都可以帮助我使用 TensorFlow 开发 android 文档边缘检测应用程序(文档扫描仪)。

谢谢

android document edge-detection image-scanner tensorflow-lite

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

从凸点获取角

我编写了提取图像中显示的点的算法。它们形成凸形,我知道它们的顺序。如何从这些点提取角(前3个和后3个)?我正在使用opencv。

框

opencv computer-vision edge-detection

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

比锁定位更快的图像处理

我一直在研究C#中的边缘检测程序,为了让它运行得更快,我最近使用了锁定位.但是,lockBits仍然没有我想要的那么快.虽然问题可能是我的通用算法,但我也想知道是否有比我可以用于图像处理的lockBits更好的东西.

如果问题是算法,这是一个基本的解释.浏览一系列颜色(使用锁定位表示像素),并为每种颜色检查该像素周围的八个像素的颜色.如果这些像素与当前像素不够匹配,则将当前像素视为边缘.

这是定义像素是否为边的基本代码.它采用了九种颜色的Color [],第一种是要检查的像素.

public Boolean isEdgeOptimized(Color[] colors)
{
    //colors[0] should be the checking pixel
    Boolean returnBool = true;
    float percentage = percentageInt; //the percentage used is set
    //equal to the global variable percentageInt

    if (isMatching(colors[0], colors[1], percentage) &&
            isMatching(colors[0], colors[2], percentage) &&
            isMatching(colors[0], colors[3], percentage) &&
            isMatching(colors[0], colors[4], percentage) &&
            isMatching(colors[0], colors[5], percentage) &&
            isMatching(colors[0], colors[6], percentage) &&
            isMatching(colors[0], colors[7], percentage) &&
            isMatching(colors[0], colors[8], percentage))
    {
        returnBool = false;
    }
    return returnBool;
}
Run Code Online (Sandbox Code Playgroud)

此代码适用于每个像素,其颜色使用锁定位获取.

基本上,问题是,如何让我的程序运行得更快?这是我的算法,还是我可以使用比lockBits更快的东西?

顺便说,该项目是在GitHub上,在这里

c# image image-processing lockbits edge-detection

4
推荐指数
2
解决办法
6298
查看次数