1 回答

TA貢獻(xiàn)1712條經(jīng)驗 獲得超3個贊
這是一種方法 - 我將讓您在最后填寫詳細(xì)信息。我基本上是在黑色背景上創(chuàng)建一個白色十字,并使用“模板匹配”在超聲圖像中查找此類內(nèi)容:
#!/usr/bin/env python3
import numpy as np
import cv2
# Make a white cross (+ sign) on a black background
cross = np.zeros((10,10), np.uint8)
cross[..., [4,5]] = 255
cross[[4,5], ...] = 255
十字架現(xiàn)在看起來像這樣:
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)
繼續(xù)代碼:
# Load ultrasound image
im = cv2.imread('ultrasound.jpg', cv2.IMREAD_GRAYSCALE)
# Look for crosses
res = cv2.matchTemplate(im, cross, cv2.TM_CCORR_NORMED)
# Contrast stretch
norm = cv2.normalize(res, None, alpha=0, beta=255, norm_type=cv2.NORM_MINMAX)
cv2.imwrite("result.png", res)
這給出了:
然后,您可以使用閾值找到峰值,如下所示:
以這些點為中心繪制十字,最后使用修復(fù)來填充它們。
添加回答
舉報