Matlab中的Canny边缘检测器返回“;蚂蚁种族“;形象

Matlab中的Canny边缘检测器返回“;蚂蚁种族“;形象,matlab,Matlab,我试图在一幅黑白冲击波图像上使用Matlab中的边缘函数。我使用这个函数得到的图像是一个“蚂蚁种族”图像。我想知道是否有不同的方法来寻找冲击波的边缘。下面是我的代码: edgeimage = edge(Imagematrix(:,:,45),'Canny'); 这是原图 Imagematrix是一个三维2048x2040x90矩阵 这是我运行edge函数时得到的图像 你的整个图像是“非平面”的,所以边缘无处不在。尝试使用edge的第三个参数threshold。使用图像的示例 % ofc th

我试图在一幅黑白冲击波图像上使用Matlab中的边缘函数。我使用这个函数得到的图像是一个“蚂蚁种族”图像。我想知道是否有不同的方法来寻找冲击波的边缘。下面是我的代码:

edgeimage = edge(Imagematrix(:,:,45),'Canny');
这是原图

Imagematrix是一个三维2048x2040x90矩阵

这是我运行edge函数时得到的图像

你的整个图像是“非平面”的,所以边缘无处不在。尝试使用edge的第三个参数threshold。使用图像的示例

% ofc this is not your real data, but close
I=imread('http://i.stack.imgur.com/ZaVGh.png'); 
edgeimage = edge(I(:,:,1),'Canny',0.22);
imshow(edgeimage)

玩不同的阈值。您还可以使用
sigma
变量,它定义了内核的大小

您的整个图像是“非平坦”的,因此边缘无处不在。尝试使用edge的第三个参数threshold。使用图像的示例

% ofc this is not your real data, but close
I=imread('http://i.stack.imgur.com/ZaVGh.png'); 
edgeimage = edge(I(:,:,1),'Canny',0.22);
imshow(edgeimage)


玩不同的阈值。您还可以使用
sigma
变量,它定义了内核的大小

您可以发布原始图像吗?通过自己实现canny,您可以扭曲和调整参数。这可能会很有用。@NikolasRieble,我刚刚用原始图片更新了我的帖子!嗯,这就是你的形象。没有“平坦”区域,所以一切都是边缘!我建议给edge一个第三个参数(阈值),然后玩弄它,看看你是否得到了什么decent@NikolasRieble,知道像素的比例为0-1可能会有所帮助(尽管我看到一些像素的比例约为1.011)。您建议我使用什么参数?我真的很感激任何帮助!你能发布原始图像吗?你可以自己实现canny,扭曲和调整参数。这可能会很有用。@NikolasRieble,我刚刚用原始图片更新了我的帖子!嗯,这就是你的形象。没有“平坦”区域,所以一切都是边缘!我建议给edge一个第三个参数(阈值),然后玩弄它,看看你是否得到了什么decent@NikolasRieble,知道像素的比例为0-1可能会有所帮助(尽管我看到一些像素的比例约为1.011)。您建议我使用什么参数?我真的很感激任何帮助!还可以使用滞后阈值。Canny中有两个有效的阈值-低阈值和高阈值。这两个都可以,高斯模糊的大小和非最大值抑制的窗口都可以得到很好的效果。@rayryeng遗憾的是,你不能在MATLABs
edge
中访问所有这些,你确定吗?我看了一下文件。您至少可以使用阈值和模糊大小。不过,你对NMS的看法是对的。还可以玩转滞后阈值。Canny中有两个有效的阈值-低阈值和高阈值。这两个都可以,高斯模糊的大小和非最大值抑制的窗口都可以得到很好的效果。@rayryeng遗憾的是,你不能在MATLABs
edge
中访问所有这些,你确定吗?我看了一下文件。您至少可以使用阈值和模糊大小。不过,关于NMS,你是对的。