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

本文介绍了OpenCV中的图像求差绝对值函数cvAbsDiff和形态学开运算cvMorphologyEx的使用方法。通过实例展示了如何利用这两个函数处理图像,包括图像差的绝对值计算、二值化、形态学开运算,以清除噪声并突出图像特征。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)。开运算通常可以用来统计二值图像中的区域属,如已将显微镜载玻片上观察到的细胞图像作了阈值化处理,可以使用开运算将相邻的细胞分离开来,然后再计算图像中的区域细胞数目。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值