在python中去除图像中的十字标记

我正在开展一个图像处理项目,需要首先去除超声图像中的十字标记。我尝试了OpenCV中的各种过滤器。当内核很大时,它可能会去除标记,但会丢失很多细节并且太模糊。这是一个例子:

https://img4.mukewang.com/64e46ff2000136e405200391.jpg

潇潇雨雨
浏览 1626回答 1
1回答

交互式爱情

这是一种方法 - 我将让您在最后填写详细信息。我基本上是在黑色背景上创建一个白色十字,并使用“模板匹配”在超声图像中查找此类内容:#!/usr/bin/env python3import numpy as npimport cv2# Make a white cross (+ sign) on a black backgroundcross = np.zeros((10,10), np.uint8)cross[..., [4,5]] = 255cross[[4,5], ...] = 255十字架现在看起来像这样:array([[  0,   0,   0,   0, 255, 255,   0,   0,   0,   0],       [  0,   0,   0,   0, 255, 255,   0,   0,   0,   0],       [  0,   0,   0,   0, 255, 255,   0,   0,   0,   0],       [  0,   0,   0,   0, 255, 255,   0,   0,   0,   0],       [255, 255, 255, 255, 255, 255, 255, 255, 255, 255],       [255, 255, 255, 255, 255, 255, 255, 255, 255, 255],       [  0,   0,   0,   0, 255, 255,   0,   0,   0,   0],       [  0,   0,   0,   0, 255, 255,   0,   0,   0,   0],       [  0,   0,   0,   0, 255, 255,   0,   0,   0,   0],       [  0,   0,   0,   0, 255, 255,   0,   0,   0,   0]], dtype=uint8)继续代码:# Load ultrasound imageim = cv2.imread('ultrasound.jpg', cv2.IMREAD_GRAYSCALE)# Look for crossesres = cv2.matchTemplate(im, cross, cv2.TM_CCORR_NORMED)# Contrast stretchnorm = cv2.normalize(res, None, alpha=0, beta=255, norm_type=cv2.NORM_MINMAX)cv2.imwrite("result.png", res)这给出了:然后,您可以使用阈值找到峰值,如下所示:以这些点为中心绘制十字,最后使用修复来填充它们。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python