|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
07.10.2007, 11:12 | #1 |
Пользователь
Регистрация: 06.10.2007
Сообщений: 32
|
Размывание картинки
Помогите написать код на С++ или Делфи (оба борландовские) для размывания картинки TBitmap, с указанием коэфициента размывания.
|
07.10.2007, 12:34 | #2 |
Редкий тунеядец
Форумчанин
Регистрация: 29.10.2006
Сообщений: 595
|
В общем-то размытие - это уменшение резкости и еконтраста между близкими точками.. надо видимо сделать что-то вроде:
берём первый пиксель первого ряда и второй пиксель... равниваем цвета... смотрим разницу... и в зависимости от степени сглаживаниа их между собой уравниваем... например у нас стоит чисто белый пиксель и чисто черный... FFFFFF 000000 делаим белый светло серым а черный светло темно серым... F0F0F0 101010 т.о. два пикселя уже сглажены... что б было поресче можно сделать через буфер чтоб брало в двухмерный динамический массив через пиксел всю картинку тогда мы просто берем за раз картинку в массив и циклом компарируем все элементы по очереди и в этом же массиве их перезаписуем на новые,... затем массив загружаем на канву.... при необходимости в файл.... Соответственно степень сглаживания будет определять относительную величину уравнивания... т.е. при минимально сглаживании будет сцета слегка изменяться а прни максимальном будут практически уравниваться.... Можно сравнивать блоками по несколько пикселей например 2*2 или 3*3 при этом можно будет в разы увеличивать предельную степень сглаживания.... Возится с кодом не буду... щаз просто лень... |
07.10.2007, 12:44 | #3 |
Пользователь
Регистрация: 06.10.2007
Сообщений: 32
|
Ну может кому не лень напишите именно код, плиззззз...
|
07.10.2007, 12:54 | #4 | |
Редкий тунеядец
Форумчанин
Регистрация: 29.10.2006
Сообщений: 595
|
Цитата:
|
|
07.10.2007, 16:34 | #5 |
Пользователь
Регистрация: 21.06.2007
Сообщений: 55
|
динамич массив можно создать так
const pi=3.14; var M : array of real; n,i: integer; begin randomize; razmer:=random(100);{задание размерности массива или любая зависимость по которой необходимо создавать размер массива} SetLength(V,razmer); loskzad:=12; r:=2; for i:=0 to razmer-1 do begin repeat V[i]:=pi*r*r*losk; {вывод массива в таблицу} ttable.cells[1,i+1]:=floattostr(V[i]); losk:=Losk+1; until losk>=loskzad; end; end; www.nnm.ru ۩۞۩___Смысл заключается,_______________۩۞۩ ۩۞۩___Лишь в величине вашего разума____.۩۞۩ ۩۞۩__♣™_Diller_™♣__۩۞۩ |
08.10.2007, 17:18 | #6 |
Пользователь
Регистрация: 06.10.2007
Сообщений: 32
|
//вот мой код. писал давненько. выдает просто черную картинку.
int pow=50; for(int i=0;i<=Image1->Height;i++){ for(int j=0;j<=Image1->Width;j++){ Image1->Picture->Bitmap->Canvas->Pixels[i][j]=RGB( GetRValue(Image1->Picture->Bitmap->Canvas->Pixels[i][j])*(pow/100)+GetRValue(Image1->Picture->Bitmap->Canvas->Pixels[i][j+1])*((100-pow)/100), GetGValue(Image1->Picture->Bitmap->Canvas->Pixels[i][j])*(pow/100)+GetGValue(Image1->Picture->Bitmap->Canvas->Pixels[i][j+1])*((100-pow)/100), GetBValue(Image1->Picture->Bitmap->Canvas->Pixels[i][j])*(pow/100)+GetBValue(Image1->Picture->Bitmap->Canvas->Pixels[i][j+1])*((100-pow)/100)); } } |
08.10.2007, 17:36 | #7 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
Быстрее будет прогуглить на тему gaussian blur delphi
пыщь
|
08.10.2007, 22:29 | #8 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
См. в общем разделе тему "Процедуры по обработке изображений"
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Картинки... | Altera | Свободное общение | 5 | 24.07.2008 05:41 |
Картинки | Rio309 | Мультимедиа в Delphi | 4 | 10.02.2008 00:36 |
Картинки и CMS | kirill555 | PHP | 3 | 10.12.2007 02:40 |
БД и картинки | Constellation | БД в Delphi | 2 | 06.12.2007 15:33 |
Картинки | Акашаев Нурлан | Помощь студентам | 7 | 25.10.2007 20:46 |