图像边缘检测非极大值抑制求解释
// 如果当前象素的梯度幅度为 0,则不是边界点
if(pnMag[nPos] == 0 )
{
pUncheckRst[nPos] = 0 ;
}
else
{
dTmp = pnMag[nPos] ;
gx = pnGradX[nPos] ; // 水平方向偏导数
gy = pnGradY[nPos] ; // 垂直方向偏导数
if (abs(gy) > abs(gx))
{
weight = fabs(gx)/fabs(gy); // 计算插值的比例
g2 = pnMag[nPos-imageWidth] ;
g4 = pnMag[nPos+imageWidth] ;
// 如果两个方向的偏导数的符号相同
// C 是当前象素,与 g1-g4 的位置关系为:
// g1 g2
// C
// g4 g3
if (gx*gy > 0)
{
g1 = pnMag[nPos-imageWidth-1] ;
g3 = pnMag[nPos+imageWidth+1] ;
}
// 如果两个方向的偏导数的符号相反
// C 是当前象素,与 g1-g4 的位置关系为:
// g2 g1
// C
// g3 g4
else
{
g1 = pnMag[nPos-imageWidth+1] ;
g3 = pnMag[nPos+imageWidth-1] ;
}
}
else
{
weight = fabs(gy)/fabs(gx);
g2 = pnMag[nPos+1] ;
g4 = pnMag[nPos-1] ;
// 如果两个方向的偏导数的符号相同
// C 是当前象素,与 g1-g4 的位置关系为:
// g3
// g4 C g2
// g1
if (gx*gy > 0)
{
g1 = pnMag[nPos+imageWidth+1] ;
g3 = pnMag[nPos-imageWidth-1] ;
}
// 如果两个方向的偏导数的符号相反
// C 是当前象素,与 g1-g4 的位置关系为:
// g1
// g4 C g2
// g3
else
{
g1 = pnMag[nPos-imageWidth+1] ;
g3 = pnMag[nPos+imageWidth-1] ;
}
}
// 下面利用 g1-g4 对梯度进行插值
{
dTmp1 = weight*g1 + (1-weight)*g2 ;
dTmp2 = weight*g3 + (1-weight)*g4 ;
// 当前象素的梯度是局部的最大值
// 该点可能是个边界点
if(dTmp>=dTmp1 && dTmp>=dTmp2)
{
pUncheckRst[nPos] = 128 ;
}
else
{
// 不可能是边界点
pUncheckRst[nPos] = 0 ;
}
}
}
}
}
}
小弟有以下几个问题:(1) 插值是何意?为啥取g1,g2为一组,g3,g4为一组计算插值?
(2) 原理上是比较3*3矩阵内相邻像素点是不是最大值,他为何比较g1,g2,g3,g4就完事了
(3) 为何要分X,Y方向导数谁大两种情况比较
相关推荐
opencv实现canny边缘检测.docx
opencv实现canny边缘检测.docx
图像边缘检测7种算子代码
编程实现灰度图像的几种常用的边缘检测算法,包括:梯度边缘检测算法、Roberts边缘检测算法、Sobel边缘检测算法、拉普拉斯边缘检测算法、canny边缘检测算法、Prewitt边缘检测算法和Krisch边缘检测算法。
python opencv实现图像边缘检测
主要为大家详细介绍了python opencv实现图像边缘检测,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
Canny边缘检测(高斯滤波,计算图像的梯度和梯度方向,非极大值抑制NMS,双阈值筛选边缘)
Canny边缘检测: 计算机如何识别边缘:即颜色变化强度大的地方,即像素变化大的地方。 1.高斯滤波:高斯滤波的就是先找到高斯滤波核然后再进行卷积 1.1高斯噪声 首先我们先说一下,什么是高斯噪声?高斯噪声就是它的概率密度函数服从高斯分布(即正态分布)的一类噪声。其在图像当中常表现为能引起较强视觉效果的孤立像素点或像素块。噪声的出现会给图像带来干扰,让图像变得不清楚。 高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。消除图像在数字化过程中产生或者混入的噪声。 1.2高斯滤波核计算 二维高斯分布: 假定中心点的坐标是(0
算法应用三:【图像分割】+【边缘检测】canny边缘检测--冈萨雷斯--《数字图像处理》
canny主要工作:推导了最优边缘检测算子。 图像的边缘检测是:图像最基本特征,边缘点指的是图像中周围像素灰度有阶跃变化或屋顶变化的那些像素点,即:灰度值导数极大的地方。 边缘检测的目的是:标识数字图像中亮度变化的明显的点。之前介绍过增强边缘的图像锐化的方法,本节文章主要介绍一种专门用于边缘检测的canny算子。 PPT下载:https://download....



