У меня есть несколько изображений, которые выглядят примерно так: Обрезка изображения, основываясь на значениях
Orange представляет значения, равные 0, белые представляют значения, равные 255, синий представляет собой поле, где значения варьируются от 0 до 255. Я хотел бы избавиться от оранжевой области, что немного отличается в каждом изображении. Каков наилучший способ сделать это?
EDIT 1
Я думал, что этот ответ может помочь: bounding box approach. исключением, что я хотел бы получить массив A_extract
и не A_trim
:
A = np.array([[0, 0, 0, 0, 0, 0, 0],
[0, 255, 0, 0, 0, 0, 0],
[0, 0, 255, 255, 255, 255, 0],
[0, 0, 255, 0, 255, 0, 0],
[0, 0, 255, 255, 255, 0, 0],
[0, 0, 0, 255, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0]])
A_trim = np.array([[255, 0, 0, 0, 0],
[ 0, 255, 255, 255, 255],
[ 0, 255, 0, 255, 0],
[ 0, 255, 255, 255, 0],
[ 0, 0, 255, 0, 0]])
A_extract = np.array([[255, 255, 255],
[255, 0, 255],
[255, 255, 255])
Так в основном, код должен нашел прямоугольник, в котором все элементы в первой и последней строке (а также в первой и последней столбец) должны иметь одинаковое значение (например, 255).
РЕДАКТИРОВАТЬ 2
Реального изображения является секретными спутниковыми изображениями, которая хранится в виде массива Numpy (с формой CCA. 7000x8000), а не RGB изображения. Вот как это выглядит:
- оранжевый = 0
- зеленый = 2
- розовый = 3
- белый = 255
Цель состоит в том, чтобы избавиться от 0 значений просто по краям.
Да, найти ограничивающий прямоугольник является первым шагом. Если обрезанное изображение на ограничительной рамке не является идеальным, вы можете захотеть заменить нежелательные оранжевые цвета на белый цвет в этом примере или сделать их прозрачными. – Quinn
Посмотрите на этот вопрос: http://stackoverflow.com/questions/16702966/rotate-image-and-crop-out-black-borders/27137047 –
Я бы порекомендовал загружать настоящее изображение не изображение, которое «выглядит чем-то» как это". Лично я понятия не имею, что вы имеете в виду, говоря «Оранжевый представляет значения, равные 0, белые представляют значения, равные 255, синий - это поле, где значения меняются от 0 до 255». – Bonzo