Поиск:

Ответ в темуСоздание новой темы Создание опроса
> бикубическая интерполяция, для изображений 
:(
    Опции темы
Emura
Дата 17.11.2009, 01:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



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

вот для наглядности
user posted image


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

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

спасибо

Это сообщение отредактировал(а) Emura - 17.11.2009, 01:23
PM   Вверх
W4FhLF
Дата 17.11.2009, 05:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


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

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





--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Emura
Дата 17.11.2009, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



W4FhLF,
и там смотрел тоже и не там смотрел, не математик, так как понял пояснил в первом посте. дальше чтото ступор в тех моментах которые указал.
PM   Вверх
Pavia
Дата 17.11.2009, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Сканируем новое изображение.

Нам нужно перевести новые координаты в старые.

Введем систему координат мне нравится так. 

0,0 расположим в верхнем левом углу. 
Wn,Hn в правом нижнем углу нового изображения.  
W,H в правом нижнем углу старого изображения.  

Теперь перевод из старых координат в новые делается так xn:=x*Wn/W, yn:=y*Hn/H
Из новых в старые x:=xn*W/Wn, y:=yn*H/Hn

Теперь что касается пикселей.  Они имеют размеры, их форма это квадрат. А цвет пикселя это интегральное значение интенсивности света. Интеграл по площади пикселя.  При масштабировании площадь пикселя меняется.

Теперь надеюсь понятно что координаты центра пикселя на самом деле имеют дробное значение. 0.5, 1.5, 2.5 и тд (W-1)+0.5
Это соответствует нулевому, первому и тд.

Если бы ты увеличивал изображение, то все просто.

Увеличение в k=2 раза. Wn=k*W, Hn=k*H;

Рассмотрим на примере пикселя с координатами (3,3)  на новом изображение

Это значит что пиксель располагается  в координатах верхний левый угол (3,3) до нижний правый (4,4).
центр (3.5,3.5)

Пересчитаем в старые координаты.

3*1/k=3/2=1.5
4*1/k=4/2=2


центр
3.5*1/k=3.5/2=1,75

Нам надо как то посчитать интегральчик на старом изоброжении с координатами от верхний левый угол (1.5,1.5) до нижний правый (2,2).
Понятно что в этом случае для нахождения яркости пикселя надо брать ближайшие пиксели к этой координате. Для линейной интерполяции надо 4 соседних пикселя  для кубической 16. 
И тут точность будет заметна.


Вернемся к уминьшению картинки. Теперь все поменялось.
И тут уже не важно какую интерполяцию ты будешь использовать.
К примеру мы уменьшаем картинку в 2.1 раза.
Это значит что ты захватишь 1 пиксель целиком и 2 кусочка от других. Тут уже не так важна точность, но тоже можно попробовать интерполяцию.  Для интерполяции потребуется захватывать не 16, а больше пикселей. Ну центральные те которые целиком поподают в интерполяции не нуждаются, а награнице решать придется. 

Собственно в начале надо построить сплайн. Кусочный кубический многочлен и уже из него выбирать, то что нужно.



PM MAIL   Вверх
Emura
Дата 17.11.2009, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Pavia,
Огромное спасибо за ответ!  smile 
буду разбираться.
PM   Вверх
Анни
Дата 23.4.2010, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Emura, ты писал, что пытаешься разобратся с бикубической интерполяцией для уменьшения размеров картинки. У меня это тема бакалаврской работы. Ты не мог бы помоч мне в этом, не за просто так, конечно! Пожалуйста!!!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

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


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

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


 




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


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

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