问题标签 [canny-operator]

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 投票
0 回答
506 浏览

matlab - 棋盘中2条线段的交点像素坐标

我正在做一个项目,该项目必须找到两条线段的交点坐标,这些线段是棋盘图像的垂直线。在使用 canny edje 检测后,我找到了 Hough 变换的线段。我找到了每条线的起点和终点![在此处输入图像描述][1] 但我不知道如何找到这些线相交的坐标。

时间不多了。任何可以的人,请帮助我。我正在使用 matlab,我所拥有的只是下面代码的结果。这是我的代码:

im = imread('IMG_2917.jpg');

Im = rgb2gray(im);

q = 最大值(最小值(Im));

我 = 我 <= q;

A = ceil(min(大小(I))/2);

B = ceil(max(大小(I)));

数字

西格玛=1;

BW = edge(I, 'canny', [], sigma);

[H,T,R] = 霍夫(BW);

P = houghpeaks(H,8,'threshold',ceil(0.25*max(H(:))));

x = T(P(:,2));

y = R(P(:,1));

Q(:,1) = R(P(:,1));

Q(:,2) = T(P(:,2))

线= houghlines(BW,T,R,P,'FillGap',B,'MinLength',A);

显示(BW)

坚持,稍等

最大长度 = 0;

对于 k = 1:长度(行)

xy = [线(k).point1;线(k).point2];

plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green');

绘图(xy(1,1),xy(1,2),'x','线宽',2,'颜色','黄色');

plot(xy(2,1),xy(2,2),'x','LineWidth',2,'Color','red');

disp(['line #' num2str(k) ':(' num2str(xy(1,1)) ',' num2str(xy(1,2)) ')' ';' ...

'(' num2str(xy(2,1)) ',' num2str(xy(2,2)) ')']);

len = norm(lines(k).point1 -lines(k).point2);

如果 (len > max_len)

最大长度 = 长度;

xy_long = xy;

结尾

结尾

plot(xy_long(:,1),xy_long(:,2),'LineWidth',2,'Color','blue');

0 投票
1 回答
949 浏览

matlab - Matlab 的 Canny 边缘功能不起作用

当我尝试跑步时

我的图像在哪里im(256X256 uint8)。

这是我得到的错误:

0 投票
1 回答
1569 浏览

image-processing - 不同边缘检测算法的优缺点

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

提前致谢

0 投票
2 回答
1034 浏览

c++ - 如何获取轮廓的像素点?

如何找到轮廓中的像素点?假设我有一个图像,在完成后有 5 个轮廓findContours,我知道我们可以用函数绘制轮廓drawContour,但我需要知道形成轮廓的像素点。

例如:

我这样做并得到了这个图像现在我想现在形成轮廓的像素点,例如(x1,Y1),我如何获得这些信息?,(x2,y2)...这里

0 投票
2 回答
4133 浏览

c++ - 眼镜检测

我想做的是测量眼镜框的厚度。我有测量框架轮廓厚度的想法(可能是更好的方法?)。到目前为止,我已经勾勒出眼镜的框架,但是线条不相交的地方存在间隙。我考虑过使用 HoughLinesP,但我不确定这是否是我需要的。

到目前为止,我已经执行了以下步骤:

  • 将图像转换为灰度
  • 在眼睛/眼镜区域周围创建 ROI
  • 模糊图像
  • 放大图像(这样做是为了去除任何薄框眼镜)
  • 进行 Canny 边缘检测
  • 找到轮廓

这些是结果:

到目前为止,这是我的代码:

我不完全确定接下来的步骤是什么,或者如上所述,我是否应该使用 HoughLinesP 以及如何实现它。很感谢任何形式的帮助!

0 投票
0 回答
639 浏览

opencv - 连接脱节边缘后边缘检测

我想知道是否有人可以告诉我是否有一种方法可以连接缺少零件的边缘线。例如,我有一个带有大致圆形斑点的图像,我应用了 Canny 边缘检测方法,它返回和四分之三的新月形边缘,而我希望它形成一个可以被 Hough 变换拾取的区域。

我一直在用openCV玩这个。我试过寻找轮廓,但没有这样的运气。

非常感谢。

编辑:示例轮廓输出以尝试霍夫变换(左上角):

在此处输入图像描述

应该补充一点,我可以为该图像检测一个圆圈,能够使其成为一个不相交的区域会很好。

0 投票
1 回答
1513 浏览

c++ - OpenCV - 计算图像的边缘强度

我是图像处理的新手,我需要计算图像中存在的边缘强度。假设您有一张图像,并为该图像添加了模糊效果。这两个图像的边缘强度不同。我需要分别计算两个图像边缘强度。

到目前为止,我已经使用下面的代码对图像进行了精明的边缘检测。

有什么方法可以计算这个边缘图像的强度..?

0 投票
1 回答
739 浏览

java - Canny 算法:滞后故障

我正在编写 Canny 算法,我似乎遇到了滞后问题。阈值似乎正在处理,但是我的滞后似乎根本不起作用。以及由于某些奇怪的原因而删除弱的方法。请帮忙!

低@ 10 Low @ 10 高@75 High @ 75 滞后后 滞后后,对于问题 A,边缘没有通过方法 performHysteresis 加强;使用方法 removeWeak 不会删除 B 个弱非边缘。

该方法的源代码如下:

0 投票
1 回答
1922 浏览

java - OpenCV Android,绘制最大轮廓,有问题

我正在尝试绘制最大的轮廓,我正在实时工作,处理每个相机帧。我的输入图像将是手的,我有一些限制 - 黑色背景,没有镜面光。

我希望最大的轮廓尽可能接近下图在此处输入图像描述

我的代码如下,我参考了许多在线可用的示例,我几乎认为我的代码没有任何问题。

现在,我得到的只是其中的一小部分。我目前的理解是 OpenCV 本身无法检测到大的连续轮廓。请参考下面的图片。

在此处输入图像描述

不仅如此,我还对其他图像进行了测试,但不知何故我无法获得大而大的连续轮廓。

我先申请 Canny 有错吗?有没有更好的技术?我希望得到手部轮廓的轮廓。将来,我想将它与保存的类似轮廓数据库进行比较。我在正确的轨道上吗?

0 投票
0 回答
4236 浏览

c++ - 匹配图像的特定元素;已知形状 OpenCV C++

在没有得到这个问题的答案之后,我最终遇到了一些看起来很有趣的可能解决方案:

这篇文章中的 Robust Matcher 以及这篇文章的 Canny Detector 。

在设置 a Canny Edge Detector,引用它的Documentation并实现Robust Matcher我链接的第一页中显示的内容后,我获得了一些徽标/服装图像,并且将两者结合起来取得了不错的成功:

徽标图片与带有该徽标的服装图片相匹配

但在其他非常相似的情况下,它是关闭的:

具有“完全相同”设计的不同徽标图像,与上述相同的服装图像。

所以这让我想知道,有没有一种方法可以匹配图像上的几个特定点来定义给定图像的某些区域?

因此,与其读取图像然后进行所有匹配keypoints,丢弃“坏”keypoints等。是否有可能让系统知道一个keypoint与另一个相关的位置,然后丢弃一个图像上正确的匹配彼此相邻,但在另一个完全不同的地方?

(如左侧图像中相邻的浅蓝色和宝蓝色“匹配”所示,但在右侧图像的完全独立部分匹配)

编辑

对于米卡

在此处输入图像描述

“矩形”绘制在(添加在油漆中)白框的中心。

单应输出

略有不同的输入场景(不断改变周围的事物,需要很长时间才能找出完美重复上图的确切条件)但结果相同:

有问题的图片:

在此处输入图像描述