边缘检测

【数字图像处理】边缘检测与图像分割

馋奶兔 提交于 2019-11-29 16:47:56
原文链接: 边缘检测与图像分割 作者: HUSTLX 1图像分割原理 图像分割的研究多年来一直受到人们的高度重视,至今提出了各种类型的分割算法。Pal把图像分割算法分成了6类:阈值分割,像素分割、深度图像分割、彩色图像分割,边缘检测和基于模糊集的方法。但是,该方法中,各个类别的内容是有重叠的。为了涵盖不断涌现的新方法,有的研究者将图像分割算法分为以下六类:并行边界分割技术、串行边界分割技术、并行区域分割技术、串行区域分割技术、结合特定理论工具的分割技术和特殊图像分割技术。而在较近的一篇综述中,更有学者将图像分割简单的分割数据驱动的分割和模型驱动的分割两类。下面将图像分割方法主要分以下几类:基于阈值的分割方法、基于区域的分割方法、基于边缘的分割方法、基于数学形态的分割方法以及基于特定理论的分割方法等,对其中主要的分别进行简要介绍。 1.1灰度阈值分割法 是一种最常用的并行区域技术,它是图像分割中应用数量最多的一类。阈值分割方法实际上是输入图像f到输出图像g的如下变换: 其中,T为阈值,对于物体的图像元素g(i,j)=l,对于背景的图像元素g(i,j)=0。 由此可见,阈值分割算法的关键是确定阈值,如果能确定一个合适的阈值就可准确地将图像分割开来。如果阈值选取过高,则过多的目标区域将被划分为背景,相反如果阈值选取过低,则过多的背景将被划分到目标区 [7] 。阈值确定后

openCV中sobel边缘检测

偶尔善良 提交于 2019-11-28 07:42:56
sobel算子是一个单边缘检测算子,具有方向性。将两个方向叠加后的检测代码如下 void SobelEnhance(const Mat src, Mat& dst) { Mat sobelx(src.size(), CV_16SC1);///边缘检测后,会有负值,也会有大于255的值,因此类型设为CV_16SC1有符号类型 Mat sobely(src.size(), CV_16SC1); Mat img_edgeFiltex(src.size(), CV_8UC1);///结果图,类型设为CV_8UC1进行阈值截断 Mat img_edgeFiltey(src.size(), CV_8UC1); Sobel(src, sobelx, CV_16SC1, 1, 0, 3); convertScaleAbs(sobelx, img_edgeFiltex); Sobel(src, sobely, CV_16SC1, 0, 1, 3); convertScaleAbs(sobely, img_edgeFiltey); ///像素加权 addWeighted(img_edgeFiltex, 1, img_edgeFiltey, 1, 0, dst); } void convertScaleAbs(InputArray src, OutputArray dst, double alpha =