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

Вниз

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

 
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 вся ветка

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

Наверх




Память: 0.46 MB
Время: 0.01 c
2-1153308761
Роман88
2006-07-19 15:32
2006.08.06
Internet Explorer 6 (Добавить в избранное)


3-1148966505
WG
2006-05-30 09:21
2006.08.06
SQL выборка из таблицы с датами последнего изменения


2-1151856821
МишаК
2006-07-02 20:13
2006.08.06
программирование


2-1152689581
Mamed
2006-07-12 11:33
2006.08.06
Osvejit ekran


2-1152886626
дмитрий _делфи
2006-07-14 18:17
2006.08.06
делаю игру. надо сделать пульки.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский