首页 > 解决方案 > 如何从图像中的对象中去除边缘噪声

问题描述

我创建了一个衣服蒙版来从图像中提取衣服对象,但是蒙版中包含一些白噪声,下图是插图(外面的黑色区域是背景)。

我想去除遮罩中的“白色”边缘噪声,我尝试过使用简单的方法检查像素值是否> = 240,结果有所改善但仍然不完美,如下图:

我想完全消除白噪声,但不知道该怎么做。我正在使用 python opencv,如果有人可以帮助我,我将不胜感激。

谢谢!

标签: pythonopencvmasknoise

解决方案


我会建议一个简单的管道来消除你的边缘噪声:

import numpy as np
import cv2

gray = cv2.imread("t1yfp.jpg", cv2.IMREAD_GRAYSCALE)

#  eliminate white blobs
kernel = np.ones((5, 5), np.float32)/25
processedImage = cv2.filter2D(gray, -1, kernel)
gray[processedImage > 100] = 0

#  eliminate pixels with very large value
gray[gray > 230] = 0

#  eliminate last remeaning outlier white pixels
gray = cv2.medianBlur(gray, 5)



#  display result
cv2.imshow("res", gray)
cv2.waitKey(0)

在最后一步之后,图像蒙版内的白色像素也将被消除。您也许可以使用平均滤波器来恢复它们。结果如下:
在此处输入图像描述


推荐阅读