Добро пожаловать!

Войдите или зарегистрируйтесь сейчас!

Войти

Перепроецирование растров по ключу СК с полиноминальным преобразованием

Тема в разделе "Программы для работы с растрами", создана пользователем X-Y-H, 21 мар 2021.

  1. X-Y-H

    X-Y-H Администратор
    Команда форума Форумчанин

    Регистрация:
    18 май 2007
    Сообщения:
    21.988
    Симпатии:
    7.205
    Адрес:
    Россия
    Коллеги добрый день!
    Подскажите программу которая может перепроецировать растровые данные из СК в СК по параметрам полиномиального преобразования, например полиномы 3-5 порядка.

    У меня кроме Трансформа ничего в голову не лезет....
     
    #1
  2. zvezdochiot

    Форумчанин

    Регистрация:
    27 июн 2014
    Сообщения:
    6.015
    Симпатии:
    2.128
    Адрес:
    г. Москва
    Почему порядок такой странный? Обычно либо конформное 1го порядка (т.е "плоскость"->"плоскость"), либо 3D Хельмерта. Но идея неплохая. Взять FreeImage (https://freeimage.sourceforge.io/ ), взять слайды @stout ( https://github.com/Geo-Linux-Calculations/geodesist.ru-attach/tree/main/threads/12174 ) и навять преобразователь с билинейной доводкой. Звучит достаточно просто.

    PS: Замечу. Так как без хотя бы билинейной интерполяции результирующее изображение будет "так себе", то для работы понадобятся параметры обратного преобразования. Это будет проблемой? Хотя по идее можно обойтись и только прямыми.

    PS2: А менее плохо, выложите ссылки на "параметры" и подразумеваемые формулы пересчёта. А то явное недопонимание намечается. Оптимальным вариантом конечно будут формулы со слайдов @stout , так как параметры будут приведены к центрам изображений.
     
    #2
    Последнее редактирование: 21 мар 2021
  3. X-Y-H

    X-Y-H Администратор
    Команда форума Форумчанин

    Регистрация:
    18 май 2007
    Сообщения:
    21.988
    Симпатии:
    7.205
    Адрес:
    Россия
    zvezdochiot, поищите здесь - есть программа по поиску ключа @stout с полиномами, вторая известная мне программа Транскор
    --- Сообщения объединены, 21 мар 2021, Оригинальное время сообщения: 21 мар 2021 ---
    поймете почему порядок такой странный - для полинома 3 порядка необходимо минимум 10 точек, для 5 - 21
     
    #3
  4. zvezdochiot

    Форумчанин

    Регистрация:
    27 июн 2014
    Сообщения:
    6.015
    Симпатии:
    2.128
    Адрес:
    г. Москва
    Хде здесь?! Здеся "Поиск..." совсем-совсем плохой! А на слайды @stout я сам ссылку выдал без всякого "поиска".

    Чо то я не понял! Вы хотите применить к изображению известные параметры или получить их с двух изображений? Недопонимание явно нарастает.
     
    #4
  5. X-Y-H

    X-Y-H Администратор
    Команда форума Форумчанин

    Регистрация:
    18 май 2007
    Сообщения:
    21.988
    Симпатии:
    7.205
    Адрес:
    Россия
    Применить известные параметры
     
    #5
    zvezdochiot нравится это.
  6. zvezdochiot

    Форумчанин

    Регистрация:
    27 июн 2014
    Сообщения:
    6.015
    Симпатии:
    2.128
    Адрес:
    г. Москва
    Так желательно подтверждение получить, что формулы именно те, что на слайдах.

    PS: Не смущает, что помимо параметров, нужно будет задавать координаты как минимум 2х углов исходного изображения и соотнешиние пиксель/метр для результирующего?
     
    #6
  7. zvezdochiot

    Форумчанин

    Регистрация:
    27 июн 2014
    Сообщения:
    6.015
    Симпатии:
    2.128
    Адрес:
    г. Москва
    Нашёл таки: https://geodesist.ru/resources/cplanelite-programma-pereschjota-koordinat-po-obschim-tochkam.147/ . Только она параметры не отдаёт! Да и с моими таблицами ( https://github.com/Geo-Linux-Calculations/gnumeric-ols/tree/master/spreadsheets/conformaltrans ) уже на 2-ой степени расхождения по дельтам наблюдаются. Так что хз чему верить ни на что смотреть!
     
    #7
  8. cr2

    cr2
    Форумчанин

    Регистрация:
    23 сен 2014
    Сообщения:
    786
    Симпатии:
    516
    QGIS ?
     
    #8
  9. zvezdochiot

    Форумчанин

    Регистрация:
    27 июн 2014
    Сообщения:
    6.015
    Симпатии:
    2.128
    Адрес:
    г. Москва
    #9
  10. Deleted member 51242

    Deleted member 51242 Только чтение

    Global Mapper (там есть возможность выбрать степень полинома при привязке растра)
     
    #10
  11. wolodya

    Форумчанин

    Регистрация:
    1 янв 2009
    Сообщения:
    6.960
    Симпатии:
    2.622
    Адрес:
    Москва
    Я QGIS пользовался но 3-5 порядок надо очень много точек равномерно распределенных. Иначе могут быть большие искажения
    А вот интересно в фотоскане и меташейпе какие преобразования?
     
    #11
  12. andrew_klikunov

    Форумчанин

    Регистрация:
    30 сен 2015
    Сообщения:
    1.335
    Симпатии:
    532
    Адрес:
    Пенза
    В ArcGIS тоже есть, до 3 порядка вроде. Но есть и сплайн и подгонка...
     
    #12
  13. zvezdochiot

    Форумчанин

    Регистрация:
    27 июн 2014
    Сообщения:
    6.015
    Симпатии:
    2.128
    Адрес:
    г. Москва
    Не подскажешь, такие вот параметры:
    Код:
    -p 100,100,0.95,0.1
    
    в какую сторону крутить изображение должны? По часовой или против? А то у меня прям ступор какой то.
     
    #13
  14. ErnieBoyd

    Форумчанин

    Регистрация:
    10 июн 2014
    Сообщения:
    272
    Симпатии:
    161
    Зачем нужны полиномы? Любая ГИС при сохранении растра из одной СК в другую просто интерполирует значение/цвет каждого пикселя. Или не понимаю чего-то в постановке задачи?

    Чаще всего использую gdalwarp в командной строке.
     
    #14
  15. stout

    Форумчанин

    Регистрация:
    5 янв 2008
    Сообщения:
    4.172
    Симпатии:
    11.939
    Адрес:
    Златоглавая и Белокаменная
    Оффтоп

    Запустите программку с любым параметром. Появиться папка DEBUG с параметрами типа
    Код:
    FORMULA: ==================================================
     
    I^2 = -1;
    Zout = (Xout+I*Yout);
    Z = [(X+I*Y)-(XSo+I*YSo)]*scale;
    G[k] = (C[2*k+1]+I*C[2*k+2]);
    Zout = sum(G[k]*Z^k,k=0..Degree)/scale + (XTo+I*YTo)
     
    CODE: =====================================================
     
    U := (X - XSo)*scale;
    V := (Y - YSo)*scale;
    P[0] := 1;
    Q[0] := 0;
    P[1] := U;
    Q[1] := V;
    for j := 2 to Degree do
    begin 
      P[j] := U*P[j - 1] - V*Q[j - 1];
      Q[j] := U*Q[j - 1] + V*P[j - 1];
    end;
    Xout := 0;
    Yout := 0;
    for k := Degree downto 0 do
    begin
      Xout := Xout + (C[2*k + 1]*P[k] - C[2*k + 2]*Q[k]);
      Yout := Yout + (C[2*k + 1]*Q[k] + C[2*k + 2]*P[k]);
    end;
    Xout := Xout/scale + XTo;
    Yout := Yout/scale + YTo;
    ===========================================================
     
     
    XSo =     6 214 276.706260000  YSo =       281 891.327550000
    XTo =     6 209 000.000000000  YTo =       656 000.000000000
    scale =    9.22752555962756E-005
    CurrentOrder =  3
    C[ 1] =   -4.96919330745076E-011
    C[ 2] =   -4.09917720205858E-010
    C[ 3] =    9.95547868640085E-001
    C[ 4] =   -8.66805993391449E-002
    C[ 5] =   -6.09153980342143E-006
    C[ 6] =   -4.92515001753110E-005
    C[ 7] =    5.66440042646683E-009
    C[ 8] =    4.13513595379127E-008
    
    Для конформного преобразования первые два коэффициента теоретически должны равняться нулю. По хорошему их на следующем этапе нужно было не включать в неизвестные. Но исходники вместе с другим содержимым HDD отправились на силиконовые облака в места вечной охоты за битом чётности, а восстанавливать лень, т.к. сам алгоритм занимает процентов 20 программы, остальное – гуй.
     
    #15
    zvezdochiot нравится это.
  16. zvezdochiot

    Форумчанин

    Регистрация:
    27 июн 2014
    Сообщения:
    6.015
    Симпатии:
    2.128
    Адрес:
    г. Москва
    Оффтоп
    Да. Это я уже видел и делал. Спасибо.

    Интересует только, делается для этих параметров децентрализация или нет? По цифирям вроде как нет, но точно сказать можете только Вы.

    Под децентрализацией подразумевается переход от XY2=A*UV1 к XY2=B*XY1.

    PS: Я у себя ( https://github.com/Geo-Linux-Calculations/gnumeric-ols/ ) децентрализацию делаю. Но учитывая большие степени преобразования - это очень даже может стать проблемой. Для нормального результата нужен человек, разбирающийся в производных полиномах. Сам я для своих таблиц (1-4 степени) ковырялся в wxMaxima, вычленяя эти самые полиномы.
     
    #16

Поделиться этой страницей

  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление