algorytm.org

Implementacja w Delphi/Pascal



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Aproksymacja półtonowa, sygnał szumu - Implementacja w Delphi/Pascal
Ocena użytkownikóww: *****  / 1
SłabyŚwietny
Nadesłany przez Tomasz Lubiński, 07 września 2005 01:00
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.

Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.

sin - Delphi/Unit1.pas:
//Tomasz Lubiński (C)2005 
//www.algorytm.org
//Modulowanie progu sygnalem szumu

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Label1: TLabel;
    Image2: TImage;
    Image3: TImage;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Edit1: TEdit;
    Button1: TButton;
    UpDown1: TUpDown;
    GroupBox1: TGroupBox;
    Label7: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label8: TLabel;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    Edit4: TEdit;
    Edit3: TEdit;
    Edit2: TEdit;
    Edit5: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}



procedure TForm1.Button1Click(Sender: TObject);
var i,j,p,zakres: Integer;
    color: TColor;
    alfa, beta, A: Real;

begin
Randomize();
p := StrToInt(Form1.Edit1.Text);
alfa := StrToFloat(Form1.Edit2.Text);
beta := StrToFloat(Form1.Edit3.Text);
A := StrToFloat(Form1.Edit4.Text);
zakres := StrToInt(Form1.Edit5.Text);
//zwykle progowe
for j:=0 to 229 do
        for i:=0 to 247 do
                begin
                color := Form1.Image1.Canvas.Pixels[i,j];
                if (p>GetRValue(color)) then Form1.Image2.Canvas.Pixels[i,j] := clBlack
                        else Form1.Image2.Canvas.Pixels[i,j] := clWhite;
                end;
//modulowanie progu sygnalem szumu
if RadioButton1.Checked then
        begin
                for j:=0 to 229 do
                        for i:=0 to 247 do
                        begin
                                color := Form1.Image1.Canvas.Pixels[i,j];
                                if ((p+A*sin(3.14*alfa*i/180)*sin(3.14*beta*j/180))>GetRValue(color)) then Form1.Image3.Canvas.Pixels[i,j] := clBlack
                                        else Form1.Image3.Canvas.Pixels[i,j] := clWhite;
                        end;
        end
else
        begin
                for j:=0 to 229 do
                        for i:=0 to 247 do
                        begin
                                color := Form1.Image1.Canvas.Pixels[i,j];
                                if ((p+random(2*zakres)-zakres)>GetRValue(color)) then Form1.Image3.Canvas.Pixels[i,j] := clBlack
                                        else Form1.Image3.Canvas.Pixels[i,j] := clWhite;
                        end;
        end;
end;
end.
Dodaj komentarz