【发布时间】:2021-08-24 13:40:39
【问题描述】:
【问题讨论】:
标签: filter cv2 gaussian medical-imaging
【问题讨论】:
标签: filter cv2 gaussian medical-imaging
在蒙版上应用高斯模糊滤镜时,它只会模糊蒙版的边界。
例子:
import cv2
orig_img = cv2.imread('mask.png', cv2.IMREAD_GRAYSCALE) # Read image as Grayscale.
blur = cv2.GaussianBlur(orig_img, (15, 15), 0)
如果您想保持遮罩不变,并且只平滑遮罩周围的像素,我建议使用少量迭代,并取最大值。
获取原始图像和模糊图像之间的最大值,确保原始蒙版像素保持不变,因为它们的值是 255(可能的最大值)。
这是一个代码示例:
import cv2
orig_img = cv2.imread('mask.png', cv2.IMREAD_GRAYSCALE) # Read image as Grayscale.
img = orig_img.copy()
for i in range(10):
blur = cv2.GaussianBlur(img, (15, 15), 0)
img = cv2.max(blur, img) # Getting the maximum in order to mask the margins brighter
blur = cv2.max(orig_img, img) # Getting the maximum for keeping the original mask pixels unmodified.
cv2.imshow('blur', blur)
cv2.waitKey()
cv2.destroyAllWindows()
另一种选择是在GaussianBlur 之前使用形态膨胀:
import cv2
orig_img = cv2.imread('mask.png', cv2.IMREAD_GRAYSCALE) # Read image as Grayscale.
img = cv2.dilate(orig_img, cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (7, 7)))
blur = cv2.GaussianBlur(img, (15, 15), 0)
blur = cv2.max(blur, orig_img) # Getting the maximum for keeping the original mask pixels unmodified.
cv2.imshow('blur', blur)
cv2.waitKey()
cv2.destroyAllWindows()
【讨论】: