【发布时间】:2016-04-20 08:40:58
【问题描述】:
我需要创建一个蒙版来根据两个相关图像检索一个对象(前景对象)。
图片1:
[![在此处输入图片描述]
图 2:
[![在此处输入图片描述]
图像包含一个前景对象和一个带纹理的背景。 这两个图像几乎相同,只是在 image2 中,前景对象可能发生了一些变化(它可能已被旋转、平移或/和缩放)。
使用 OpenCV,我做了以下事情:
- 执行图像对齐(使用
findTransformECC和参数cv::MOTION_AFFINE)以获得前景变换; - 根据上面的变换矩阵对image1进行变换(使用
cv::warpAffine和参数cv::INTER_LINEAR+cv::WARP_INVERSE_MAP); - 在 image2 和已经转换的 image1 之间做绝对差异(
cv::absdiff&cv::thresholdwith paramcv::THRESH_BINARY_INV)。
我想我已经接近我的目标了,但由于背景区域上残留的噪音,我仍然无法获得干净的前景对象蒙版。
去除 image_absdiff_invert.png(上图)上的所有噪点以创建前景对象的干净蒙版的解决方案是什么?
【问题讨论】:
-
这里是 image2.png
查看 imgur.com 上的帖子
跨度> -
image2.png [链接] (i.imgur.com/aAafY4K.jpg?1)
-
尝试腐蚀掩码一次,然后是扩张(打开运算符),然后使用几个关闭运算符(扩张后腐蚀)
-
米卡,谢谢你的提示。我明天试试。我想在打开和关闭之后我可以做 findcountor 来获取前景对象。
标签: c++ opencv image-processing noise-reduction