Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.10.2007, 11:12   #1
DmT
Пользователь
 
Регистрация: 06.10.2007
Сообщений: 32
По умолчанию Размывание картинки

Помогите написать код на С++ или Делфи (оба борландовские) для размывания картинки TBitmap, с указанием коэфициента размывания.
DmT вне форума Ответить с цитированием
Старый 07.10.2007, 12:34   #2
execom
Редкий тунеядец
Форумчанин
 
Аватар для execom
 
Регистрация: 29.10.2006
Сообщений: 595
По умолчанию

В общем-то размытие - это уменшение резкости и еконтраста между близкими точками.. надо видимо сделать что-то вроде:
берём первый пиксель первого ряда и второй пиксель... равниваем цвета... смотрим разницу... и в зависимости от степени сглаживаниа их между собой уравниваем... например у нас стоит чисто белый пиксель и чисто черный... FFFFFF 000000 делаим белый светло серым а черный светло темно серым... F0F0F0 101010 т.о. два пикселя уже сглажены... что б было поресче можно сделать через буфер чтоб брало в двухмерный динамический массив через пиксел всю картинку тогда мы просто берем за раз картинку в массив и циклом компарируем все элементы по очереди и в этом же массиве их перезаписуем на новые,... затем массив загружаем на канву.... при необходимости в файл.... Соответственно степень сглаживания будет определять относительную величину уравнивания... т.е. при минимально сглаживании будет сцета слегка изменяться а прни максимальном будут практически уравниваться.... Можно сравнивать блоками по несколько пикселей например 2*2 или 3*3 при этом можно будет в разы увеличивать предельную степень сглаживания.... Возится с кодом не буду... щаз просто лень...
execom вне форума Ответить с цитированием
Старый 07.10.2007, 12:44   #3
DmT
Пользователь
 
Регистрация: 06.10.2007
Сообщений: 32
По умолчанию

Ну может кому не лень напишите именно код, плиззззз...
DmT вне форума Ответить с цитированием
Старый 07.10.2007, 12:54   #4
execom
Редкий тунеядец
Форумчанин
 
Аватар для execom
 
Регистрация: 29.10.2006
Сообщений: 595
По умолчанию

Цитата:
Помогите написать код
Напишите и помогите 2 больших разници..... У нас так не любят... Где твои наработки...??? Может займусь, а может нет... Но поверь мне это не помогите, а чистейшее напишите... Ищи инфу по работе с BMP, узай работу с динамическими массивами, запускай простейший двиг... Будем искать баги... Это не сложно...
execom вне форума Ответить с цитированием
Старый 07.10.2007, 16:34   #5
Diller
Пользователь
 
Аватар для Diller
 
Регистрация: 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_™♣__۩۞۩
Diller вне форума Ответить с цитированием
Старый 08.10.2007, 17:18   #6
DmT
Пользователь
 
Регистрация: 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));
}
}
DmT вне форума Ответить с цитированием
Старый 08.10.2007, 17:36   #7
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Быстрее будет прогуглить на тему gaussian blur delphi
пыщь
JTG вне форума Ответить с цитированием
Старый 08.10.2007, 22:29   #8
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

См. в общем разделе тему "Процедуры по обработке изображений"
mihali4 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Картинки... 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