Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.11.25;
Скачать: [xml.tar.bz2];

Вниз

"экстраполяция" рисунка   Найти похожие ветки 

 
Virgo_Style ©   (2007-10-21 12:30) [0]

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

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

Вопрос в том, как это реализовать. Пока что я думаю ставить вручную ключевые точки, а потом подбирать МНК коэффициенты уравнения типа red(X,Y)=K0+Kx*X+Ky*Y (это простейший вариант, которым вряд ли удастся ограничиться), и подкладывать получившийся фон под картинку.

Честно говоря, мне этот вариант не очень нравится. Может быть, подбросите другую идею?


 
Jump   (2007-10-21 12:47) [1]

Ambient Light рулит...


 
vrem_   (2007-10-21 13:32) [2]

одну так сделаешь, а на будущее скажи чтоб не рвали.


 
@!!ex ©   (2007-10-21 17:03) [3]

Я бы делал градиент не для всего фона, а с учетом находящихся поблизости цветов картинки.
Строим два рисунка. ОДин - линейнас интерполяция цвета по вертикали, второй - по горизонтали. Потом смешиваем в один рисунок. получится примерное заполнение рисунка близкими цветами.


 
Virgo_Style ©   (2007-10-21 17:32) [4]

@!!ex ©   (21.10.07 17:03) [3]
Я бы делал градиент не для всего фона, а с учетом находящихся поблизости цветов картинки.


Я вроде бы о том же, градиент считается, исходя из заданных точкек рисунка. А два рисунка... зачем и как?


 
@!!ex ©   (2007-10-21 19:52) [5]

> А два рисунка... зачем и как?

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


 
Virgo_Style ©   (2007-10-21 21:18) [6]

@!!ex ©   (21.10.07 19:52) [5]
Градиент по вертикали, градиент по горизонтали.


м-м-м... а на основе чего считать градиенты? Осреднять цвета по границам?

Моя идея такова: есть функции Red(X,Y), Green(X,Y), Blue(X,Y).
В простейшем случае
Red(X,Y) = Kr0+Krx*X+Kry*Y
Green(X,Y) = Kg0+Kgx*X+Kgy*Y
Blue(X,Y) = Kb0+Kbx*X+Kby*Y

Заданы точки (Xi,Yi) с цветами (Ri,Gi,Bi)

Методом наименьших квадратов подбираем коэффициенты K, после чего можем нарисовать наш градиент.

Конечно, можно не ограничиваться первыми степенями X и Y, но это уже следующий шаг.

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


 
@!!ex ©   (2007-10-21 21:26) [7]

> м-м-м... а на основе чего считать градиенты? Осреднять цвета
> по границам?

Да. градиент дыры - на основе краев дыры.


 
vpbar ©   (2007-10-21 23:01) [8]

заштампуй в фотошопе или гимпе - быстрее будет.


 
Dimka Maslov ©   (2007-10-22 11:31) [9]

В фотошопе есть
Spot Healing Bruh Tool
Healing Brush Tool
Patch Tool
Clone Stamp Tool
и многое другое, вплоть до автоматической склейки панорам


 
Virgo_Style ©   (2007-10-22 13:30) [10]

вручную возни много. Особенно если я позднее захочу эту панораму подправить... Да и полтора десятка панорам вручную - это довольно много возни.

А фотошоп - это довольно недешево и опять-таки вручную.



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2007.11.25;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.036 c
2-1193990430
фыва
2007-11-02 11:00
2007.11.25
Шрифты


15-1192920134
Прочее
2007-10-21 02:42
2007.11.25
Как сделать чтобы в OnKeyPress проходило сообщение VK_UP ?


11-1178208197
Даддитс
2007-05-03 20:03
2007.11.25
Оптимизация


15-1193300314
MaxSavchuk
2007-10-25 12:18
2007.11.25
https для delphi


15-1192696621
Начальник ИТ
2007-10-18 12:37
2007.11.25
Организация передачи данных по диал-ап соединению





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский