Я обычно использую GIMP для этого --- это, вероятно, должно быть уточнено для автоматических процедур. Моя процедура выглядит следующим образом:
Я загружаю изображение, в этом случае http://rlog.rgtti.com/wp-content/uploads/2013/01/10/macro-lenses-are-expensive-all-of-them/paseo_15sep_more_rosse.jpg
Теперь я копирую фоновый слой и преобразую новый слой в оттенки серого.
Я применяю функцию обнаружения края по разности гауссов:
![enter image description here](https://i.stack.imgur.com/1uAJ0.png)
игра с параметрами для определения хорошей области. Примените фильтр
- Теперь вы применяете порог к изображению:
![enter image description here](https://i.stack.imgur.com/gBrua.png)
... и это карта вашей резкости (насколько резкой вы решили на предыдущем шаге, установив параметры для фильтров).
- Теперь вы можете использовать «инструменты выбора по цвету», щелкнуть по черному, а затем немного увеличить выделение:
![enter image description here](https://i.stack.imgur.com/X0Zna.png)
... как только вы будете удовлетворены, вы можете сохранить выборку на канал.
Обратите внимание, что выделение не включает острые области, которые окрашены равномерно, без краев. Я не знаю никакого способа сделать это автоматически (возможно ли это?); но вы можете скопировать канал на новый слой и
- вручную отредактируйте слой, чтобы заполнить резкие области черным цветом:
![enter image description here](https://i.stack.imgur.com/lsQ9O.png)
... и повторите процедуру выбора по цвету, чтобы создать новую маску.