【OpenCV】超详细边缘提取算法流程(附详细代码) |
您所在的位置:网站首页 › 图像边缘提取 › 【OpenCV】超详细边缘提取算法流程(附详细代码) |
在传统的计算机视觉领域,经常需要使用一些传统的图像处理算法完成对图像的边缘提取功能,通过对图像的边缘进行提取完成对目标对象的分割,目标分割技术又包括语义分割与实例分割,比较高端的鲁棒性较强的还是需要卷积神经网络算法进行相关的训练,如fcn全连接网络,mask-rcnn实例分割网络。本案例旨在采用传统的图像处理技术完成对图像的边缘检测任务,并通过膨胀腐蚀操作进行连通域的提取,之后通过连通域的填充以及掩膜操作完成目标对象的分割。 具体需要达到的目标如下:
上图所示,可以很好的将河道信息进行提取。 1. 具体算法流程首先对采集的图片进行灰度化处理(方便进行数据处理),然后对灰度图像进行中值滤波操作去除湖面上的细小杂质,之后通过x方向和y方向上的Sobel梯度算子分别获取梯度图像,并将梯度图像转换成CV_8UC1类型,并对转换后的x,y方向上的梯度图像进行OTSU二值化操作获取二值图像,并对两幅二值图像按对应像素位置进行与运算,目的是为了去除河道上的波纹干扰。(可以继续对与运算之后的结果图进行中值滤波去除湖面上的细小杂质)。最后对二值图进行多次迭代的膨胀腐蚀操作以及小区域块的填充操作(用到findContours与drawContours接口进行轮廓查找与填充)获取河道连通区域。 2.流程图可以通过如下流程图进行展示。 3. 涉及到的代码 int main() { Mat srcImage, srcImage2, srcImage3; for (int j = 1; j |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |