-
主要内容:
形态学操作的应用——提取水平与垂直线原理方法
实现步骤 -
原理方法
图像形态学操作的时候,可以通过自定义的结构元素实现结构元素对输入图像一些对象敏感、另一些对象不敏感,这样就会让敏感的对象改变而不敏感的对象保留输出,通过使用两个基本的形态学操作——膨胀(dilate)和腐蚀(erode),使用不同的结构元素实现对输入图像的操作,得到想要的结果。(理解对比开操作和闭操作)
膨胀——输出的像素值是结果元素覆盖下输入图像的最大像素值
腐蚀——输出的像素值是结构元素覆盖下输入图像的最小像素值
例如:我需要提取水平线或者垂直线 保留水平线即设置一个对垂直线不敏感对水平线敏感的结构元素,运用合适的形态学操作进行
-
结构元素
膨胀和腐蚀可以使用任意形状的结构元素
常见的形状:矩形、圆、直线、磁盘形状、砖石形状等各种自定义形状 -
提取步骤
输入图像彩色图像imread
转换为灰度图像——cvtColor
转换为二值图像——adaptiveThreshold
定义结构元素
开操作(腐蚀+膨胀)提取水平与垂直线 -
相关API——转换为二值图像——adaptiveThreshold
adaptiveThreshold(
Mat src,//输入的灰度图像
Mat dest,//输入的二值图像
double maxValue,//二值图像的最大值
int adaptiveMethod,//自适应方法,只能其一
//ADAPTIVE_THRESE_MEAN_C
//ADAPTIVE_THRESH_GAUSSIAN_C
int thresholdType,//阈值类型
int blockSize,//块大小
double C//常量C可以是正数,0,负数
)
有时为了让输出的图像显示更圆滑,可以使用blue函数进行图像的模糊操作
实例:去除文字的干扰线
原图:输入源图像——输入灰度图——输入二值图——定义结构元素——使用形态学操作中的开操作 结果图:
6. 课外扩展:
Wellner 自适应阈值二值化算法
拜小白opencv22-自适应阈值化操作:adaptiveThreshold()函数
OpenCV阈值操作(Threshold,AdaptiveThreshold)