Форум: "Прочее";
Текущий архив: 2006.09.10;
Скачать: [xml.tar.bz2];
ВнизУменьшение изображения Найти похожие ветки
← →
TImage1 (2006-08-18 22:41) [0]Подскажите алгоритм уменьшения картинки, а то есть один, но что то он не устраивает, хотелось бы получше качество.
← →
Ketmar © (2006-08-18 22:43) [1]Graphics32.
← →
TImage1 (2006-08-18 22:47) [2]>Ketmar © (18.08.06 22:43) [1]
библиотека? Хотелось бы все же алгоритм, очень не хочется связываться со сторонними компонентами.
← →
Дураг (2006-08-18 22:54) [3]canvas.StretchDraw
← →
TImage1 (2006-08-18 23:04) [4]>Дураг (18.08.06 22:54) [3]
хы, не это не пойдет естественно :))))
← →
Zeqfreed © (2006-08-18 23:12) [5]http://www.google.com/search?client=opera&rls=en&q=image+resampling&sourceid=opera&ie=utf-8&oe=utf-8
← →
Ketmar © (2006-08-18 23:23) [6]> [2] TImage1 (18.08.06 22:47)
зачем делать колесо? там GPL-код.
← →
guav © (2006-08-18 23:29) [7]> >Дураг (18.08.06 22:54) [3]
> хы, не это не пойдет естественно :))))
Почему ?
У StretchBlt 4 варианта, может просто не тот, что в данном случае нужен установлен ?
← →
palva © (2006-08-18 23:39) [8]Алгоритм реализует повторную интерполяцию. Самый совершенный алгоритм это бикубическая интерполяция. Его стараются использовать, когда картинку надо увеличивать.
Исходная картинка представляет собой раскрашенные пиксели. Центры пикселей можно представить себе точками. Эти точки образуют прямоугольную сетку. Новая картинка ляжет на эту же сетку, но новые пиксели будут располагаться реже и будут вообще говоря попадать где-то между точками старой картинки. Каждый новую точку надо раскрасить в зависимости от цветов старых пикселей.
Если бы новая точка располагалась на горизонтальной линии сетки, то можно было бы взять две точки слева и две точки справа и построить по ним кубический многочлен. Значение этого многочлена в новой точке и будет новым цветом (если изображение цветное, то нужно эту интерполяцию повторить три раза). Но вообще говоря новая точка лежит между линиями сетки, поэтому поступим так: проведем через эту точку горизонтальную прямую линию до перечечения с двумя вертикальными линиями сетки слева и двумя справа. В этих четырех точках надо определить цвета используя старые точки, лежащие на одной горизонтальной линии - две сверху и две снизу - тоже используем кубическую интерполяцию. Таким образом в определении цвета новой точки участвует 16 старых точек.
Алгоритм можно упростить, если использовать линейную интерполяцию. Тогда в определение цвета одной новой точки будет вовлечено четыре старых точки. Еще проще - это взять цвет ближайшей старой точки. При уменьшении картинки даже такой примитивный алгоритм будет давать приемлемый результат.
← →
Anatoly Podgoretsky © (2006-08-19 00:04) [9]TImage1 (18.08.06 22:41)
До одного пикселя.
← →
TImage1 (2006-08-19 01:45) [10]>Anatoly Podgoretsky © (19.08.06 00:04) [9]
)))))))))))))))
>palva © (18.08.06 23:39) [8]
Теория это конечно хорошо, но в моем случае писать собственный алгоритм есть не разумная трата времени.
Люди может у кого завалялся исходник, или поделитесь своим опытом, кто сталкивался с подобной задачей.
← →
Ketmar © (2006-08-19 02:32) [11]> [10] TImage1 (19.08.06 01:45)
тяжело быть альтернативно развитым, да? ладно, я повторю: Graphics32.
← →
TImage1 (2006-08-19 03:19) [12]Ketmar © (19.08.06 02:32) [11]
Это библиотека??? В смысле компонент/набор компонентов, я повторюсь, использование сторонних компонентов не желательно, не люблю я это все дело. Можно конечно выдернуть от туда алгоритм, посмотрю конечно (и то если с исходниками), но все же возможно у кого то есть алгоритм. Вообще если честно пока не смотрел что за зверь этот Graphics32, в любом случае спасибо за желание помочь.
← →
OSokin © (2006-08-19 09:44) [13]Вот мой метод:
Вычисляется, во сколько раз уменьшается изображение по осям XY, проходится по изображению в цикле, берем цвет пикселя, находящегося на позиции, равно i * sX (где i - каунтер в цикле, sX - во сколько раз уменьшается) и так же по оси Y и ставим значение этого пискеля в новый, уменьшенный, рисунок. Если хочется покрасивше, то можно заморочится с соседними пикселями. Но StretchDraw все-таки быстрее :)
← →
Ketmar © (2006-08-19 13:20) [14]> [12] TImage1 (19.08.06 03:19)
ты бы это... почитал, что ли, [6] и пнул гугль. заняло бы времени примерно столько же, сколько написание поста, а вопрос бы сняло сразу.
а если тебе просто пообщаться -- то так и говори. мы тут потрепаться всегда готовы. %-)
← →
Ketmar © (2006-08-19 13:21) [15]> [13] OSokin © (19.08.06 09:44)
Graphics32 быстрее StreatchDraw. %-)
← →
Dib@zol (2006-08-19 15:13) [16]А ваще, чё бы не попробовать OpenGL? Там ведь билинейная фильтрация!
← →
palva © (2006-08-19 18:02) [17]
> TImage1 (19.08.06 01:45) [10]
> >palva © (18.08.06 23:39) [8]
> Теория это конечно хорошо, но в моем случае писать собственный
> алгоритм есть не разумная трата времени.
Вы же писали:
> TImage1 (18.08.06 22:47) [2]
> библиотека? Хотелось бы все же алгоритм, очень не хочется
> связываться со сторонними компонентами.
Я думал, вы собираетесь писать программу. А если нет, тогда непонятно, в чем ваши затруднения.
← →
TImage1 (2006-08-20 02:38) [18]ну я же на готовый рассчитывал :)))))) Просто самому писать для данного случая считаю неоправданным, вполне сойдет какой нибудь готовый алгоритм. Просто нет не времени на это, много и так чего писать приходится. А тут сестра попросила програму фотки цифровая пережимать, что бы по инету друзьям посылать. Ну вот выходные я и сел ей написал, только вот выходные и так короткие, а если еще алгоритм разрабатывать. Это в теории все быстро и легко, а на практике возится придется, то тормозить будет, то качества не добиться, в общем как то так :)
Да я тут дернул с инета пару алгоритмов но они не многим лучше strechdraw :)
← →
Vendict © (2006-08-20 12:55) [19]TImage1 (20.08.06 2:38) [18]
А тут сестра попросила програму фотки цифровая пережимать, что бы по инету друзьям посылать.
А может научить сестру фотошопом или аналогичным ПО пользоваться ?
← →
Virgo_Style © (2006-08-20 13:14) [20]Vendict © (20.08.06 12:55) [19]
фотошопом
IrfanView хватит выше крыши %-)
← →
Ketmar © (2006-08-20 13:48) [21]ясно. кисо убойное, хочет само не знает чего. а мы тут стараемся незнамо зачем...
← →
Vendict © (2006-08-20 18:48) [22]Virgo_Style © (20.08.06 13:14) [20]
IrfanView хватит выше крыши %-)
ну я же написал:
Vendict © (20.08.06 12:55) [19]
или аналогичным ПО
Ketmar © (20.08.06 13:48) [21]
))
← →
programania © (2006-08-20 22:09) [23]Исходный текст Delphi5 уменьшения разными способами
http://programania.com/stretch.zip 55кб
← →
TImage1 (2006-08-20 23:08) [24]programania © (20.08.06 22:09) [23]
Вот само то, спасибо большое.
Ketmar © (20.08.06 13:48) [21]
А правда ли ты старался? )))))))))))))))))))))
← →
palva © (2006-08-20 23:39) [25]> Ketmar © (20.08.06 13:48) [21]
> А правда ли ты старался?
Было сказано: МЫ старались.
Все ясно. Тебе нужна была программа, а ты упорно просил алгоритм. Слово, наверно, красивое... И здесь опять:
> вполне сойдет какой нибудь готовый алгоритм
← →
TImage1 (2006-08-21 00:54) [26]palva © (20.08.06 23:39) [25]
Да какая программа??? Просто если хочется пофлудить, ну я не против же. А так есть алгоритм, значит есть, нет значит нет. Вот programania © дал как раз то что и нужно было. А кто что там помогал я не знаю, спасибо конечно, но я вообще то не помощи просил, а АЛГОРИТМ если у кого есть. Причем писать его я не просил, попросил поделиться.
Хотя если для дела нужно, что бы я сказал что меня раскусили, то я скажу что ты меня раскусил, что мне то… нетрудно ))))))))))))))))))))0
← →
TImage1 (2006-08-21 01:00) [27]Хы я понял, некоторые люди усиленно помогают мне осознать что я не знаю что мне надо )))))))))))))))))))
Кстати программ подобных масса, но я почему решил ей написать сам, вот такой я извращенец. :)))))))
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2006.09.10;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.049 c