Модераторы: maxim1000
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Дисторсия 
:(
    Опции темы
newbie2009
Дата 9.3.2012, 00:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 8.2.2009

Репутация: нет
Всего: нет



Здравствуйте.

Не могли бы вы мне показать, где прочитать или рассказать алгоритм по к-му делается дисторсию ( http://ru.wikipedia.org/wiki/%D0%94%D0%B8%...%81%D0%B8%D1%8F ).
Вот такой эффект как на картинке...

К сожалению поискав в гугле я нечего не смог найти, может вы сможете мне помочь.

Спасибо.
PM MAIL   Вверх
Фантом
Дата 9.3.2012, 02:07 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1515
Регистрация: 23.3.2008

Репутация: 2
Всего: 49



Цитата(newbie2009 @  9.3.2012,  01:42 Найти цитируемый пост)
Не могли бы вы мне показать, где прочитать или рассказать алгоритм по к-му делается дисторсию ( http://ru.wikipedia.org/wiki/%D0%94%D0%B8%...%81%D0%B8%D1%8F ).
Вот такой эффект как на картинке...

Внимательно прочитайте статью Википедии, на которую дали ссылку.  smile Искомый алгоритм (а точнее, преобразование) там описан (раздел "Теория", выражение для дисторсии третьего порядка).
PM   Вверх
newbie2009
Дата 9.3.2012, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 8.2.2009

Репутация: нет
Всего: нет



Цитата(Фантом @ 9.3.2012,  02:07)
Цитата(newbie2009 @  9.3.2012,  01:42 Найти цитируемый пост)
Не могли бы вы мне показать, где прочитать или рассказать алгоритм по к-му делается дисторсию ( http://ru.wikipedia.org/wiki/%D0%94%D0%B8%...%81%D0%B8%D1%8F ).
Вот такой эффект как на картинке...

Внимательно прочитайте статью Википедии, на которую дали ссылку.  smile Искомый алгоритм (а точнее, преобразование) там описан (раздел "Теория", выражение для дисторсии третьего порядка).

хорошо, а можете пояснить тогда как считать дисторсию третьего порядка? и правильно ли я понимаю, что коэффициент b0 - это экспериментально подобранный?
PM MAIL   Вверх
Фантом
Дата 9.3.2012, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1515
Регистрация: 23.3.2008

Репутация: 2
Всего: 49



Цитата(newbie2009 @  9.3.2012,  11:05 Найти цитируемый пост)

хорошо, а можете пояснить тогда как считать дисторсию третьего порядка?

Так что же там еще можно объяснить? 

Цитата(newbie2009 @  9.3.2012,  11:05 Найти цитируемый пост)
и правильно ли я понимаю, что коэффициент b0 - это экспериментально подобранный? 

Хм... простите, но Вы прочитали этот раздел статьи? Там русским по белому написано, что b0 - коэффициент линейного увеличения. В простейшем случае, если изображение требуется только исказить, он равен единице. Искажение определяется величиной F3 (которую для получения определенного результата действительно можно подобрать экспериментально).
PM   Вверх
Pavia
Дата 9.3.2012, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 6.12.2008

Репутация: 11
Всего: 12



Фантом
На wiki очень плохо описаны эти коэффициенты.
newbie2009
Б. Яне Цифровая обработка изображений.
Там по лучше описано. Но всё же я так толком с этим искажением и не разобрался какой коэффициент что означает, тем более в разных статьях разные обозначения и разные формулы.


PM MAIL   Вверх
Фантом
Дата 9.3.2012, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1515
Регистрация: 23.3.2008

Репутация: 2
Всего: 49



Цитата(Pavia @  9.3.2012,  15:00 Найти цитируемый пост)

На wiki очень плохо описаны эти коэффициенты.

Плохо?!  smile 

По-моему, понятней некуда.
Код

#include<stdio.h>

const float F=0.001;
const float h=0.05;

int main()
{
    FILE *clear,*dist;
    clear=fopen("clear.dat","w+");
    dist=fopen("dist.dat","w+");    

    for(float x=-10.0;x<11.0;x+=1.0) for(float y=-10.0;y<10.0+h;y+=h)
    {
        fprintf(clear,"%8.3f  %8.3f\n",x,y);
        fprintf(clear,"%8.3f  %8.3f\n",y,x);        
        float r2=x*x+y*y;
        float xd=x+F*r2*x;
        float yd=y+F*r2*y;
        fprintf(dist,"%8.3f  %8.3f\n",xd,yd);
        fprintf(dist,"%8.3f  %8.3f\n",yd,xd);        
    }
    fclose(clear);
    fclose(dist);
    return 0;
}


Самая простейшая реализация (C99), выводит координаты точек в файл. Если нарисовать результат, получится нечто вроде того, что содержится в прикрепленном файле. Красная сетка - исходная, зеленая - получившаяся в результате дисторсии третьего порядка (для F3=0.001, знак положителен, соответственно, получается "подушка").

Присоединённый файл ( Кол-во скачиваний: 34 )
Присоединённый файл  dist.png 142,18 Kb
PM   Вверх
newbie2009
Дата 9.3.2012, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 8.2.2009

Репутация: нет
Всего: нет



А почему вы взяли дисторию 3го порядка именно?
PM MAIL   Вверх
Фантом
Дата 9.3.2012, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1515
Регистрация: 23.3.2008

Репутация: 2
Всего: 49



Цитата(newbie2009 @  9.3.2012,  21:25 Найти цитируемый пост)
А почему вы взяли дисторию 3го порядка именно? 


Вы же сами хотели "эффект как на картинке". А если внимательно прочитать подпись под картинкой, то там обнаружится следующее:
Цитата

Идеальное без дисторсии, с «подушкой» и «бочкой».


Затем, в том же разделе "теория" той же статьи из Википедии читаем следующее:
Цитата

F_3 — дисторсия третьего порядка, которая обычно вносит наибольший вклад в искажение формы. Если F_3 имеет тот же знак, что и b_0, возникнет «подушка», в противном случае — «бочка».


P.S. Когда-то в FIDO ходила шутка про то, что "Чтение мануалов вслух с выражением - 100$ в час." По-моему, уже пора начинать читать статью из Википедии самостоятельно, без моей помощи.  smile 
PM   Вверх
newbie2009
Дата 9.3.2012, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 8.2.2009

Репутация: нет
Всего: нет



А где Вы строили эти графики по точкам (я пробывал в экселе и что-то у меня так красиво не получилось)? ;) И не подскажешь как это красиво сделать для целых координат, а то мне надо это применять для битмапа, а там я работаю с целыми числами и просто округления вроде не очень хорошо получается...

Это сообщение отредактировал(а) newbie2009 - 9.3.2012, 22:32
PM MAIL   Вверх
mrgloom
Дата 11.3.2012, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 8.6.2011

Репутация: нет
Всего: нет



называется подушка\бочка barrel\pincushion

http://en.wikipedia.org/wiki/Distortion_(optics)
кол-во коэфициентов может быть и больше 3, но обычно не применяют, т.к. старшие члены мало влияют(формула в статье),
 radial distortion coefficient и tangential distortion coefficient это искажения из-за различных физических причин на линзе вроде.

чтобы не возится с интерполяцией можно сделать через remap в opencv.
PM MAIL   Вверх
Алина96
Дата 17.3.2017, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 16.3.2017

Репутация: нет
Всего: нет



Добрый день! Поставлена задача в Делфи7, есть обычное изображение, в итоге необходимо получить изображение с дисторсией. Помогите, пожалуйста.
PM MAIL   Вверх
Akina
Дата 17.3.2017, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20101
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 436



А что сделано-то? в чём помогать? где описание конкретной проблемы?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Google
  Дата 30.3.2017, 17:30 (ссылка)  





  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0958 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.