C# 基于OpenCv的视觉工作流-章6-腐蚀
本章目标:
一、卷积计算原理;
二、获取卷积核;
三、腐蚀;
一、卷积计算原理;
卷积计算原理,如下图所示:
1、先定义卷积核(3x3、5x5、7x7等,一般用奇数,卷积核中的值可自定义);
2、卷积核覆盖在图像起始位置,然后计算卷积核中各值与被覆盖图像中各像素值,一对一相乘,最终求和,如图起始位置计算的卷积结果为44;
3、卷积核向右滑动一格(一像素),再计算,得结果70;
4、同理,卷积核,从上到下,从左到右,依次滑动计算,最终得到整个图像的卷积计算结果。
二、获取卷积核;
OpenCv提供了卷积核的获取方法,可如下使用:
Mat matKernel = Cv2.GetStructuringElement(MorphShapes.Rect, new OpenCvSharp.Size(width, height));
其中:参数1,为卷积核类型(矩形、交叉形、椭圆形);
参数2,为卷积核大小(3x3、5x5、7x7等,一般用奇数);
三、腐蚀
腐蚀原理如下图:
1、用值全为1的卷积核,滑动扫描图像;
2、计算,如果卷积核内所有像素点都为白色,那锚点位置(卷积核当前中心点)的像素值为白色,否则为黑色。
注:卷积核边界与卷积核中心点的距离,当卷积核覆盖在图像中的黑白交界时,不全是白色则为黑色,即部分白色区域变小,形成了腐蚀。
OpenCv腐蚀可如下使用:
Mat matDst = new Mat();
Cv2.Erode(image, matDst, matKernel, null, iteration);
其中:参数1,image为输入图像;
参数2,为输出图像;
参数3,为卷积核;
参数4,为内核的锚点,其默认值为(-1,-1),表示锚点位于内核的中心;
参数5,为腐蚀次数;
效果如图:
腐蚀前后对比可知,腐蚀后,白色区域相对变小。
参考链接
https://www.bilibili.com/video/BV1RFtpeJE6h/?vd_source=3f9438f03abb9d3e91fda0640164d626&p=28&spm_id_from=333.788.videopod.episodes
“VisionTool 探迹”免费视觉工具
下载地址:https://pan.baidu.com/s/11tktKOSnepLNIEqNbvnv6w?pwd=qv5i
“VisionTool Halcon”付费视觉工具,19元,微信付款后可获取。
下载地址:https://pan.baidu.com/s/1v832KTonDYS6oNnWG2iZtQ?
对应系列文章“C# 基于Halcon的视觉工作流”,欢迎前往阅读。
上述内容需要一定的技术功底,本章至此已结束,欢迎阅读下章,谢谢!