白い領域のマスクを作成するためのしきい値処理とその後のインペインティングは、この画像のほとんどの場合に機能します。
img = cv2.imread('ultrasound.png')
mask = cv2.threshold(img, 210, 255, cv2.THRESH_BINARY)[1][:,:,0]
dst = cv2.inpaint(img, mask, 7, cv2.INPAINT_NS)
これがマスクです:
これが修復された画像です:
しきい値マスクは正確ではなく、文字がない明るい領域が含まれていることに注意してください。しかし、さらに重要なことに、中央の十字の暗い影など、削除する必要のある領域がマスクに含まれていない場合は特に問題があります。これがその地域のズームインです。
マスクは白い領域だけで、暗い領域は覆っていません。しきい値処理では不十分なこのような問題の場合、マスクを手動で調整できます。ここで私はマスクの元の十字架を取り、影も覆うようにシフトします。 (同様に、必要に応じて、マスクに含めるべきではない領域を手動で削除できます)
crosses = mask[235:267,290:320] | mask[233:265,288:318]
mask[235:267,290:318] = crosses
dst = cv2.inpaint(img, mask, 7, cv2.INPAINT_NS)