|
(三)在灰度图像中应用形态学运算
多种基本形态学滤波器,组合起来形成高级形态学运算,本节将其应用于灰度图像上可以检测图像的特征。
3.1 实现
3.1.1 形态学梯度运算,可以提取图像的边缘,具体为cv::morphologyEx 函数,如下:
//用3X3结构元素得到梯度图像
cv::Mat result;
cv::morphologyEx (image,result,
cv::MORSPH_GRADIENT,
cv::Mat());
得到图像中物体的轮廓(为了便于观察,可做反色处理)。
3.1.2 顶帽(hat-top)变换,作为一种实用的形态学运算,可从图像中提取出局部的小型前景物体。为验证效果,使用cv::morphologyEx 函数并采用正确的参数,可以调用黑帽变换提前出页面上文字(作为前景物体):
//使用7X7结构元素做黑帽变换
cv::Mat element7(7,7,CV_8U,cv::Scalar(1));
cv::morphologyEx(image,result,
cv::MORPH_BLACKHAT,
element7);
3.2 原理
灰度图像,可被形象比喻为不同高度(或海拔)的地势,明亮的区域代表高山,黑暗区域代表深谷,边缘相当于黑暗和明亮之间的快速过渡。腐蚀,即替换成特定邻域的最小值,结果悬崖缩小,山谷扩大;反之,悬崖扩大,山谷缩小;不管何种情况, 强度值固定的区域(即平地)都会相对保持不变。
检测图像边缘,即通过计算膨胀后的图像与腐蚀后的图像之间的差距得到边缘。在cv::morphologyEx函数中输入cv::MORPH_GRADIENT参数,可实现此功能。结构元素越大,检测到的边缘就越宽,这种运算成为Beucher梯度。得到类似结果的两种简单方法是:用膨胀后的图像减去原始图像,或者,用原始图像减去腐蚀后的图像,得到的便于会更窄。
顶帽运算的互补运算,即黑帽运算。 |