Я пытаюсь извлечь маску с "неизвестной" формой. Я объясню себя лучше:
Мои исходные данные состоят из матрицы с NaN, которые более или менее окружают истинные данные. Я использовал оператор sobel для определения края:
#data is a matrix with Nan
mask = np.isnan(data)
data[mask] = 0
data[~mask] = 1
out = sobel(data) #sobel is a function that returns the gradient
На рисунке показан результат операции sobel. Поскольку исходные данные также содержат NaN среди истинных данных, оператор sobel обнаруживает внутренние границы. Я хочу попробовать метод, чтобы обнаружить только внешние края (фигура, которая выглядит как ромб). Учтите, что может изменяться не только эта форма (это может быть квадрат или прямоугольник), но также может меняться и положение (т. Е. Может быть децентрировано или очень мало по отношению к размеру изображения). В результате я получу маску со всем внешним пикселем, установленным в значение «Истина» (или «Ложь»), а для всех внутренних пикселей будет установлено значение «Ложь» (или «Истина»).
Спасибо!