Ответ 1
Проблема с -threshold Y%
заключается в следующем: он преобразует все пиксели, которые достаточно темны в черном!
Если у вас есть другой темный цвет (темно-коричневый, темно-синий, темно-красный, темно-серый или черный), вы ошибочно идентифицируете его как "дерево".
Если я правильно вас понимаю, вы ищете только те пиксели, которые имеют какой-то зеленый или темно-зеленый цвет.
Поэтому я предлагаю сравнить свой собственный подход с некоторым вариантом следующей команды:
compare \
-size 600x600 \
-fuzz 30% \
http://i.stack.imgur.com/kqMtt.png \
xc:'darkgreen' \
output-1.png
Вместо "darkgreen" вы можете использовать соответствующее значение цвета "# 006400", то же самое:
compare \
-size 600x600 \
-fuzz 30% \
http://i.stack.imgur.com/kqMtt.png \
xc:'#006400' \
output-2.png
Вышеупомянутая команда compare
создает output-1.png
из двух входных изображений со следующими характеристиками:
- сравнение исходного изображения выполняется с динамически созданным (
xc:
) 600x600 пиксельным патчем однородного цвета "darkgreen"; - вывод показывает исходное изображение в виде бледного фона;
- вывод показывает красные пиксели, где соответствующие пиксели исходного изображения отличаются от значения цвета "темный" после учета "фактора фаз" 30% (где "0%" означает точное соответствие значения цвета );
- на выходе отображаются белые/полупрозрачные пиксели, где соответствующие пиксели исходного изображения похожи на цвет "темный" (в пределах 30%).
Вот результат в бок о бок сравнение:
Конечно, вы можете играть с фактором fuzz, а также с точным определением цветового значения "darkgreen". Вот результат для -fuzz 25%
:
Если вы хотите, чтобы сравнение показывало обратные цвета (отображаются красные пиксели, где исходное изображение имеет зеленоватые цвета, прозрачный/белый - там, где пиксели были не зелеными), используйте инвертированный цвет "darkgreen" в качестве сравнительного патча (это какой-то розовый, BTW) и другой фактор fuzz:
compare \
-size 600x600 \
-fuzz 70% \
http://i.stack.imgur.com/kqMtt.png \
xc:'#ff9bff' \
output-3.png
Теперь результат:
Если вы хотите, чтобы на выходе НЕ отображалось исходное изображение в виде бледного фона, добавьте -compose src
к вашим командам:
compare \
-size 600x600 \
-fuzz 70% \
http://i.stack.imgur.com/kqMtt.png \
xc:'#ff9bff' \
-compose src \
output-4.png
Вы также можете изменить красный цвет, который выделяет пиксели "треугольник" в некоторый другой цвет. Использовать черный:
compare \
-highlight-color black \
-size 600x600 \
-fuzz 60% \
http://i.stack.imgur.com/kqMtt.png \
xc:'#ff9bff' \
-compose src \
output-5.png
Теперь вы можете использовать результат последней команды как "маска". Наложите эту маску на исходное изображение и составьте их таким образом, чтобы в результате можно было отобразить только "только дерево" части изображения, забрав все остальные части.