|
|
|
| Стоит такая задача: на фотографии земли из космоса скрипт должен найти Землю.
Можно ли это сделать с помощью PHP, используя библиотеку GD? И как вообще такое примерно реализовывается?
Я представляю пока только такой подход: сканируем каждый пиксель картинки, и если цвет пикселя не темный, то этот пиксель принадлежит Земле и т.д. В общем не разбираюсь в этой теме. Как правильно подойти к такой задаче? | |
|
|
|
|
|
|
|
для: Mookapek
(07.12.2009 в 02:00)
| | В голову приходит только нейронные сети... Понимаю, что довольно сложно и наверняка есть какое нить просто решение (или уже готовая библиотека), но всё же... | |
|
|
|
|
|
|
|
для: Mookapek
(07.12.2009 в 02:00)
| | А на Земле не может быть темных пятен? | |
|
|
|
|
|
|
|
для: sim5
(07.12.2009 в 04:22)
| | Нужно за раз оценивать площадь более одного пикселя. | |
|
|
|
|
|
|
|
для: Саня
(07.12.2009 в 10:02)
| | А на Земле темными пятнами могут быть только пятна в 1рх? ) | |
|
|
|
|
|
|
|
для: sim5
(07.12.2009 в 10:32)
| | Для начала нужно хотя бы оценить картинку, которую пытается анализировать автор, а потом уже предлагать адекватный алгоритм. В частности и размер анализируемого поля пикселей. Возможно, предложенный вариант совсем не подойдёт автору. | |
|
|
|
|
|
|
|
для: Саня
(07.12.2009 в 10:35)
| | Я думаю, что разумно начать с более простой задачи. Например нахождение центра голубого круга на черном фоне.
А разве размер изображения как-то влияет на алгоритм решения? | |
|
|
|
|
 292.7 Кб |
|
|
для: Саня
(07.12.2009 в 10:35)
| | Для начала нужно хотя бы оценить картинку, которую пытается анализировать автор, а потом уже предлагать адекватный алгоритм.
Ну например такая картинка.
Какой здесь может быть алгоритм? | |
|
|
|
|
 18.8 Кб |
|
|
для: Mookapek
(24.12.2009 в 00:30)
| | Размыть небольшим радиусом, обесцветить, добавить контрастность, а потом искать окружность. | |
|
|
|
|
|
|
|
для: sim5
(24.12.2009 в 06:35)
| | >Размыть небольшим радиусом
Интересно, как все это сделать с помощью PHP? Какие функции могут выполнять подобные операции? | |
|
|
|
|
|
|
|
для: Mookapek
(24.12.2009 в 22:35)
| | Фильтры - imagefilter() | |
|
|
|
|
|
|
|
для: sim5
(25.12.2009 в 05:27)
| | Ну например, как весь космос черным сделать, чтобы потом легче было? Сейчас на картинке он усыпан звездами. | |
|
|
|
|
|
|
|
для: Mookapek
(25.12.2009 в 22:46)
| | Применительно к тому изображению, которое прикреплено, то тут звезды ничем не отличаются от шума на фото. А как убирается шум - фильтрами типа median, blur и т.п.. | |
|
|
|
|
|
|
|
для: sim5
(26.12.2009 в 08:22)
| | На ruseller.com можно поискать, я там видел урок по GD, там был GAUSSIAN BLUR | |
|
|
|
|
|
|
|
для: ~AquaZ~
(26.12.2009 в 12:31)
| | А мне то зачем это советуете? Мне этого не надо. | |
|
|
|
|
|
|
|
для: sim5
(26.12.2009 в 08:22)
| | Можете привести пример использования этих фильтров? На примере данного изображения.
Я попробовал некоторые фильтры (яркость, контрастность), но результат не очень - при уменьшении яркости, например, космос весь становиться черным, но часть Земли тоже. | |
|
|
|
|
|
|
|
для: Mookapek
(12.01.2010 в 01:20)
| | Да примеры применения фильтров есть и в мануале. Но поищите в сети и почитайте о фильтрах, я имеею ввиду не GD, а именно о фильтрах - их матрицах. Возможно вы уже сталкивались с таким:
фильтр размытия изображения:
a a a
a 0 a
a a a
где а-это какое-либо целое число, обычно просто 1. При применении этой матрицы к изображению следует разделить полученный результат на величину a*8 (величина a находится в восьми клетках). Если а равно 1 то, можно просто сдвинуть результат на 3 разряда вправо (8 - это третья степень двойки). Для осуществления размытия, фильтр применяется последовательно к каждой составляющей цвета изображения (RGB - красный, зеленый, синий), а затем в итоге получаем результирующий цвет.
а это, к примеру, матрица для теснения изображения:
a a a
a 0 -a
-a -a -a
Такие матрицы можно применять в GD, таким образом задавая степень влияния фильтра на изображение.
Например, я обрабатываю изображение в шопике, это значит, что весь процесс я контролирую визуально, добиваясь необходимого мне результата. Вы делаете это программно, то есть практически вслепую, и чтобы добиться необоходимого, нужен анализ изображения, в то же время для анализа его, желательно уже убрать лишнее. Вот такая дилемма.
Вы можете попробовать иначе. Вы знаете, что изображение именно такое и иного быть не может. Тогда, чтобы убрать лишние детали на нем, достаточно его уменьшить - будут удалены мириады звед. Обесцветить, добавить контрастности - небо будет черным. Хотя не идеально черным, поэтому вы должны иметь ввиду цвет не с нулевыми значениями, а некий диапазон черного на шкале серого. Ну а дальше распознать образ - окружность.
Давно, в разделе Разное, кто-то интересовался вопросами распознавания образов, а я в это время скачивал с одного сайта книги, и среди списка литературы на этом сайте были книги как раз по этим вопросам - распознавание образов. У меня нет ссылки на этот сайт, и как называлась тема в Разном, где я выложил ссылку на эти книги, я тоже не помню. Поищите, ну или непосредственно в сети поищите такую литературу, возможно она вам и поможет решить ваши задачи оптимально. | |
|
|
|
|
|
|
|
для: Mookapek
(07.12.2009 в 02:00)
| | А зачем именно PHP? Почему не использовать другие средства, более приспособленные? | |
|
|
|
|
|
|
|
для: GeorgeIV
(25.12.2009 в 10:13)
| | Из языков программирования я только PHP знаю более менее. В общем на PHP хочу прогу написать. | |
|
|
|
|
|
|
|
для: Mookapek
(07.12.2009 в 02:00)
| | Задача интересная, но с данной фоткой никак не решаемая, т.к. имеется белые облака, программа не сможет "догадаться", что находится под облаками вода или всетаки суша.
Это подсилу только человеку, т.к. у всех имеется представление о географии материков) | |
|
|
|
|
|
|
|
для: Петр
(12.01.2010 в 08:56)
| | Да не, нужно найти не землю (сушу), а Землю (планету). Так что, по идеи вся задача сводится лишь к тому, чтоб сделать одноцветный космос. | |
|
|
|