реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Бикубическая интерполяция изображений, Поделитесь опытом
irum4
сообщение Feb 24 2006, 13:03
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 224
Регистрация: 18-06-04
Пользователь №: 54



Реализовывал ли кто либо в железе билиненйную, бикубическую (или другие) интерполяцию для изменения размера изображения. Поделитесь опытом, ссылками, какие получили результаты. Заходит новая разработка в которой должна быть такая функция.


--------------------
Электроника - наука о контактах.
Go to the top of the page
 
+Quote Post
bav
сообщение Feb 26 2006, 08:29
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 693
Регистрация: 21-06-05
Из: Санкт-Петербург
Пользователь №: 6 184



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

здесь Вам придется посидеть, попробовать эту кухню и выбрать для себя оптимальный вариант
Go to the top of the page
 
+Quote Post
YGin
сообщение Mar 14 2006, 08:25
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 193
Регистрация: 28-02-06
Пользователь №: 14 796



Добрый день!
а можна чуток поконкретней (частотная ето сплайн?)
и если не трудно сылочку на алгоритм(сплайна)
или можна в 2 словах!
Go to the top of the page
 
+Quote Post
bav
сообщение Mar 14 2006, 09:15
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 693
Регистрация: 21-06-05
Из: Санкт-Петербург
Пользователь №: 6 184



Нет, частотная это не сплайн.
суть заключается в следующем (это также исп. для передискретизации звука)
- по отсчетам делаем прямое преобразование Фурье
- делаем обратное преобразование Фурье, но пространственных отсчетов используем бОльше. Т. е. в аргумент синуса/косинуса подставляем отсчеты с меньшим шагом. - это для увеличения. Для уменьшения - срезаем высокие частоты (лучше сделать регуляризацию) и восстанавливаем с меньшим количеством отсчетов

по сути, задача сводится к вычисленю свертки. Результат - интенсивность пиксела. Ядро для свертки - синк, гаусс и т. д. Смещение центра зависит от смещения между пикселами. Напр увеличение в два раза: мы знаем интенсивности NxM пикселов, а требуется найти интенсивность 2Nx2M - отсюда ищем интенсивность между пикселами (интерполируем). т. к. искомые находятся между (по середине) - вершина функции в ядре будет по-середине.

по-поводу сплайнов - в Яндексе наберите ключевые слова "сплайн исходник алгоритм и т. п."
в кратце суть:
интерполировать можно с помощью функции n -ого порядка. Но при величине степени выше 5 - полином становится не устойчивым (можете поэкспериментировать в exel, с помощью линий тренда). Обычно исп. порядок 3, можно иногда 4 (если надо сильно подчеркнуть границы, но осторожно). и кусочками интерполируют соседние пикселы ("кусочно кубическая" интерполяция). Для того, чтобы небыло ломаных линий, вводят условия (первые и вторые производные должны быть равны) для сохранения гладкости кривой. В сплайнах есть минус - значение одного пиксела влияет на значение другого, даже если они расположены далеко друг от друга (из-за вводимых условий)

для начала лучше начать экспериментировать с кусочно-линейной интерполяцией. Советы для облегчения жизни:
иногда трудно сообразить, как работать с 2D координатами. Поэтому рекомендую картинку разбить на строки. Каждую строку обработать (изменть масштаб) и эту вытянутую/сжатую картинку сохранить в новом месте. Затем полученную картинку разбить на столбцы и обработать по столбчам. Иногда такая реализация работает быстрее.
Go to the top of the page
 
+Quote Post
YGin
сообщение Mar 16 2006, 12:47
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 193
Регистрация: 28-02-06
Пользователь №: 14 796



Спасибо!
Надо будет по етому поводу чево небуть почитать!
Go to the top of the page
 
+Quote Post
AndrewKirs
сообщение May 5 2006, 12:57
Сообщение #6


Участник
*

Группа: Свой
Сообщений: 63
Регистрация: 5-05-06
Пользователь №: 16 804



Я реализовывал билинейную интерполяцию, но, правда, программно. Делались варианты на обычном C++ (плав.точка), на MMX и на SSE2(целочисленные). Отдельно для уменьшения и для увеличения изображений. Был хороший рост производительности, особенно для уменьшения (экспоненциальный при росте коэффициента уменьшения). Если кому-то интересно, могу рассказать подрробнее.
Go to the top of the page
 
+Quote Post
Builder
сообщение May 6 2006, 11:03
Сообщение #7


iBuilder©
****

Группа: Свой
Сообщений: 519
Регистрация: 14-07-04
Из: Минск
Пользователь №: 322



Вы капните google - точно будет.
Можно ещё глянуть исходники Gimp -
графический редактор опен соде.
что-то здесь было:
http://www.enlight.ru/demo/faq/smth.phtml?..._curves_splines
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 10th July 2025 - 08:32
Рейтинг@Mail.ru


Страница сгенерированна за 0.01408 секунд с 7
ELECTRONIX ©2004-2016