Главная страница
    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.012 c
2-1153149885
AlexanderMS
2006-07-17 19:24
2006.08.06
Когда лучше начать чтение файла?


2-1152993687
Nobody_1988
2006-07-16 00:01
2006.08.06
Arrays


2-1153131002
Квэнди
2006-07-17 14:10
2006.08.06
Преобразование даты в Posix формат


15-1152166118
novill
2006-07-06 10:08
2006.08.06
Что с rsdn.ru?


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