Вниз
Скачать: CL | DM;

Алгоритм качественного уменьшения рисунка   Найти похожие ветки 

← →
sco ©   (2006-02-10 16:08) [0]

Извините за банальный вопрос, который где только не рассматривался, но мой "треугольный мозг, - как выражается одна моя знакомая - это не понял". Перепробовал 3 алгоритма, из них 2 не отладил, а 1 заработал, вот только слово "качественный" к нему никак не подходит. А мне то нужно чтобы в Image загрузить рисунок 1280-960(это в среднем) и "КРАСИВО" отмаштабировать в допустимые формой размеры(при разных разрешениях разные размеры). Грузит вроде нормально но вот маштабирует плохо, у меня слайдшоу картин, и мне естественно очень важно "красиво" показывать рисунки. А то шикарные картины просто теряют вид.
 В яндексе я всё проискал, что нашёл либо не подошло, либо не заработало. Гугл не для меня, проблемы с английским. Где ещё искать не знаю. Мож у кого-нидь есть ссылки,алгоритмы,функции?


← →
Jeer ©   (2006-02-10 16:50) [1]

В таком случае имеет смысл поискать готовое:
-FastLib


← →
misha_gr   (2006-02-11 17:58) [2]

О, только сегодня подсказали ))) Цитирую:

TImage.Picture.Graphic конвертируем в TBitmap (думаю сам догадаешься).
Далее, битмап представляет собой двумерный массив
значений цветов, типа rgb[x1][y1] чтоб ресайзнуть его до rgb[x2][y2] надо сделать промежуточную матрицу rgb[XNOK][YNOK] XNOK YNOK - наименьшие общие кратные x1, x2 и y1,y2 соотв.
Далее практически очевидно - идет ресемплирование конечного пикселя по маленьким кусочкам этой большой матрицы.
Пример приведу, матрица 10 на 10 чтоб сделать из нее 7 на 7, делается матрица 70 на 70, в которой один оригинальный пиксель = это кусочек 7 на 7. а потом из 70х70 последовательно берутся кусочки 10х10, выссчитывются их средние значения цветов, и получается в конце пересчитанная 7х7.
Если влом считать нок - можно тупо перемножать, но можно потерть в памяти места раз в 4-16.


← →
misha_gr   (2006-02-11 20:14) [3]

Только что реализовал... при преобразовании картинки 517*600
к 862*1000 результирующая матрица превышает 2GB, соответственно, память под такой массифчик не выделяется. Непосредственно в лоб решать таким образом задачку нельзя. Но в общем, идея понятна. Как реализую - отпишу )))


← →
antonn ©   (2006-02-11 20:53) [4]

misha_gr   (11.02.06 20:14) [3]
Непосредственно в лоб решать таким образом задачку нельзя

нужно с DIB данными работать непосредственно:)


← →
vrem   (2006-02-11 21:33) [5]

1. прямое преобразование фурье(можно быстрое)
2. отбрасывание "лишних" частот
3. обратное преобразование фурье(тоже можно быстрое)

пример -
есть 1024 точки. надо 512 точек
делаем прямое быстрое преобразование фурье(т.к. 1024 это степень двойки) - получается разложение на 512 частот. половину частот(высоких) выбрасываем, остаётся 256 низких частот.
делаем обратное быстрое преобразование фурье, получаем 512 точек как и требуется


← →
Fenik ©   (2006-02-12 02:17) [6]

http://torry.net/vcl/graphics/bitmap/resample.zip



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.025 c
15-1152176226
alles
2006-07-06 12:57
2006.08.06
asp доступ к Paradox-у по локалке


15-1152509587
Ega23
2006-07-10 09:33
2006.08.06
С Днём рождения! 9 июля


2-1152789449
alexandrine
2006-07-13 15:17
2006.08.06
Need help


2-1152864598
yurick1
2006-07-14 12:09
2006.08.06
компоненты


15-1152394199
PATRIOT
2006-07-09 01:29
2006.08.06
как получить нормальное время ?




   Наверх