测量谷宽2d,matlab

测量谷宽2d,matlab,matlab,optimization,image-processing,Matlab,Optimization,Image Processing,我有一个2d图像,我有局部极小值出现的位置。 我想测量通向这些极小值的山谷的宽度。 我需要圆的半径或椭圆来拟合这些山谷。 这里附上一个例子,山峰轮廓上的深红色线条是我希望找到的。 谢谢 我建议列出一个描述椭圆边缘值的点列表,也许可以找到椭圆穿过阈值的所有点 above = data > threshold 应用一个简单的边缘检测器 edges = EdgeDetector(above) 求边的坐标 [row,col] = find(edges) 然后应用这个椭圆钳工我部分扩展了@Lu

我有一个2d图像,我有局部极小值出现的位置。 我想测量通向这些极小值的山谷的宽度。 我需要圆的半径或椭圆来拟合这些山谷。 这里附上一个例子,山峰轮廓上的深红色线条是我希望找到的。 谢谢


我建议列出一个描述椭圆边缘值的点列表,也许可以找到椭圆穿过阈值的所有点

above = data > threshold
应用一个简单的边缘检测器

edges = EdgeDetector(above)
求边的坐标

[row,col] = find(edges)

然后应用这个椭圆钳工

我部分扩展了@Lucas的答案

一个阈值<代码> t>代码>我会考虑下面的代码<代码> pYM<代码> >代码> t>代码>,并靠近你的<<代码> f>代码>的最小点>代码> m <代码>(给定特征刻度长度<代码> r>代码>) (你说你的数据是有噪声的;为了区分极小值和谈论井,你需要估计这样的

r
。在你的例子中,它可以是例如
r=4
,即极小值之间距离的一半)

你必须考虑每个井区的度量<代码> pYM,比如说

 metric(P_m) = .5 * mean{ maximum vertical diameter of P_m ,  
                     maximum horizontal diameter of P_m}.
在您的图片中,两口井的
公制(pum)=2


总的来说,就伪代码而言,您可以考虑

 M := set of local minima of f

 for_each(minimum m in M){

      P_m += {p : d(p,m) < r and f(r)<t}  % say that += is the push operation in a Stack

 }

 radius_of_region_around(m) = metric(P_m);  %
M:=f的局部极小值集
每个_(最小m,单位:m){

P_m+={P:d(P,m)我在这里假设您可以访问
x
y
z
数据,并且不处理给定的JPG(左右)图像。然后,您可以使用函数
contourc

% plot some example function
figure(1), clf, hold on    
[x,y,z] = peaks;
surf(x,y,z+10,'edgecolor', 'none')
grid on, view(44,24)

% generate contour matrix. The last entry is a 2-element vector, the last
% element of which is to ensure the right algorithm gets called (so leave 
% it untouched), and the first element is your threshold.
C = contourc(x(1,:), y(:,1), z, [-4 max(z(:))+1]);

% plot the selected points
plot(C(1,2:end), C(2,2:end), 'r.')
然后使用通过这些点拟合椭圆,并找到所需椭圆的所有参数


我建议您阅读
help contourc
doc contourc
,了解上述操作的原因,以及您可以使用它的其他用途。

您好,我对边不感兴趣,我对“边”感兴趣这是我的局部极小值的边界。我附加的meshc图像是一个简单的例子,事实上,我的数据中的谷值不是很明显,而且数据非常嘈杂,因此应用边缘检测器可能会合并其中的许多。椭圆装配工很酷。边缘检测器位仅用于将高于阈值和低于阈值的数据转换为边缘列表。将
over=data>threshold
位替换为您想要检测的最小值内外的任何内容。我只提供了这三行代码作为如何使用包的粗略指南。好的,这r正是我没有的,我想通过测量我的最小值开始变化的区域来估计进化。我不想对它进行筛选,也不想估计我想测量的半径:-),r只是分离出极小值。希望井的特征半径小于r。否则所有井都会穿透自己。在你的照片中,井的半径约为2;而我的r约为4。如果你有这种尺度的区别,然后我建议的算法会起作用。如果不起作用,也就是说,井之间没有明确的区别,我会开始考虑一些类似频率的分析。Acrobe,你说的有道理!在我下一次评论之前,我需要想一想……)很好。让我们讨论一下!@matlabit