Интерполяция значений по карте
Билинейная интерполяция подойдёт, или что-то сложнее нужно?
И значния этих данных разные - где-то десятки и сотни, там значения нужны до единицы, а где-то - первые единецы (максимум 3 там нужны значени с тоностью до сотых...
Изолинии известны только по карт, выделять (т.е. оцифровывать) их придется.
Билинейная интерполяция подойдет, насчет более сложного - наверное смысла нет...
Есть ли "подоснова" без изолиний в виде изображения?
Есть ли "подоснова" без изолиний в виде изображения?есть..
а вообще все требуемые карты одного масштба
Выделить достаточно сильные границы на подложке и на карте с изолиниями и
бинаризовать их. Потом из второй картинки границ вычесть первую. Получится картинка
с изолиниями +- какой-то шум. Далее можно пробовать идти вдоль изолиний, считая, что
они более-менее непрерывные.
Вроде бы, должно сработать, границы довольно четкие. К тому ж, в гипотетических изолиниях
не очень большие промежутки между линиями.
upd не вполне ясно, чего делать с нанесенными числами
не вполне ясно, чего делать с нанесенными числамиа ничего с ними не делать.
изолинию описать ломаными с бегущим средним - числа уберутся сами собой.
а вот привязку изолиния - величина, скорее всего, придется делать руками.
схватить регион с числом, а потом опознать его как капчу o_O
проще написать визуализатор - какие изолинии уже подписаны, а какие - нет и тыкать мышкой по ним.
Согласен. =)
С изолиниями будет трудно, эти линии не поддаются человеческой логике
Есть карты где они в еще более хаотичном порядке...
Я знаю пример того, как делали одну такую карту (давно это было, спросить уже не у кого изолиниям присваивали определенную световую гамму (к примеру, синий - 200, голубой - 100 интерполяция проводилась по оттенкам цвета, т.е. ткнув курсором, попадаешь на какой-то промежуточный цвет, который глазом то и не отличишь, а машина могет....как-то так...
Всю остальную логику придется тащить на своих двоих.
Надо же понимать, что описать программно (т.е. формализовать) то, что "не поддаются человеческой логике" технически невозможно.
1. Нужен более качественный скан
2. Перед тем, как начинать чего-то программировать, надо попробовать перевести схему в векторный вид какой-нить прогой из списка. Если получится, количество работы по распознаванию существенно уменьшится.
> Есть карты где они в еще более хаотичном порядке...
Выражайся более осмысленно. Про изолинии, например, заранее известно, что
они, будучи проведенными для разных значений параметра, не должны пересекаться.
В чем же выражается "хаотический порядок"?
> Я знаю пример того, как делали одну такую карту (давно это было, спросить уже
> не у кого изолиниям присваивали определенную световую гамму (к примеру,
> синий - 200, голубой - 100 интерполяция проводилась по оттенкам цвета, т.е.
> ткнув курсором, попадаешь на какой-то промежуточный цвет, который глазом то
> и не отличишь, а машина могет....как-то так...
Кажется, что такой метод сильно зависит от качества сканирования, от цветового шума
и т. п. К тому же, на приведенной карте разница изолиний выражается, судя по условным
обозначениям, в приписанном числе, а не в оттенке.
> перевести схему в векторный вид какой-нить прогой из списка. Если получится,
> количество работы по распознаванию существенно уменьшится.
За счет чего?
1. Нужен более качественный сканГмм, а что даст более качественный скан?
Понимаю, что изолинии будут видны более четко, но что это дает?
количество работы по распознаваниюПо распознаванию чего?
За счет чего?изолинии при удаче будут кривыми в векторном рисунке. Это та часть работы, которую делать все равно придется и можно попробовать сделать без усилий.
Скан получше нужен, чтобы векторизация прошла более успешно. Я уже пробовал проводить векторизацию предложенной карты, таких тонких линий прога просто не замечает (толщина около пикселя)
По распознаванию чего?по распознаванию изолиний
Гмм, а что даст более качественный скан?Меньшую погрешность, очевидно.
Понимаю, что изолинии будут видны более четко, но что это дает?То, что у тебя значения для Тулы не окажутся в Твери и наоборот.
таких тонких линий прога просто не замечает (толщина около пикселя)я сильно сомневаюсь, что при более четком сканировании толщина линий сделает их более читабельными
я сильно сомневаюсь, что при более четком сканировании толщина линий сделает их более читабельнымину, а если таки попробовать? что ты теряешь?
читабельными при каких условиях?
Приведи кусок карты, отсканированный с разрешением 300 dpi.
Тут просто заковыка в том, что данные карты совсем нестандартного размере (ни А4-А3 сканировать их целиком на специальном сканере придется...
Какие-то требования к скану имеются? чтобы сразу постараться по максимуму сделать?
и попробовать. С другой стороны, при высоком разрешении сканера картинка начинает
сильно шуметь, с шумом векторизаторы плохо справляются, afaik. Нужно подобрать
оптимальное качество.
все остальные настройки - на значения по умолчанию, сканировать в tiff, png, bmp (в порядке уменьшения предпочтения).
JPEG в данном случае категорически противопоказан.
Я попробую...попробуй отсканить на стандартном сканере кусок, но с хорошим разрешением. Если векторизация куска пройдет успешно, то тогда уже и будем думать как без спецсканера оцифровать или где такой сканер подешевле найти.
Тут просто заковыка в том, что данные карты совсем нестандартного размере (ни А4-А3 сканировать их целиком на специальном сканере придется...
качество всегда можно загрубить, а вот улучшить - увы.
с шумом векторизаторы плохо справляютсяшумы отлично давит гаусс-фильтр.
Ок, спасибо за советы, завтра попробую кусок карты сделать с указанными условиями....
скалярное поле, так?
---
"...И затем проверять то, чтобы наука у нас
не оставалась мёртвой буквой или модной фразой."
у меня не получается скачать. Скорее всего какие-то проблемы либо у mail.ru, либо у местного wifi
у меня скачалось
очень хочу скачать, а нормальный инет не появится раньше завтра
Файл получился весом в 185 мегов
Выполнял просьбу о наилучшем качестве-формате
Файл получился весом в 185 меговсначала запакуй его rar'ом, а потом уже выкладывай
сначала запакуй его rar'омтам tif на 185 метров...
filesavr глючит как-то
другие файлообменники вспоминать/искать/осваивать лениво
в итоге порезал раром по 100мб и отправил в аську
Ссылка для скачивания файла Карта004.part1.rar
http://file.qip.ru/file/90938013/d8feac33/004part1.htm
Ссылка для скачивания файла Карта004.part2.rar
http://file.qip.ru/file/90938444/3ce46509/004part2.html
ну типа апну...
Ну что, скан очень хороший, линии выделяются по цвету, можно даже цифры выделить и попробовать распознать при желании.
можно даже цифры выделить и попробовать распознать при желании.гмм,ну вообще то меня больше вопрос о возможности интерполяции интересует
Чем он хуже tiff?
Например у меня ЧБ png получается по размеру в разы меньше чем JPEG (и это без потери качества, а исключительно за счёт оптимизации палитры - не знаю, умеет ли это tiff, но его сжатая версия вроде так и не стала стандартом?..).
В остальном (если целевая программа поддерживает оба формата) - это вопрос религии.
Насколько я помню 8bit gray скан весил примерно одинаково как в tiff (LZW так и в png.
A LZW в tiff используется повсеместно.
Неужели задача такая неподъемная?
В принципе, если будут предложены четкие механизмы ее решения, то готов рассматривать вопрос о финансировании данной работы
Да, если ты на задаваемые вопросы не отвечаешь.
---
SINT VT SVNT AVT NON SINT
Да, если ты на задаваемые вопросы не отвечаешь.На какие именно?
Вроде как старался отвечать на вопросы по мере их появления...
Если ты про "скалярное поле" - я хз знает, что это такое применительно к данной задаче
У тебя исходные данные какие?
Карты с изолиниями? Точечными замерами?
Есть описание методики, как эти карты были составлены?
Что ты хочешь получить?
Значение скалярной функции (-ий) в каждой точке карты?
Карта одна?
Величина одна? Две? Больше?
Согласования величин рассматриваем?
Есть ограничения на величины? Разрывы? Зависимости?
---
<<...Должны мыслить существительными и глаголами:
"он встретился", "она сказала", "он передал"...
Вы что, не допускаете мысли?..>>
У тебя исходные данные какие?В первом посте написано - карты, много карт...
Карты с изолиниями? Точечными замерами?Карты с изолиниями, в качестве примера одну и приводил...Ни о каких точечных замерах даже и слова не было.
Есть описание методики, как эти карты были составлены?Гы, а как изолинии составляют? Берут одинаковые значения и соединяют их...
Значения эти рассчитывались еще в 50-60 годах того века...
Что ты хочешь получить?Меня интересовала (и сейчас интересует) возможность получения значения на карте методом иным, нежели визуальная интерполяция,выполняемая карандашом и линейкой.
Значение скалярной функции (-ий) в каждой точке карты?
При чем здесь скалярная функция - не догоняю
Карта одна?Карт много... Подоснова у них одна - карта СССР определенного масштаба.
Величина одна? Две? Больше?Одна карта- одна величина...Много карт - много величин
Согласования величин рассматриваем?С чем (или кем) согласование?
Есть ограничения на величины? Разрывы? Зависимости?Для каждой карты/значения свои ограничения есть.
Разрывы в чем-не понимаю...
Зависимости между чем - тоже не понятно. Если между величинами - то они имеются, но сильно "неявные"...
ЗЫ. Ответил на твои вопросы, подумалось о том, что часть написанного уже озвучивалось, еще часть - спросилось только сейчас; соответсвенно не понял упрека в отсутствии ответов
> Ни о каких точечных замерах даже и слова не было.
>> Есть описание методики, как эти карты были составлены?
> Гы, а как изолинии составляют?
Вот именно. Как?
> Берут одинаковые значения и соединяют их...
По-моему, даже школьник может понять, что если температуру
измеряют только на метеостанциях, а метеостанции не стоят через
каждый километр, это изотермы получаются чуть сложнее, чем
"берут и соединяют."
> Значения эти рассчитывались еще в 50-60 годах того века...
И что? Никаких источников не осталось? Всё на растопку ушло?
> Меня интересовала (и сейчас интересует) возможность получения
> значения на карте методом иным, нежели визуальная интерполяция,
> выполняемая карандашом и линейкой.
Это наверняка возможно, но надо подумать, как это найти.
>> Согласования величин рассматриваем?
> С чем (или кем) согласование?
Между собой. Если у тебя две величины в сумме должны давать
третью, то интерполированные значения могут нарушать тождество.
Ты про это подумал?
>> Есть ограничения на величины? Разрывы? Зависимости?
> Для каждой карты/значения свои ограничения есть.
> Разрывы в чем-не понимаю...
Концентрация вещества между струёй и окружающей средой меняется
скачком, ни разу краску не разводил, что ли? Вот про такой разрыв
и вопрос.
> Зависимости между чем - тоже не понятно.
> Если между величинами - то они имеются, но сильно "неявные"...
Если бы у тебя была возможность уточнять значения между точками,
то у тебя задача сводилась бы к той же интерполяции, какая
делается в методе конечных элементов (англ. "finite element method",
"FEM"). Но у тебя треугольники побить не получится, поэтому такие
штуки могут не прокатить. Попробовать можно, но надо думать.
Ещё есть сплайны, они бывают в любых пространствах.
Один мой бывший коллега на досуге читал такую книгу,
формулы там были страшноватые. Попробуй порыть в этом
направлении.
У меня пока всё. Если чего вспомню, допишу.
---
"Не надо читать много книг."
Вот именно. Как?Блина, не хотелось влезать в научные споры, но попытаюсь объяснить на пальцах:
В середине того века провели огромнейшую работ. Взяли данные наблюдений за гидрологическими (стоковыми, в первую очередь) характеристиками по ВСЕМ имеющимся гидрологическим постам, постоянным и времнным, посчитали их статистические параметры и свели эти параметры на карты, про которые я и говорю. Т.е., повторю еще раз - статистическая обработка ВСЕХ материалов наблюдений за гидрологическими хаактеристиками.. Постов - несколько тысяч, ряды наблюдений за ними разные.
По-моему, даже школьник может понять, что если температуруТы мне решил объяснить, как изотермы-изогипсы-изобаты рисуют?
измеряют только на метеостанциях, а метеостанции не стоят через
каждый километр, это изотермы получаются чуть сложнее, чем
"берут и соединяют."
И что? Никаких источников не осталось? Всё на растопку ушло?Источники - ряды наблюдений остались...Повторить данную работу сейчас вряд и государство захочет (и сможет)...Все промежуточные результаты - счиатй что ушли в растопку.
Это наверняка возможно, но надо подумать, как это найтиТаки про это я и спрашиваю с самого первого поста
Между собой. Если у тебя две величины в сумме должны даватьМежду собй напрямую эти величины не согласуются...
третью, то интерполированные значения могут нарушать тождество.
Ты про это подумал?
Т.е. есть определенные весьма приблизительные зависимости есть, но они далеко не линейные...
Вот про такой разрыв и вопросВсе равно не понял, что за страшный "разрыв"...
А ты случайно не Антоша Уралький, со своим знаменитым "разрывом"?
Попробовать можно, но надо думатьНадо..
"Не надо читать много книг."
> Источники - ряды наблюдений остались... Повторить данную
> работу сейчас вряд и государство захочет (и сможет)...
> Все промежуточные результаты - счиатй что ушли в растопку.
Вопрос не про промежуточные результаты --- что-что, а уж их-то
можно и в печку, а про исходные данные. Если они есть, то может
быть, что проще их оцифровать и загнать. Это ещё и лучше и полезнее.
Судя по твоей задаче, ты или географ, или геолог, у вас должны
выходы на все эти работы по ГИС быть.
> Все равно не понял, что за страшный "разрыв".
У тебя стол или стул есть? Положи на него что-нибудь и повози по
поверхности, доведи до края и веди за край, если повиснет в воздухе ---
ты неудачник. А так оно упадёт вниз. Это и есть разрыв зависимости
высоты твоего прибора над уровнем моря от географических координат.
---
"Vyroba umelych lidi, slecno, je tovarni tajemstvi."
у вас должны выходы на все эти работы по ГИС быть.Какие ГИС? В те времена, когда эти карты создавались даже слово такого не знали...
Чтобы тему про исходники закрыть - их нет... Есто только карты с нанесенными изолиниями.
У тебя стол или стул есть? Положи на него что-нибудь и повози по поверхности, доведи до края и веди за край, если повиснет в воздухе - ты неудачник. А так оно упадёт вниз. Это и есть разрыв зависимости высоты твоего прибора над уровнем моря от географических координатЧто? Про какой разрыв зависимости "высоты прибора от координат" ты говоришь?
Мне становится страшно общаться с тобой
___________
/ \
/ \
/ \
/ \
___________
| |
| |
| |
___| |___
Так вот первая картинка — для такого плавного пирамидообразного стула.
Pun intended.
Представь себе простейшую «карту»:Ты сейчас нарисовал профиль, а не карты...
Теперь типа дошло до меня - но первый раз сталкиваюсь с тем, что это называют "разрывом".
На моих картах этих "разрывов" нет. Предполагается, что значения между двумя изолиниями интеполируются линейно, т.е. если между изолиниями 100 и 200 "чего-то там" расстояние в 1 см, то 1 мм между ними - это будет 10 "чего-то там" и точка посредеине будет соответствовать значению в 150 "единиц"..
Ты сейчас нарисовал профиль, а не карты...Я _описал_ карту, не рисовал ее. Думал у тебя есть воображение.
Вот тебе «карта», если хочешь:
| | | |
| | | |
| | | |
0 1 1 0
| | | |
| | | |
| | | |
Так вот высота при этом может изменяться по-разному:К слову - по правилам картографии, рисоваться изолинии для каждого из приведенных тобой случая будут отдельно...
> интеполируются линейно
А чего тогда ты нам мозг паришь?
Ставишь точки на изолинии, достаточно плотно, сколько сможешь,
но без экстрима. Получаешь тройки "широта—долгота—величина".
Вводишь удобную триангуляцию, через три точки можно провести
только одну плоскость, так что ошибиться сложно. Получаешь на
каждом треугольнике линейные функции.
Вот и вся твоя задача.
Можешь прочитать про критерий Делоне, чтобы понимать, какие
треугольники лучше, хотя здесь может быть иначе.
---
"Математика --- лучший способ водить самого себя за нос."
А чего тогда ты нам мозг паришь?Я?
Етить твое налево, у меня слов нет.
Ты в картографии знаешь другие способы интерполяции, кроме как линейные?
Ты вообще зачем в тему зашел, если даже не в теме?
Получаешь тройки "широта—долгота—величина".Каким образом я это получаю?
Я, воспользовавшись твоим советом, возьму карандаш, наставлю точек плотно-плотно и буду сидеть триангулировать?
Ты походу дела не въехал в суть проблемы... Я не математик нифига, и не программист; у меня возникла потребность "закрыть" задачу, я написал об этом - да, коряво, нематематично и возможно профессионально неграмотно; попросил совета, как и с помошью чего это можно сделать. Кто-то высказался, кто-то задал вопросы, а кто-то начал тролить, нихрна в теме не понимая.
Посмотри, может еще про какие критерии посоветуешь почитать, а? Вот уж действительно, горе не от ума, а от его переизбытка...
Я тоже чего-то не понимаю: если ты ничего не смыслишь в программировании и не понял, что тебе КОНТРА написал, то может в раздел Market попросишь перенести? А то вроде как совета просишь, а когда дают конкретный совет — открещиваешься. Глупо себя ведешь, в общем.
Мне кажется готовых "общих" решений под это дело нет (распознавание линий на карте и работа с изолиниями) либо они очень дорогие и редкие, поэтому, действительно, проще написать самому программу (тогда уточняй, какие конкретно вопросы в процессе у тебя возникают) или обратиться в маркет, чтобы программисты тебе её написали для конкретно этого случая.
Ок, разместил в маркете....
Да, для меня твоя карта является слепком реального пространства.
Я не работаю с картами, я работаю с физическим пространством,
и там используются всякие способы.
>> Получаешь тройки "широта—долгота—величина".
> Каким образом я это получаю?
Оцифровкой карт. Как это делается, тебе знать лучше.
Народ как-то умудряется загонять бумажные топокарты в свои навигаторы.
> Кто-то высказался, кто-то задал вопросы,
> а кто-то начал тролить, нихрна в теме не понимая.
Если ты не понимаешь ответ, то тебе уже ничто не поможет.
Ты поставил задачу так, что тебя никто не понял. И не понял бы,
наверное, вообще никто, за исключением, возможно, Basilio, Maxus-а
и, может быть, но совсем не обязательно, ещё кого-то неизвестного.
Потому что про это, по-хорошему, надо было спрашивать в "Учёбе,"
но всё равно другими словами. С упоминанием линейности.
> Я не математик нифига, и не программист
Это тебя никак не извиняет. См. рис. 1.
Есть хорошие ресурсы по вычислительной геометрии для уровня школьников,
я могу, при некотором усилии, даже ссылку вспомнить.
---
Пользователи делятся на две группы:
тех, кто хочет работать на компьютере,
и тех, кто может работать с компьютером.
Предполагается, что значения между двумя изолиниями интеполируются линейно, т.е. если между изолиниями 100 и 200 "чего-то там" расстояние в 1 см, то 1 мм между ними - это будет 10 "чего-то там" и точка посредеине будет соответствовать значению в 150 "единиц"..Так замечательно можно сделать, если изолиния прямые. А как формализовать такое в иных случаях? Например, в таком:
известно, что на овале значение 1, на дуге — 2. Какие значения напишем в точках? Если интерполировать "линейно по двум ближайшим точкам на изолинии", то при продвижении от овала направо значение будет расти от 1 до 1.5 в точке "!", а потом резко скакнёт до 2. Надеюсь, пример понятен. Так что надо как-то хитрее, интеграл что ли по углу взять или книжки почитать.
____________________________________
/
| / \ ..!........................
| \ /
\____________________________________
Уж не говоря о том, любая линейная интерполяция даст плато внутри круглой линии, не содержащей отметок внутри, и, следовательно, нарушение гладкости на ней.
следовательно, нарушение гладкости на ней.Разве следовательно?
Разве следовательно?нет, это я зря. Я лишь утверждаю, что при линейной аппроксимации гладкости не видать. Про плато — для иллюстрации неприменимости линейной интерполяции к географическим данным. По хорошему надо сделать горбик, но не выше чем шаг изолинии. Как — хз.
Так что надо как-то хитрее, интеграл что ли по углу взять или книжки почитать.Ребят, я ни сколько ни умалю Ваши знания и опыт, но Вы тоже имейте уважение к моему немаленькому опыту: при определении значений по вышеупомянутым картам интерполяция осуществляется практически линейно, никто не использует ни интергралы, ни углы, ни прочие сложные штуки...
Ребят, я ни сколько ни умалю Ваши знания и опыт, но Вы тоже имейте уважение к моему немаленькому опыту: при определении значений по вышеупомянутым картам интерполяция осуществляется практически линейно, никто не использует ни интергралы, ни углы, ни прочие сложные штуки...ну дык эт потому, что эту интерполяцию делает человек, а у человека есть мозг и он может разумно проинтерполировать
а вот если ты это алгоритмизуешь, то с очень большой вероятностью напорешься на какую-нибудь ересь, о чем тебе и пишут
Оставить комментарий
iSom
Ситуевина следующая:имеется несколько десятков карт, аналогичной этой
Очень хочется как-то автоматизировать процесс получения требуемых данных (значений с карты на данный момент это "механическая интерполяция", занимающая очень много времени и не слишком точная....
Т.е., хотелось бы иметь "обработанную" карту (много карт чтобы ткнув в определенную точку, получить сразу бы параметры со всех карт...
Знаю, что вроде как делают такие-то фишки с цветовой гаммой,не могу оценить степень сложности; может еще какие-то возможности имеются?
Буду рад услышать советы-предложения....