我试图理解非最大抑制(Canny Edge检测)的概念,所以我开始查看matlab代码。用于确定边缘方向的matlab代码部分如下所示。
switch direction
case 1
idx = find((iy<=0 & ix>-iy) | (iy>=0 & ix<-iy));
case 2
idx = find((ix>0 & -iy>=ix) | (ix<0 & -iy<=ix));
case 3
idx = find((ix<=0 & ix>iy) | (ix>=0 & ix<iy));
case 4
idx = find((iy<0 & ix<=iy) | (iy>0 & ix>=iy));
end
在这里,
开关盒内的条件如何与代码下面解释的情况相对应。任何人都可以解释一下。 ?
答案 0 :(得分:1)
乍一看,find((iy<=0 & ix>-iy) | (iy>=0 & ix<-iy));
会返回
(iy<=0 & ix>-iy)
,所以
(iy>=0 & ix<-iy))
,所以
假设像素从上到下和从左到右排序,并且精确垂直的边缘(左边是黑色,右边是白色)被定义为0°
开关盒的其他3个术语是类似的。
这与非最大抑制无直接关系。我假设这是canny边缘滤波器或类似物的一部分,在这种情况下,下一步将是在刚确定的边缘方向上找到局部最大值。这是通过在边缘方向上比较每个像素与其本地邻居,并擦除除最大值之外的所有像素来完成的。