Маркировка медицинского изображения

Я хочу извлечь основную истину из своих медицинских данных. Ищу программу, которая может с этим помочь. Я хочу сделать следующее. Я хочу выделить определенную область и сделать ее белой, а в другой - черной. Так что у меня в руках была бы истина. Примеры есть на картинках. Примечание: у меня нет достоверной информации, есть только оригинальные изображения без достоверной информации. Мне нужно нарисовать и извлечь эту область из исходного изображения ... введите здесь описание изображения Заранее благодарю за помощь.

введите здесь описание изображения


person pascaltx    schedule 30.03.2020    source источник


Ответы (2)


Давайте разделим ваше изображение на две составляющие части, сначала image.png:

введите здесь описание изображения

и во-вторых, mask.png:

введите здесь описание изображения

Теперь вы можете просто использовать ImageMagick в Терминале без написания кода. У вас есть несколько вариантов. Вы также можете:

  • сделать черные части маски прозрачными в результате, или
  • Сделайте черные части маски в результате черными.

Давайте сначала сделаем их прозрачными, поэтому мы фактически копируем маску в изображение и обрабатываем ее как слой альфа / прозрачности:

magick image.png mask.png -compose copyalpha -composite result.png

введите здесь описание изображения

А теперь давайте сделаем их черными, выбрав более темное из исходного изображения и маски в каждом месте пикселя - отсюда и режим наложения darken:

magick image.png mask.png -compose darken -composite result.png

введите здесь описание изображения

Обратите внимание, что если вы используете первый метод, исходная информация, которая кажется прозрачной, все еще присутствует на изображении и может быть восстановлена, поэтому не используйте этот метод для сокрытия конфиденциальной информации.


Если вы хотите использовать метод прозрачности из Python с PIL, вы можете:

from PIL import Image

# Read image and mask as PIL Images
im = Image.open('image.png').convert('RGB')
ma = Image.open('mask.png').convert('L')

# Merge in mask as alpha channel and save
im.putalpha(ma)
im.save('result.png')

Или метод прозрачности с OpenCV и Numpy:

import cv2
import numpy as np

# Open image and mask as NMumoy arrays
im = cv2.imread('image.png')
ma = cv2.imread('mask.png', cv2.IMREAD_GRAYSCALE) 

# Merge mask in as alpha channel and save
res = np.dstack((im,ma))
cv2.imwrite('result.png', res)

Если вы хотите использовать метод blacken с Python и PIL / Pillow, используйте:

from PIL import Image, ImageChops

# Read image and mask as PIL Images
im = Image.open('image.png').convert('RGB')
ma = Image.open('mask.png').convert('RGB')

# Choose darker image at each pixel location and save
res = ImageChops.darker(im, ma)
res.save('result.png')

Если вы хотите использовать метод blacken с OpenCV и Numpy, используйте приведенный выше код, но замените строку np.dstack() на:

res = np.minimum(im, ma[...,np.newaxis])
person Mark Setchell    schedule 30.03.2020
comment
Большое спасибо за быстрый ответ. У меня нет изображений-масок, а есть только оригинальные изображения. Я хочу выбрать поле на этой картинке и сделать его белым, а остальное - черным. Поэтому я хочу вручную замаскировать изображение без маски. Изображение, которое я хочу сделать, показано на картинке. введите описание изображения здесь. область, в которой я хочу выделить красные линии и сделать ее белой внутри, другая область - черной. Paint может это сделать, но для этого потребуется несколько процессов и много времени. Заранее спасибо. - person pascaltx; 30.03.2020

Я настоятельно рекомендую ITK - SNAP для этой задачи. Вы можете вручную пометить свои входные изображения определенными метками (1 для переднего плана, 0 для фона в вашем примере) и очень удобно экспортировать наземную истину.

person code-lukas    schedule 30.03.2020