Интерполяция значений по карте

iSom

Ситуевина следующая:
имеется несколько десятков карт, аналогичной этой

Очень хочется как-то автоматизировать процесс получения требуемых данных (значений с карты на данный момент это "механическая интерполяция", занимающая очень много времени и не слишком точная....
Т.е., хотелось бы иметь "обработанную" карту (много карт чтобы ткнув в определенную точку, получить сразу бы параметры со всех карт...
Знаю, что вроде как делают такие-то фишки с цветовой гаммой,не могу оценить степень сложности; может еще какие-то возможности имеются?
Буду рад услышать советы-предложения....

okis

На разных картах данные об одном и том же? Нужно выделить изолинии, или они считаются известными?
Билинейная интерполяция подойдёт, или что-то сложнее нужно?

iSom

На разных картах данные разные, неизменным остается только подоснова - карта СССР.
И значния этих данных разные - где-то десятки и сотни, там значения нужны до единицы, а где-то - первые единецы (максимум 3 там нужны значени с тоностью до сотых...
Изолинии известны только по карт, выделять (т.е. оцифровывать) их придется.
Билинейная интерполяция подойдет, насчет более сложного - наверное смысла нет...

barbos

Есть ли "подоснова" без изолиний в виде изображения?

iSom

Есть ли "подоснова" без изолиний в виде изображения?
есть..
а вообще все требуемые карты одного масштба

barbos

Можно пробовать сравнивать структуру границ на карте без линий и на карте с линиями.
Выделить достаточно сильные границы на подложке и на карте с изолиниями и
бинаризовать их. Потом из второй картинки границ вычесть первую. Получится картинка
с изолиниями +- какой-то шум. Далее можно пробовать идти вдоль изолиний, считая, что
они более-менее непрерывные.
Вроде бы, должно сработать, границы довольно четкие. К тому ж, в гипотетических изолиниях
не очень большие промежутки между линиями.
upd не вполне ясно, чего делать с нанесенными числами

AlexV769

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

barbos

Я как раз думал про привязку. Может быть какой-нибудь хитрой морфологией удастся
схватить регион с числом, а потом опознать его как капчу o_O

AlexV769

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

barbos

Согласен. =)

iSom

Пошел конструктив
С изолиниями будет трудно, эти линии не поддаются человеческой логике
Есть карты где они в еще более хаотичном порядке...
Я знаю пример того, как делали одну такую карту (давно это было, спросить уже не у кого изолиниям присваивали определенную световую гамму (к примеру, синий - 200, голубой - 100 интерполяция проводилась по оттенкам цвета, т.е. ткнув курсором, попадаешь на какой-то промежуточный цвет, который глазом то и не отличишь, а машина могет....как-то так...

AlexV769

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

Helga87

добавлю мыслей.
1. Нужен более качественный скан
2. Перед тем, как начинать чего-то программировать, надо попробовать перевести схему в векторный вид какой-нить прогой из списка. Если получится, количество работы по распознаванию существенно уменьшится.

barbos

> С изолиниями будет трудно, эти линии не поддаются человеческой логике
> Есть карты где они в еще более хаотичном порядке...
Выражайся более осмысленно. Про изолинии, например, заранее известно, что
они, будучи проведенными для разных значений параметра, не должны пересекаться.
В чем же выражается "хаотический порядок"?
> Я знаю пример того, как делали одну такую карту (давно это было, спросить уже
> не у кого изолиниям присваивали определенную световую гамму (к примеру,
> синий - 200, голубой - 100 интерполяция проводилась по оттенкам цвета, т.е.
> ткнув курсором, попадаешь на какой-то промежуточный цвет, который глазом то
> и не отличишь, а машина могет....как-то так...
Кажется, что такой метод сильно зависит от качества сканирования, от цветового шума
и т. п. К тому же, на приведенной карте разница изолиний выражается, судя по условным
обозначениям, в приписанном числе, а не в оттенке.

barbos

> 2. Перед тем, как начинать чего-то программировать, надо попробовать
> перевести схему в векторный вид какой-нить прогой из списка. Если получится,
> количество работы по распознаванию существенно уменьшится.
За счет чего?

iSom

1. Нужен более качественный скан
Гмм, а что даст более качественный скан?
Понимаю, что изолинии будут видны более четко, но что это дает?
количество работы по распознаванию
По распознаванию чего?

Helga87

За счет чего?
изолинии при удаче будут кривыми в векторном рисунке. Это та часть работы, которую делать все равно придется и можно попробовать сделать без усилий.
Скан получше нужен, чтобы векторизация прошла более успешно. Я уже пробовал проводить векторизацию предложенной карты, таких тонких линий прога просто не замечает (толщина около пикселя)

Helga87

По распознаванию чего?
по распознаванию изолиний

AlexV769

Гмм, а что даст более качественный скан?
Меньшую погрешность, очевидно.
Понимаю, что изолинии будут видны более четко, но что это дает?
То, что у тебя значения для Тулы не окажутся в Твери и наоборот.

iSom

таких тонких линий прога просто не замечает (толщина около пикселя)
я сильно сомневаюсь, что при более четком сканировании толщина линий сделает их более читабельными

Helga87

я сильно сомневаюсь, что при более четком сканировании толщина линий сделает их более читабельными
ну, а если таки попробовать? что ты теряешь?

AlexV769

читабельными для кого?
читабельными при каких условиях?
Приведи кусок карты, отсканированный с разрешением 300 dpi.

iSom

Я попробую...
Тут просто заковыка в том, что данные карты совсем нестандартного размере (ни А4-А3 сканировать их целиком на специальном сканере придется...
Какие-то требования к скану имеются? чтобы сразу постараться по максимуму сделать?

barbos

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

AlexV769

разрешение 300 или 600 dpi, дальше лезть не за чем
все остальные настройки - на значения по умолчанию, сканировать в tiff, png, bmp (в порядке уменьшения предпочтения).
JPEG в данном случае категорически противопоказан.

Helga87

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

AlexV769

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

Helga87

с шумом векторизаторы плохо справляются
шумы отлично давит гаусс-фильтр.

iSom

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

Ivan8209

Насколько я понял, ты хочешь получить вместо изолиний само
скалярное поле, так?
---
"...И затем проверять то, чтобы наука у нас
не оставалась мёртвой буквой или модной фразой."

iSom

Попробывал сделать более качественный скан.
Форум загружать не стану, скинул в файлообменник
http://files.mail.ru/TKV3YH

Helga87

у меня не получается скачать. Скорее всего какие-то проблемы либо у mail.ru, либо у местного wifi

lubanj

у меня скачалось

Helga87

повезло. :) закачай на еще какой-нить хостинг, плз.
очень хочу скачать, а нормальный инет не появится раньше завтра

iSom

На какой закачать?
Файл получился весом в 185 мегов :o
Выполнял просьбу о наилучшем качестве-формате :crazy:

nawok

Файл получился весом в 185 мегов :o
сначала запакуй его rar'ом, а потом уже выкладывай

lubanj

сначала запакуй его rar'ом
там tif на 185 метров...

lubanj

ifolder больше 100 не дает грузить
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

iSom

ну типа апну...

okis

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

iSom

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

durka82

А почему png второй?
Чем он хуже tiff?
Например у меня ЧБ png получается по размеру в разы меньше чем JPEG (и это без потери качества, а исключительно за счёт оптимизации палитры - не знаю, умеет ли это tiff, но его сжатая версия вроде так и не стала стандартом?..).

AlexV769

По моей статистике tiff съедается бОльшем кол-вом программ, нежели png, поэтому он первый.
В остальном (если целевая программа поддерживает оба формата) - это вопрос религии.
Насколько я помню 8bit gray скан весил примерно одинаково как в tiff (LZW так и в png.
A LZW в tiff используется повсеместно.

iSom

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

Ivan8209

> Неужели задача такая неподъемная?
Да, если ты на задаваемые вопросы не отвечаешь.
---
SINT VT SVNT AVT NON SINT

iSom

Да, если ты на задаваемые вопросы не отвечаешь.
На какие именно? :shocked:
Вроде как старался отвечать на вопросы по мере их появления...
Если ты про "скалярное поле" - я хз знает, что это такое применительно к данной задаче

Ivan8209

Сразу бы и переспросил.
У тебя исходные данные какие?
Карты с изолиниями? Точечными замерами?
Есть описание методики, как эти карты были составлены?
Что ты хочешь получить?
Значение скалярной функции (-ий) в каждой точке карты?
Карта одна?
Величина одна? Две? Больше?
Согласования величин рассматриваем?
Есть ограничения на величины? Разрывы? Зависимости?
---
<<...Должны мыслить существительными и глаголами:
"он встретился", "она сказала", "он передал"...
Вы что, не допускаете мысли?..>>

iSom

У тебя исходные данные какие?
В первом посте написано - карты, много карт...
Карты с изолиниями? Точечными замерами?
Карты с изолиниями, в качестве примера одну и приводил...Ни о каких точечных замерах даже и слова не было.
Есть описание методики, как эти карты были составлены?
Гы, а как изолинии составляют? Берут одинаковые значения и соединяют их...
Значения эти рассчитывались еще в 50-60 годах того века...
Что ты хочешь получить?
Значение скалярной функции (-ий) в каждой точке карты?
Меня интересовала (и сейчас интересует) возможность получения значения на карте методом иным, нежели визуальная интерполяция,выполняемая карандашом и линейкой.
При чем здесь скалярная функция - не догоняю
Карта одна?
Карт много... Подоснова у них одна - карта СССР определенного масштаба.
Величина одна? Две? Больше?
Одна карта- одна величина...Много карт - много величин
Согласования величин рассматриваем?
С чем (или кем) согласование? :smirk:
Есть ограничения на величины? Разрывы? Зависимости?
Для каждой карты/значения свои ограничения есть.
Разрывы в чем-не понимаю...
Зависимости между чем - тоже не понятно. Если между величинами - то они имеются, но сильно "неявные"...
ЗЫ. Ответил на твои вопросы, подумалось о том, что часть написанного уже озвучивалось, еще часть - спросилось только сейчас; соответсвенно не понял упрека в отсутствии ответов

Ivan8209

> Карты с изолиниями, в качестве примера одну и приводил...
> Ни о каких точечных замерах даже и слова не было.
>> Есть описание методики, как эти карты были составлены?
> Гы, а как изолинии составляют?
Вот именно. Как?
> Берут одинаковые значения и соединяют их...
По-моему, даже школьник может понять, что если температуру
измеряют только на метеостанциях, а метеостанции не стоят через
каждый километр, это изотермы получаются чуть сложнее, чем
"берут и соединяют."
> Значения эти рассчитывались еще в 50-60 годах того века...
И что? Никаких источников не осталось? Всё на растопку ушло?
> Меня интересовала (и сейчас интересует) возможность получения
> значения на карте методом иным, нежели визуальная интерполяция,
> выполняемая карандашом и линейкой.
Это наверняка возможно, но надо подумать, как это найти.
>> Согласования величин рассматриваем?
> С чем (или кем) согласование?
Между собой. Если у тебя две величины в сумме должны давать
третью, то интерполированные значения могут нарушать тождество.
Ты про это подумал?
>> Есть ограничения на величины? Разрывы? Зависимости?
> Для каждой карты/значения свои ограничения есть.
> Разрывы в чем-не понимаю...
Концентрация вещества между струёй и окружающей средой меняется
скачком, ни разу краску не разводил, что ли? Вот про такой разрыв
и вопрос.
> Зависимости между чем - тоже не понятно.
> Если между величинами - то они имеются, но сильно "неявные"...
Если бы у тебя была возможность уточнять значения между точками,
то у тебя задача сводилась бы к той же интерполяции, какая
делается в методе конечных элементов (англ. "finite element method",
"FEM"). Но у тебя треугольники побить не получится, поэтому такие
штуки могут не прокатить. Попробовать можно, но надо думать.
Ещё есть сплайны, они бывают в любых пространствах.
Один мой бывший коллега на досуге читал такую книгу,
формулы там были страшноватые. Попробуй порыть в этом
направлении.
У меня пока всё. Если чего вспомню, допишу.
---
"Не надо читать много книг."

iSom

Вот именно. Как?
Блина, не хотелось влезать в научные споры, но попытаюсь объяснить на пальцах:
В середине того века провели огромнейшую работ. Взяли данные наблюдений за гидрологическими (стоковыми, в первую очередь) характеристиками по ВСЕМ имеющимся гидрологическим постам, постоянным и времнным, посчитали их статистические параметры и свели эти параметры на карты, про которые я и говорю. Т.е., повторю еще раз - статистическая обработка ВСЕХ материалов наблюдений за гидрологическими хаактеристиками.. Постов - несколько тысяч, ряды наблюдений за ними разные.
По-моему, даже школьник может понять, что если температуру
измеряют только на метеостанциях, а метеостанции не стоят через
каждый километр, это изотермы получаются чуть сложнее, чем
"берут и соединяют."
Ты мне решил объяснить, как изотермы-изогипсы-изобаты рисуют? :confused:
И что? Никаких источников не осталось? Всё на растопку ушло?
Источники - ряды наблюдений остались...Повторить данную работу сейчас вряд и государство захочет (и сможет)...Все промежуточные результаты - счиатй что ушли в растопку.
Это наверняка возможно, но надо подумать, как это найти
Таки про это я и спрашиваю с самого первого поста :)
Между собой. Если у тебя две величины в сумме должны давать
третью, то интерполированные значения могут нарушать тождество.
Ты про это подумал?
Между собй напрямую эти величины не согласуются...
Т.е. есть определенные весьма приблизительные зависимости есть, но они далеко не линейные...
Вот про такой разрыв и вопрос
Все равно не понял, что за страшный "разрыв"...
А ты случайно не Антоша Уралький, со своим знаменитым "разрывом"? :grin:
Попробовать можно, но надо думать
Надо.. :(
"Не надо читать много книг."
:o

Ivan8209

>> И что? Никаких источников не осталось? Всё на растопку ушло?
> Источники - ряды наблюдений остались... Повторить данную
> работу сейчас вряд и государство захочет (и сможет)...
> Все промежуточные результаты - счиатй что ушли в растопку.
Вопрос не про промежуточные результаты --- что-что, а уж их-то
можно и в печку, а про исходные данные. Если они есть, то может
быть, что проще их оцифровать и загнать. Это ещё и лучше и полезнее.
Судя по твоей задаче, ты или географ, или геолог, у вас должны
выходы на все эти работы по ГИС быть.
> Все равно не понял, что за страшный "разрыв".
У тебя стол или стул есть? Положи на него что-нибудь и повози по
поверхности, доведи до края и веди за край, если повиснет в воздухе ---
ты неудачник. А так оно упадёт вниз. Это и есть разрыв зависимости
высоты твоего прибора над уровнем моря от географических координат.
---
"Vyroba umelych lidi, slecno, je tovarni tajemstvi."

iSom

у вас должны выходы на все эти работы по ГИС быть.
Какие ГИС? :grin: В те времена, когда эти карты создавались даже слово такого не знали...
Чтобы тему про исходники закрыть - их нет... Есто только карты с нанесенными изолиниями.
У тебя стол или стул есть? Положи на него что-нибудь и повози по поверхности, доведи до края и веди за край, если повиснет в воздухе - ты неудачник. А так оно упадёт вниз. Это и есть разрыв зависимости высоты твоего прибора над уровнем моря от географических координат
Что? Про какой разрыв зависимости "высоты прибора от координат" ты говоришь?
Мне становится страшно общаться с тобой

Serab

Ну что непонятного? Представь себе простейшую «карту»: проведены три вертикальные изолинии на равном расстоянии. На них отметки 0м, 1м, 1м, 0м. Так вот высота при этом может изменяться по-разному:

___________
/ \
/ \
/ \
/ \


___________
| |
| |
| |
___| |___

Так вот первая картинка — для такого плавного пирамидообразного стула.
Pun intended.

iSom

Представь себе простейшую «карту»:
Ты сейчас нарисовал профиль, а не карты...
Теперь типа дошло до меня - но первый раз сталкиваюсь с тем, что это называют "разрывом".
На моих картах этих "разрывов" нет. Предполагается, что значения между двумя изолиниями интеполируются линейно, т.е. если между изолиниями 100 и 200 "чего-то там" расстояние в 1 см, то 1 мм между ними - это будет 10 "чего-то там" и точка посредеине будет соответствовать значению в 150 "единиц"..

Serab

Ты сейчас нарисовал профиль, а не карты...
Я _описал_ карту, не рисовал ее. Думал у тебя есть воображение.
Вот тебе «карта», если хочешь:

| | | |
| | | |
| | | |
0 1 1 0
| | | |
| | | |
| | | |

iSom

Так вот высота при этом может изменяться по-разному:
К слову - по правилам картографии, рисоваться изолинии для каждого из приведенных тобой случая будут отдельно...

Ivan8209

> Предполагается, что значения между двумя изолиниями
> интеполируются линейно
А чего тогда ты нам мозг паришь?
Ставишь точки на изолинии, достаточно плотно, сколько сможешь,
но без экстрима. Получаешь тройки "широта—долгота—величина".
Вводишь удобную триангуляцию, через три точки можно провести
только одну плоскость, так что ошибиться сложно. Получаешь на
каждом треугольнике линейные функции.
Вот и вся твоя задача.
Можешь прочитать про критерий Делоне, чтобы понимать, какие
треугольники лучше, хотя здесь может быть иначе.
---
"Математика --- лучший способ водить самого себя за нос."

iSom

А чего тогда ты нам мозг паришь?
Я?
Етить твое налево, у меня слов нет.
Ты в картографии знаешь другие способы интерполяции, кроме как линейные?
Ты вообще зачем в тему зашел, если даже не в теме?
Получаешь тройки "широта—долгота—величина".
Каким образом я это получаю?
Я, воспользовавшись твоим советом, возьму карандаш, наставлю точек плотно-плотно и буду сидеть триангулировать?
Ты походу дела не въехал в суть проблемы... Я не математик нифига, и не программист; у меня возникла потребность "закрыть" задачу, я написал об этом - да, коряво, нематематично и возможно профессионально неграмотно; попросил совета, как и с помошью чего это можно сделать. Кто-то высказался, кто-то задал вопросы, а кто-то начал тролить, нихрна в теме не понимая.
Посмотри, может еще про какие критерии посоветуешь почитать, а? Вот уж действительно, горе не от ума, а от его переизбытка...

Serab

Я тоже чего-то не понимаю: если ты ничего не смыслишь в программировании и не понял, что тебе КОНТРА написал, то может в раздел Market попросишь перенести? А то вроде как совета просишь, а когда дают конкретный совет — открещиваешься. Глупо себя ведешь, в общем.

Trams

Мне кажется готовых "общих" решений под это дело нет (распознавание линий на карте и работа с изолиниями) либо они очень дорогие и редкие, поэтому, действительно, проще написать самому программу (тогда уточняй, какие конкретно вопросы в процессе у тебя возникают) или обратиться в маркет, чтобы программисты тебе её написали для конкретно этого случая.

iSom

Ок, разместил в маркете....

Ivan8209

> Ты в картографии знаешь другие способы интерполяции, кроме как линейные?
Да, для меня твоя карта является слепком реального пространства.
Я не работаю с картами, я работаю с физическим пространством,
и там используются всякие способы.
>> Получаешь тройки "широта—долгота—величина".
> Каким образом я это получаю?
Оцифровкой карт. Как это делается, тебе знать лучше.
Народ как-то умудряется загонять бумажные топокарты в свои навигаторы.
> Кто-то высказался, кто-то задал вопросы,
> а кто-то начал тролить, нихрна в теме не понимая.
Если ты не понимаешь ответ, то тебе уже ничто не поможет.
Ты поставил задачу так, что тебя никто не понял. И не понял бы,
наверное, вообще никто, за исключением, возможно, Basilio, Maxus-а
и, может быть, но совсем не обязательно, ещё кого-то неизвестного.
Потому что про это, по-хорошему, надо было спрашивать в "Учёбе,"
но всё равно другими словами. С упоминанием линейности.
> Я не математик нифига, и не программист
Это тебя никак не извиняет. См. рис. 1.
Есть хорошие ресурсы по вычислительной геометрии для уровня школьников,
я могу, при некотором усилии, даже ссылку вспомнить.
---
Пользователи делятся на две группы:
тех, кто хочет работать на компьютере,
и тех, кто может работать с компьютером.

hwh2010

Предполагается, что значения между двумя изолиниями интеполируются линейно, т.е. если между изолиниями 100 и 200 "чего-то там" расстояние в 1 см, то 1 мм между ними - это будет 10 "чего-то там" и точка посредеине будет соответствовать значению в 150 "единиц"..
Так замечательно можно сделать, если изолиния прямые. А как формализовать такое в иных случаях? Например, в таком:

____________________________________
/
| / \ ..!........................
| \ /
\____________________________________
известно, что на овале значение 1, на дуге — 2. Какие значения напишем в точках? Если интерполировать "линейно по двум ближайшим точкам на изолинии", то при продвижении от овала направо значение будет расти от 1 до 1.5 в точке "!", а потом резко скакнёт до 2. Надеюсь, пример понятен. Так что надо как-то хитрее, интеграл что ли по углу взять или книжки почитать.
Уж не говоря о том, любая линейная интерполяция даст плато внутри круглой линии, не содержащей отметок внутри, и, следовательно, нарушение гладкости на ней.

Serab

следовательно, нарушение гладкости на ней.
Разве следовательно?

hwh2010

Разве следовательно?
нет, это я зря. Я лишь утверждаю, что при линейной аппроксимации гладкости не видать. Про плато — для иллюстрации неприменимости линейной интерполяции к географическим данным. По хорошему надо сделать горбик, но не выше чем шаг изолинии. Как — хз.

iSom

Так что надо как-то хитрее, интеграл что ли по углу взять или книжки почитать.
Ребят, я ни сколько ни умалю Ваши знания и опыт, но Вы тоже имейте уважение к моему немаленькому опыту: при определении значений по вышеупомянутым картам интерполяция осуществляется практически линейно, никто не использует ни интергралы, ни углы, ни прочие сложные штуки...

bansek

Ребят, я ни сколько ни умалю Ваши знания и опыт, но Вы тоже имейте уважение к моему немаленькому опыту: при определении значений по вышеупомянутым картам интерполяция осуществляется практически линейно, никто не использует ни интергралы, ни углы, ни прочие сложные штуки...
ну дык эт потому, что эту интерполяцию делает человек, а у человека есть мозг и он может разумно проинтерполировать
а вот если ты это алгоритмизуешь, то с очень большой вероятностью напорешься на какую-нибудь ересь, о чем тебе и пишут
Оставить комментарий
Имя или ник:
Комментарий: