Matrox imaging Library(MIL)边缘检测模块

      记录一下学习MIL图像处理库的一些过程。

在Edge Finder源代码:

 // 分配一个边缘检测缓存.
 MIL.MedgeAlloc(MilSystem, MIL.M_CONTOUR, MIL.M_DEFAULT, ref MilEdgeContext);

// 分配一个结果缓存.
MIL.MedgeAllocResult(MilSystem, MIL.M_DEFAULT, ref MilEdgeResult);

// 下面这两句是自定义计算一些边缘特征:M_MOMENT_ELONGATION和M_FERET_MEAN_DIAMETER
MIL.MedgeControl(MilEdgeContext, MIL.M_MOMENT_ELONGATION, MIL.M_ENABLE);
MIL.MedgeControl(MilEdgeContext, MIL.M_FERET_MEAN_DIAMETER + MIL.M_SORT1_DOWN, MIL.M_ENABLE);

// 计算边缘和特征
MIL.MedgeCalculate(MilEdgeContext, MilImage, MIL.M_NULL, MIL.M_NULL, MIL.M_NULL, MilEdgeResult, MIL.M_DEFAULT);

// 返回获取的边缘数量.
MIL.MedgeGetResult(MilEdgeResult, MIL.M_DEFAULT, MIL.M_NUMBER_OF_CHAINS + MIL.M_TYPE_MIL_INT, ref NumEdgeFound);

// 绘制边缘轮廓到图中。
MIL.MgraColor(MIL.M_DEFAULT, EdgeDrawColor);
MIL.MedgeDraw(MIL.M_DEFAULT, MilEdgeResult, GraphicList, MIL.M_DRAW_EDGES, MIL.M_DEFAULT, MIL.M_DEFAULT);

     上述代码只介绍了边缘检测的一般步骤,还有很多需要修改的参数需要随着自己实际的图像进行更改。下面对Edge中最常使用的MedgeControl进行介绍:

       MedgeControl描述此函数为边缘查找器上下文或边缘查找器结果缓冲区设置指定的控件。对于Edge Finder上下文,这些设置控制MedgeCalculate操作的执行,并选择MedgeCalculate应该计算哪些边缘特征。对于Edge Finder结果缓冲区,这些设置控制结果的后期操作。例如,要绘制用于计算结果的源图像的缩放区域,必须适当设置绘制控制值。

 MedgeControl参数: 

MIL.MedgeControl(MilEdgeContext , X , Y);//X、Y表示两个参数

X 描述 Y 描述
M_ACCURACY 设置边缘提取的精度

M_DISABLE

M_HIGH

DISABLE表示禁用,将以像素精度计算。

HIGH表示指定非常高的亚像素精度来计算。

M_ANGLE_ACCURACY  设置边缘检测时边角的精度

M_HIGH

M_LOW

字面理解就行
M_CHAIN_ALL_NEIGHBORS  设置如何构建边缘链

M_DISABLE

M_ENABLE

控制是否启用该参数,启用即指定用更多的信息构建边缘。如下图所示。

X 描述 Y 描述
M_DETAIL_LEVEL 设置图像提取的细节级别,越低的细节水平会发现更多的边缘,当然,这些边缘不一定是准确的。

M_HIGH

M_MEDIUM

M_VERY_HIGH

设置细节水平中、高、非常高三个等级。
M_FILTER_SMOOTHNESS 设置对图像的平滑度处理,也就是去噪程度.过大会改变图像边缘信息,过小也不能去除噪声,这个值需要合理设置。(对于边缘检测影响很大)

M_DEFAULT

VALUE

默认值为50,VALUE的设置范围为[0 , 100]
M_FILTER_TYPE 设置边缘检测的算子,MIL中默认使用的算子是SHEN-CASTAN,也就是沈峻算子

M_DERICHE

M_FREI_CHEN

M_PREWITT

M_SHEN

M_SOBEL

常见的几种算子,下图赋个公式吧。

X 描述 Y 描述
M_FLOAT_MODE 设置是否强制使用浮点精度计算边缘的所有处理。

M_DISABLE

M_ENABLE

M_MAGNITUDE_TYPE 设置如何在每个边缘计算边缘梯度幅度的大小。对于CONTOUR,幅度是边缘位置梯度矢量的范数。CREAST是边缘位置的最大值。

M_NORM

M_SQR_NORM

默认值:contour是M_SQR_NORM,CREAST是M_NORM。

M_NORM就是指梯度幅度,M_SQR_NORM是指梯度幅度的平方。

M_OVERSCAN 设置处理边界图像的扫描类型(IIR滤波器,这个参数会被忽略,例如SHEN和deriche)

M_DISABLE

M_MIRROR

不太理解这个参数

 还有很多,先写到这里吧。 后面慢慢补充~  

猜你喜欢

转载自blog.csdn.net/qq_37925923/article/details/132576806
今日推荐