Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: PHP и графика
 
 автор: Mookapek   (07.12.2009 в 02:00)   письмо автору
 
 

Стоит такая задача: на фотографии земли из космоса скрипт должен найти Землю.
Можно ли это сделать с помощью PHP, используя библиотеку GD? И как вообще такое примерно реализовывается?
Я представляю пока только такой подход: сканируем каждый пиксель картинки, и если цвет пикселя не темный, то этот пиксель принадлежит Земле и т.д. В общем не разбираюсь в этой теме. Как правильно подойти к такой задаче?

  Ответить  
 
 автор: DEM   (07.12.2009 в 02:44)   письмо автору
 
   для: Mookapek   (07.12.2009 в 02:00)
 

В голову приходит только нейронные сети... Понимаю, что довольно сложно и наверняка есть какое нить просто решение (или уже готовая библиотека), но всё же...

  Ответить  
 
 автор: sim5   (07.12.2009 в 04:22)   письмо автору
 
   для: Mookapek   (07.12.2009 в 02:00)
 

А на Земле не может быть темных пятен?

  Ответить  
 
 автор: Саня   (07.12.2009 в 10:02)   письмо автору
 
   для: sim5   (07.12.2009 в 04:22)
 

Нужно за раз оценивать площадь более одного пикселя.

  Ответить  
 
 автор: sim5   (07.12.2009 в 10:32)   письмо автору
 
   для: Саня   (07.12.2009 в 10:02)
 

А на Земле темными пятнами могут быть только пятна в 1рх? )

  Ответить  
 
 автор: Саня   (07.12.2009 в 10:35)   письмо автору
 
   для: sim5   (07.12.2009 в 10:32)
 

Для начала нужно хотя бы оценить картинку, которую пытается анализировать автор, а потом уже предлагать адекватный алгоритм. В частности и размер анализируемого поля пикселей. Возможно, предложенный вариант совсем не подойдёт автору.

  Ответить  
 
 автор: Mookapek   (09.12.2009 в 20:58)   письмо автору
 
   для: Саня   (07.12.2009 в 10:35)
 

Я думаю, что разумно начать с более простой задачи. Например нахождение центра голубого круга на черном фоне.
А разве размер изображения как-то влияет на алгоритм решения?

  Ответить  
 
 автор: Mookapek   (24.12.2009 в 00:30)   письмо автору
292.7 Кб
 
   для: Саня   (07.12.2009 в 10:35)
 

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

Ну например такая картинка.
Какой здесь может быть алгоритм?

  Ответить  
 
 автор: sim5   (24.12.2009 в 06:35)   письмо автору
18.8 Кб
 
   для: Mookapek   (24.12.2009 в 00:30)
 

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

  Ответить  
 
 автор: Mookapek   (24.12.2009 в 22:35)   письмо автору
 
   для: sim5   (24.12.2009 в 06:35)
 

>Размыть небольшим радиусом

Интересно, как все это сделать с помощью PHP? Какие функции могут выполнять подобные операции?

  Ответить  
 
 автор: sim5   (25.12.2009 в 05:27)   письмо автору
 
   для: Mookapek   (24.12.2009 в 22:35)
 

Фильтры - imagefilter()

  Ответить  
 
 автор: Mookapek   (25.12.2009 в 22:46)   письмо автору
 
   для: sim5   (25.12.2009 в 05:27)
 

Ну например, как весь космос черным сделать, чтобы потом легче было? Сейчас на картинке он усыпан звездами.

  Ответить  
 
 автор: sim5   (26.12.2009 в 08:22)   письмо автору
 
   для: Mookapek   (25.12.2009 в 22:46)
 

Применительно к тому изображению, которое прикреплено, то тут звезды ничем не отличаются от шума на фото. А как убирается шум - фильтрами типа median, blur и т.п..

  Ответить  
 
 автор: ~AquaZ~   (26.12.2009 в 12:31)   письмо автору
 
   для: sim5   (26.12.2009 в 08:22)
 

На ruseller.com можно поискать, я там видел урок по GD, там был GAUSSIAN BLUR

  Ответить  
 
 автор: sim5   (26.12.2009 в 12:38)   письмо автору
 
   для: ~AquaZ~   (26.12.2009 в 12:31)
 

А мне то зачем это советуете? Мне этого не надо.

  Ответить  
 
 автор: Mookapek   (12.01.2010 в 01:20)   письмо автору
 
   для: sim5   (26.12.2009 в 08:22)
 

Можете привести пример использования этих фильтров? На примере данного изображения.
Я попробовал некоторые фильтры (яркость, контрастность), но результат не очень - при уменьшении яркости, например, космос весь становиться черным, но часть Земли тоже.

  Ответить  
 
 автор: sim5   (12.01.2010 в 05:56)   письмо автору
 
   для: 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, таким образом задавая степень влияния фильтра на изображение.

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

Вы можете попробовать иначе. Вы знаете, что изображение именно такое и иного быть не может. Тогда, чтобы убрать лишние детали на нем, достаточно его уменьшить - будут удалены мириады звед. Обесцветить, добавить контрастности - небо будет черным. Хотя не идеально черным, поэтому вы должны иметь ввиду цвет не с нулевыми значениями, а некий диапазон черного на шкале серого. Ну а дальше распознать образ - окружность.

Давно, в разделе Разное, кто-то интересовался вопросами распознавания образов, а я в это время скачивал с одного сайта книги, и среди списка литературы на этом сайте были книги как раз по этим вопросам - распознавание образов. У меня нет ссылки на этот сайт, и как называлась тема в Разном, где я выложил ссылку на эти книги, я тоже не помню. Поищите, ну или непосредственно в сети поищите такую литературу, возможно она вам и поможет решить ваши задачи оптимально.

  Ответить  
 
 автор: GeorgeIV   (25.12.2009 в 10:13)   письмо автору
 
   для: Mookapek   (07.12.2009 в 02:00)
 

А зачем именно PHP? Почему не использовать другие средства, более приспособленные?

  Ответить  
 
 автор: Mookapek   (25.12.2009 в 22:45)   письмо автору
 
   для: GeorgeIV   (25.12.2009 в 10:13)
 

Из языков программирования я только PHP знаю более менее. В общем на PHP хочу прогу написать.

  Ответить  
 
 автор: Петр   (12.01.2010 в 08:56)   письмо автору
 
   для: Mookapek   (07.12.2009 в 02:00)
 

Задача интересная, но с данной фоткой никак не решаемая, т.к. имеется белые облака, программа не сможет "догадаться", что находится под облаками вода или всетаки суша.
Это подсилу только человеку, т.к. у всех имеется представление о географии материков)

  Ответить  
 
 автор: Mookapek   (12.01.2010 в 15:31)   письмо автору
 
   для: Петр   (12.01.2010 в 08:56)
 

Да не, нужно найти не землю (сушу), а Землю (планету). Так что, по идеи вся задача сводится лишь к тому, чтоб сделать одноцветный космос.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования