Я ищу надежный способ извлечь передний план из изображения, где фон имеет некоторый шум в нем.Извлечение изображения переднего плана в качестве маски по пороговому значению
Таким образом, изображение, которое я хочу использовать его на это:
Моя попытка была использовать Otsu thresholding
. Я делал это в Python следующим образом:
from skimage.filter import threshold_otsu
import os.path as path
import matplotlib.pyplot as plt
img = io.imread(path.expanduser('~/Desktop/62.jpg'))
r_t = threshold_otsu(img[:, :, 0])
g_t = threshold_otsu(img[:, :, 1])
b_t = threshold_otsu(img[:, :, 2])
m = np.zeros((img.shape[0], img.shape[1]), dtype=np.uint8)
mask = (img[:, :, 0] < r_t) & (img[:, :, 1] < g_t) & (img[:, :, 2] < b_t)
m[~mask] = 255
plt.imshow(m)
plt.show()
Это дает R, G, B порог, как (62 67 64), который является немного высока. Результат:
Это изображение является также один из снимков, где Otsu thresholding
работали лучше. Если я использую ручной порог как значение 30, он работает достаточно хорошо. Результат:
мне было интересно, если есть некоторые другие подходы, которые я должен попробовать. Сегментация действительно не моя область знаний, и то, что я могу сделать из коробки, кажется ограниченным.
Это довольно хорошо. Я попробую с некоторыми другими изображениями и посмотрю, насколько он прочен. – Luca
@Luca, если у вас есть другие изображения, а некоторые не работают, просто выберите худшие три или около того и спросите еще раз (я бы предпочел в новом вопросе). – Trilarion
Спасибо Trillion. Это очень любезно с вашей стороны. Я буду. У меня такое чувство, что я могу заставить его работать сейчас – Luca