本资源主要介绍了OpenCV库在Python中的图像处理,特别是形态学操作。章节标题为“第十四节 图像处理之形态学操作”,主要内容涵盖了腐蚀(erode)和膨胀(dilate)这两种基本形态学操作。
腐蚀(erode)和膨胀是图像处理中用于细化或粗化边缘的常用技术。在提供的代码示例中,首先导入了OpenCV库,并定义了两个函数`erode_demo`和`dilate_demo`。这两个函数接收一张彩色图片作为输入,首先将其转换为灰度图像并二值化。`cv.getStructuringElement(cv.MORPH_RECT,(11,11))`定义了一个11x11的矩形结构元素,这是腐蚀和膨胀操作的核心部分,它决定着操作的粒度。
腐蚀操作(`cv.erode(binary,kernel)`)通过在每个像素周围应用结构元素,如果结构元素内的像素都为1,则目标像素设为1,否则保持不变。其目的是缩小对象边缘,去除噪声点。膨胀操作(`cv.dilate(binary,kernel)`)则反之,如果结构元素内至少有一个1,则目标像素设为1,有助于扩大边缘或填充小空洞。
在代码中,通过读取图片`shape.png`,展示了原始图像、腐蚀后的效果和膨胀后的效果,便于直观理解两种操作的区别。腐蚀常用于边缘的细化,而膨胀则用于增强边缘或填补空洞。
此外,还介绍了形态学的开闭操作,它们是腐蚀和膨胀的组合。开操作(先腐蚀后膨胀)用于去除小的干扰,保持主要特征,而闭操作(先膨胀后腐蚀)则用于填充闭合区域,同样保持特征不变。在特定情况下,如处理黑白直线与背景的关系,可以根据需求选择开或闭操作来提取或去除特定方向的线条。
最后,代码还展示了如何使用顶帽(TOPHAT)和黑帽(BLACKHAT)操作,这两种操作分别等于原始图像减去开运算结果和闭运算结果减去原始图像,用于突出图像中的细节或消除某些特征。
通过学习和实践这些形态学操作,用户可以有效地处理图像边缘,去除噪声,或者执行更复杂的图像处理任务。