![]() |
![]() ![]() ![]() ![]() |
|
Добавление шума в изображениеDelphi , Графика и Игры , Bitmap
Автор: Fenik
{ **** UBPFD *********** by delphibase.endimus.com ****
>>
Зависимости: Graphics
Автор: Fenik, chook_nu@uraltc.ru, Новоуральск
Copyright: Автор Федоровских Николай
Дата: 5 июня 2002 г.
***************************************************** }
procedure AddNoise(Bitmap: TBitmap; Amount: Integer; Mono: Boolean);
{Если Mono = False, то точки цветные, иначе - чёрно-белые.
Процедура взята из библиотеки FastLIB и немного переделана}
function BLimit(B: Integer): Byte;
begin
if B < 0 then
Result := 0
else if B > 255 then
Result := 255
else
Result := B;
end;
type
TRGB = record
B, G, R: Byte;
end;
pRGB = ^TRGB;
var
x, y, i, a: Integer;
Dest: pRGB;
begin
Bitmap.PixelFormat := pf24Bit;
Randomize;
i := Amount shr 1;
if Mono then
for y := 0 to Bitmap.Height - 1 do
begin
Dest := Bitmap.ScanLine[y];
for x := 0 to Bitmap.Width - 1 do
begin
a := Random(Amount) - i;
with Dest^ do
begin
r := BLimit(r + a);
g := BLimit(g + a);
b := BLimit(b + a);
end;
Inc(Dest);
end;
end
else
for y := 0 to Bitmap.Height - 1 do
begin
Dest := Bitmap.ScanLine[y];
for x := 0 to Bitmap.Width - 1 do
begin
with Dest^ do
begin
r := BLimit(r + Random(Amount) - i);
g := BLimit(g + Random(Amount) - i);
b := BLimit(b + Random(Amount) - i);
end;
Inc(Dest);
end;
end;
end;
Пример использования: AddNoise(FBitmap, 65, False); Программный код на Delphi для добавления шума в изображение. Процедура
Код использует модуль Процедура сначала устанавливает формат пикселей в изображении в 24-разрядный. Затем она случайно генерирует значение Если Если Конечный результат - изображение с добавленным шумом. Некоторые предложения по улучшению:
Альтернативное решение - использовать библиотеку для обработки изображений, которая предоставляет встроенные функции для генерации шума. Это будет, вероятно, более эффективно и проще в использовании, чем написание собственного.custom implementation от scratch. Добавление шума в изображение - процедура на языке Delphi, которая генерирует случайные изменения оттенков цвета пикселей в изображении. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 | ||||