Очистка пикселей с карты - PullRequest
1 голос
/ 23 февраля 2011

map

У нас есть эта карта, нам нужно использовать PHP, чтобы убрать все оттенки синего, а также проценты. Проблема в том, что некоторые проценты имеют тот же цвет, что и границы, а в других случаях проценты переходят в границу. Нам нужно использовать это изображение.

Ответы [ 3 ]

4 голосов
/ 24 февраля 2011

Не существует (AFAIK) действительно простых способов.

Самый простой способ не дает хороших результатов: разделяйте каналы и удаляйте мелкие компоненты.

Результат таков:

enter image description here

Как видите, осталось несколько цифр и знаков процента, поскольку они связаны с разделительными линиями, и удаление мелких компонентов для них не работает.

Если вам нужна лучшая работа, вы должны сопоставить изображение с шаблоном каждого номера, и после идентификации удалите его.

Здесь вы можете увидеть результат корреляции с числом «2»:

enter image description here

Идентифицирован один неправильный «2» (см. Вверху слева), поэтому для общей процедуры может потребоваться более сложный подход.

В любом случае, я думаю, что подобные манипуляции намного превосходят то, что вы можете ожидать от K-12.

НТН!

Редактировать

Согласно вашему запросу, некоторые подробности о первом методе.

Сначала вы разделяете три канала и получаете три изображения:

enter image description here

Вы держите третий (синий канал)

Затем вам нужно удалить меньшие компоненты. Есть много способов сделать это, возможно, самый простой из них - это обнаружение подключения, например, в алгоритме заливки , но вы просто измеряете компоненты, не заполняя их.
Основная (не оптимизированная) идея - перемещаться по каждому пикселю изображения и подсчитывать, сколько пикселей «связано» с ним. Если число меньше указанного (пороговое), вы просто удаляете весь набор. В большинстве библиотек для работы с изображениями все эти функции уже реализованы.

1 голос
/ 23 февраля 2011

Для этого конкретного изображения, если вы откроете изображение в программном обеспечении для редактирования изображений, преобразуете режим из индекса в истинный цвет (RGB), а затем уклоняет цвет от всего изображения с желтым (RGB: 255,255,0), вы получаете с черно-белым изображением, состоящим из контуров и цифр. (это также, как синий канал выглядит как BTW)

Так что либо отбросьте красный и зеленый каналы, либо реализуйте алгоритм уклонения цвета.

Другой альтернативой является выборка каждого пикселя и установка компонентов R & G этого пикселя в значение B

edit: вообще-то, я забыл про белые цифры. чтобы получить их, залейте внешний белый с помощью rgb (0,0,255), инвертируйте все изображение и уклоните цвет с помощью (255,255,0), красный или зеленый канал теперь являются пропущенными числами. Наложите их поверх обработанного изображения из предыдущих шагов.

0 голосов
/ 23 февраля 2011

Избавиться от затененных цветов должно быть легко.

Избавиться от цифр сложнее. Я бы:

  • Создайте таблицу поиска данных пикселей, связанных с каждым числом и знаком%.
  • При очистке области ищите цифры (черные или белые) и убирайте только точные шаблоны из таблицы поиска.
  • Восстановить границу между областями, добавив черный цвет между различными оттенками.

Невозможно сделать это с гарантированной точностью просто потому, что цифры скрывают оригинальную информацию. Тем не менее, я думаю, что приведенные выше шаги позволят вам достичь почти 100% точности без особых усилий.

...