当前位置:   article > 正文

opencv图像求差的绝对值cvAbsDiff和形态学开运算cvMorphologyEx

cvabsdiff

AbsDiff与cvMorphologyEx

我们先来学习图像求差的绝对值这个函数:AbsDiff,它的作用是:OpenCV 中计算两个数组差的绝对值的函数。


函数原型:
void cvAbsDiff( const CvArr* src1, const CvArr* src2, CvArr* dst );

src1:第一个原数组
src2:第二个原数组
dst:输出数组

原理是:dst(I)c = abs(src1(I)c - src2(I)c).
所有数组必须有相同的数据类型相同的大小(或ROI大小)

拓展一下:

AbsDiffS:计算数组元素与数量之间差的绝对值,注意与上面不同的是数量value。


void cvAbsDiffS( const CvArr* src, CvArr* dst, CvScalar value );

#define cvAbs(src, dst) cvAbsDiffS(src, dst, cvScalarAll(0))

src:原数组.
dst:输出数组
value:数量.

原理是:dst(I)c = abs(src(I)c - valuec).

所有数组必须有相同的数据类型相同的大小(或ROI大小)


然后,我们学习形态学转换开运算cvMorphologyEx这个函数。

void cvMorphologyEx(const CvArr* src, CvArr* dst, CvArr* tmp, IplConvKernel* element, int operation, int iterations = 1);

参数说明:

src:输入图像
dst:输出图像
tmp:临时图像,某些操作会用到。需要使用tmp时,它应与原图像有同样的大小
element:结构元素
operation:形态操作的类型,有以下几种可用的类型:
-CV_MOP_OPEN开运算不需要临时图像
-CV_MOP_CLOSE闭运算不需要临时图像
-CV_MOP_GRADIENT形态梯度需要临时图像
-CV_MOP_TOPHAT“礼帽”src = dst情况下需要
-CV_MOP_BLACKHAT”黑帽“src = dst情况下需要


开运算:是先腐蚀然后再膨胀:dst = open(src, element) = dilate(erode(src, element), element)。开运算通常可以用来统计二值图像中的区域属,如已将显微镜载玻片上观察到的细胞图像作了阈值化处理,可以使用开运算将相邻的细胞分离开来,然后再计算图像中的区域细胞数目。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/423021
推荐阅读
相关标签
  

闽ICP备14008679号