标签: edge-detection

多边形网格中唯一查找边的算法

我正在寻找一种好的算法,可以从一组多边形数据中获得独特的边缘.在这种情况下,多边形由两个数组定义.一个数组是每个多边形的点数,另一个数组是顶点索引列表.

我有一个正在运行的版本,但是当达到超过500,000的多边形时性能会变慢.我的版本遍历每个面,并将每个边的排序顶点添加到stl :: set.我的数据集主要是三角形和四边形多边形,大多数边将被共享.

有更聪明的算法吗?

graphics geometry mesh polygon edge-detection

7
推荐指数
2
解决办法
4243
查看次数

实施脊检测

我正在尝试编写脊检测算法,我发现的所有信号源似乎都将边缘检测与脊检测混为一谈.现在,我已经实现了Canny边缘检测算法,但它不是我想要的:例如,在图像中给定一条线,它将有效地将其转换为双线边缘(因为它将记录两边的边缘)这条线) - 我只想让它读一行.

关于山脊检测的维基百科文章有一堆数学,但这种情况对我作为一个程序员没有帮助(不是我不喜欢数学,但它不是我的领域,我不明白如何翻译他们的微分方程代码).实际实现这个有一个很好的来源吗?或者,就此而言,是否有一个良好的开源实现?

编辑:这是一个简单的例子.我们从一个简单的行开始:

http://img24.imageshack.us/img24/8112/linez.th.png

并运行Canny算法来获得:

http://img12.imageshack.us/img12/1317/canny.th.png

(你可以看到它在这里更厚 - 如果你点击图像,你会发现它实际上是两条相邻的线,中间有一个空白)

另外,我用C++编写,但这并不重要.但我想编写算法代码,而不仅仅是编写SomePackage::findRidges()并完成它.

math image-processing edge-detection

7
推荐指数
1
解决办法
9364
查看次数

ActionScript人脸检测

当用户在网络摄像头前面时,我正在寻找用户头部的边缘.我试过谷歌搜索但无济于事.有人能指出我的一些ActionScript示例吗?

和平\ m /

flash image-processing actionscript-3 face-detection edge-detection

7
推荐指数
1
解决办法
2084
查看次数

从canny边缘检测中提取线条

在应用canny边缘检测后的openCV中,我想进一步处理结果(仅显示水平线,删除短线等).但是canny的结果只是另一个形象.我想获得一系列描述检测到边缘的线条

我知道着名的Hough Line变换,但结果并不总是好的,这就是为什么我想手动处理canny结果.输入:

在此输入图像描述

仅输出canny:

在此输入图像描述

输出canny然后Hough线变换

在此输入图像描述

这是用于检测楼梯边缘的霍夫线变换结果(红线).尽管canny边缘检测到边缘,但未正确检测到下方的第4行.

知道如何从canny图像中提取边缘吗?

opencv edge-detection

7
推荐指数
2
解决办法
2万
查看次数

Canny Edge Image - 去除噪音

我有一个Canny边缘检测到的球的图像(见下面的链接),其中包含许多嘈杂的边缘.什么是最好的图像处理技术,我可以用来删除这些嘈杂的边缘而不删除属于球的边缘?

原始图像

原版的

Canny边缘图像

谨慎的

非常感谢大家的帮助和建议,非常感谢!

Ps我试图在使用Circle Hough Transform来检测球之前清理边缘图像.

image-processing edge-detection

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

难以在嘈杂的背景中检测小物体.有什么办法解决这个问题?

我正在尝试制作一个计算机视觉程序,它可以在嘈杂的背景(如沙滩)中检测垃圾和随机垃圾.

原始图片:

在此输入图像描述

没有任何图像处理的Canny边缘检测:

在此输入图像描述

我意识到图像处理技术的某种组合将帮助我实现忽略嘈杂的沙质背景并检测地面上所有垃圾和物体的目标.

我尝试预先形成中位数模糊,玩转并调整参数,它给了我这个:

在此输入图像描述

它在忽略沙质背景方面表现良好,但它无法检测到地面上的其他许多物体,可能是因为它模糊了(不太确定).

有没有办法改进我的算法或图像处理技术,忽略嘈杂的沙质背景,同时允许精确边缘检测找到所有对象,让程序检测并绘制所有对象的轮廓.

码:

from pyimagesearch.transform import four_point_transform
from matplotlib import pyplot as plt
import numpy as np
import cv2
import imutils

im = cv2.imread('images/beach_trash_3.jpg')


#cv2.imshow('Original', im)

# Histogram equalization to improve contrast




###
#im = np.fliplr(im)

im = imutils.resize(im, height = 500)

imgray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)

# Contour detection
#ret,thresh = cv2.threshold(imgray,127,255,0)

#imgray = cv2.GaussianBlur(imgray, (5, 5), 200)
imgray = cv2.medianBlur(imgray, 11)

cv2.imshow('Blurred', imgray)

'''
hist,bins = np.histogram(imgray.flatten(),256,[0,256])
plt_one = plt.figure(1)
cdf = hist.cumsum()
cdf_normalized = …
Run Code Online (Sandbox Code Playgroud)

opencv image-processing computer-vision edge-detection opencv-contour

7
推荐指数
1
解决办法
2865
查看次数

在我的Canny-Deriche的MATLAB实现中无法获得干净的输出

到目前为止我的代码是:

function imgg = derichefilter1(x, k, a, b, c)
osize = size(x);
x = double(x);
a = double(a);
b = double(b);
c = double(c);
k = double(k);
y1 = zeros(osize(1),osize(2));
y2 = zeros(osize(1),osize(2));
y1(:,1) = a(1)*x(:,1);
y1(:,2) = a(1)*x(:,2) + a(2)*x(:,1) + b(1)*y1(:,1);
for ii=3:osize(2)
    y1(:,ii) = a(1)*x(:,ii) + a(2)*x(:,ii-1) + b(1)*y1(:,ii-1) + b(2)*y1(:,ii-2);
end

y2(:,osize(2)-1) = a(3)*x(osize(2));
for ii=(osize(2)-2):-1:1
    y2(:,ii) = a(3)*x(:,ii+1) + a(4)*x(:,ii+2) + b(1)*y2(:,ii+1) + b(2)*y2(:,ii+2);
end
imgg = c*(y1+y2);

function imgg = derichefilter2(x, k, a, b, …
Run Code Online (Sandbox Code Playgroud)

algorithm matlab edge-detection feature-detection

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

Canny边缘检测器的时间复杂度

我目前正在撰写一篇关于新隐写算法的研究论文.我在算法的某些方面使用了canny边缘检测器.在本文中,我需要编写新方法的时间复杂度,这又取决于canny边缘检测器的时间复杂度.

问题是网络上没有任何地方我可以找到关于canny的时间复杂性的任何参考.我甚至读过原始的精装纸.我无法正确推断它并需要一些帮助.

algorithm big-o time-complexity edge-detection

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

屏幕截图的图像分割(感兴趣区域)

我想比较网络应用程序的不同版本(同一站点)的屏幕截图。到目前为止,我尝试了以下方法:

  • 基于像素的比较
  • 与 Delta E 进行基于像素的模糊比较
  • 基于分段的比较

对于后者,我将屏幕截图细分为相同大小的不同部分,并通过颜色直方图进行比较。

现在我想以更智能的方式细分图像。也许我可以把它分成一些感兴趣的区域。有人可以解释一些方法吗?

这是我的问题的一个例子:

http://cdn.browserbite.com/wp-content/uploads/2013/10/HT-Comp.png?_ga=1.61594287.28970400.1404314972

image image-processing computer-vision edge-detection image-segmentation

6
推荐指数
0
解决办法
539
查看次数

图像处理中的角点检测Opencv Python

我有一个盒子的图像.我正在尝试检测角落并从圆圈标记这些角落.我使用以下代码:

import cv2
import numpy as np

img_file = 'Image.jpg'
img = cv2.imread(img_file, cv2.IMREAD_COLOR)

imgDim = img.shape
dimA = imgDim[0]
dimB = imgDim[1]

# RGB to Gray scale conversion
img_gray = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)
# Noise removal with iterative bilateral filter(removes noise while preserving edges)
noise_removal = cv2.bilateralFilter(img_gray,9,75,75)
# Thresholding the image
ret,thresh_image = cv2.threshold(noise_removal,220,255,cv2.THRESH_OTSU)
th = cv2.adaptiveThreshold(noise_removal, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 2)

# Applying Canny Edge detection
canny_image = cv2.Canny(th,250,255)
canny_image = cv2.convertScaleAbs(canny_image)

# dilation to strengthen the edges
kernel = …
Run Code Online (Sandbox Code Playgroud)

python opencv image-processing edge-detection

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