Tuesday, May 22, 2012

function Shrink pada pengolahan citra digital


function Shrink  (MInput:Matriks;Mengecil:integer):Matriks;
var
i,j:integer;
MOutput:matriks;
begin
setlength(MOutput,length(MInput) div mengecil,length(MInput[0]) div mengecil);
  for i:=0 to length(Moutput)-1 do
  begin
    for j:=0 to length(MOutput[0])-1 do
    begin
    MOutput[i,j]:=MInput[i*mengecil,j*mengecil];
    end;
  end;
  Shrink:=MOutput;
end;

function ImgMirror pada pengolahan citra digital


function ImgMirror(MInput:Matriks;keadaan:Char):Matriks;
var
  i,j:Integer;
  a,b,MOutput:Matriks;
begin
  a:=Flipping(MInput,'V');
  b:=Flipping(MInput,'H');
  case keadaan of
            'V': begin
                SetLength(MOutput,length(MInput)*2,length(MInput[0]));
                for i:=0 to (length(MOutput)-1) div 2 do
                 for j:=0 to (length(MOutput[0])-1) do
                 begin
                  MOutput[i,j]:=MInput[i,j];
                  MOutput[i+(Length(MOutput)-1) div 2,j]:=a[i,j];
                 end;
              end;
            'H': begin
                SetLength(MOutput,length(MInput),length(MInput[0])*2);
                for i:=0 to length(MOutput)-1 do
                 for j:=0 to (length(MOutput[0])-1) div 2 do
                 begin
                  MOutput[i,j]:=MInput[i,j];
                  MOutput[i,j+(Length(MOutput[0])-1) div 2]:=b[i,j];
                 end;

              end;
  end;
  ImgMirror:=MOutput;
end;

function ImageNegativeKetupat pada pengolahan citra digital


function ImageNegativeKetupat(MInput:Matriks):Matriks;
var
    i,j,l,s,r:integer ;
    MOutput : Matriks ;
begin
    SetLength(MOutput,Length(MInput), Length(MInput[0]));
    if Length(MInput)<Length(MInput[0]) then
      l:= Length(MInput)div 2
    else
      l:= Length(MInput[0])div 2 ;

    s:=(Length(MInput[0])div 2)-l;
    r:=(Length(MInput)div 2) - l;

    for i := 0 to Length(MOutput)-1 do
    begin
        for j:= 0 to Length(MOutput[0])-1 do
        begin
            MOutput[i,j] := MInput[i,j]   ;
            if ((i-r)+(j-s) >= l) and ((j-s)<=l+(i-r)) and ((i-r)<= l+(j-s) ) and ((i-r)+(j-s) <= length(MOutput)+l) and ((i-r)+(j-s) <= length(MOutput[0])+l) and (i>=r) and (j>=s) then
                 MOutput [i,j] := 255 - MInput[i,j]
        end;
    end;
    ImageNegativeKetupat := MOutput ;
end;

Function Polkadot pada pengolahan citra dgital


Function Polkadot(MInput:Matriks;l:integer):Matriks;
var
    i,j,m,n,r,c,d:integer ;
    MOutput : Matriks ;
begin
  d:=1;c:=1;
  SetLength(MOutput,Length(MInput),Length(MInput[0]));
  MOutput := chess(ImageNegativeL(MInput),l);
  m := round(Length(MInput)/l);
  n := round(Length(MInput[0])/l);

  if m>=n then r:=n div 2 else r:=m div 2;

  for i:=0 to Length(MOutput)-1 do
      begin
          for j:=0 to Length(MOutput[0])-1 do
              begin
                  if ((i div m) mod 2 >= 0) and ((j div n) mod 2 >= 0) then
                  if ((sqr((i-(r*(c-1)))-r)+sqr((j-(r*(d-1)))-r))<=r*r) and (i>=m*(c-1)) and (j>=n*(d-1)) then
                     MOutput[i,j]:= 255-MInput[i,j]
                  else
                     MOutput[i,j]:= MInput[i,j];
                  //if j=n-1 then d:=d+2;
              end;
        //if i=m-1 then c:=c+2;
      end;

  Polkadot:=MOutput;
end;

function Rekursif pada pengolahan citra digital


function Rekursif (MInput:Matriks;x:integer):Matriks;
var
i,j,k:Integer;
MOutput,temp:Matriks;
begin
temp:=MInput;
setlength(MOutput,length(MInput),length(MInput[0]));
begin
for k:=1 to x do
begin
MOutput:=Shrink(MInput,2);
begin
  for i:=0 to length(MOutput)-1 do
  begin
    for j:=0 to length(MOutput[0])-1 do
    begin
    temp[i+(length(MOutput)-1) div 2,j+(length(MOutput[0])-1) div 2]
    :=MOutput[i,j];
    end;
  end;
end;
end;
end;
Rekursif:=temp;
end;

Sunday, May 20, 2012

Function negative lingkaran belah ketupat pada pengolahan citra digital


fnction kuis2u(MInput:Matriks):Matriks;
var
  i,j,r: integer;
  MOutput : Matriks;
begin
    SetLength(MOutput,Length(MInput), Length(MInput[0]));
    r:=Length(Moutput) div 2;
    for i:= 0 to Length(MOutput)-1 do
      begin
        for j:= 0 to Length(MOutput[0])-1 do
          begin
            if (((i-r)*(i-r)+(j-r)*(j-r))<=r*r) and ((i+j <= r) or (j>=r+i) or (i>= r+j ) or (i+j >= length(MOutput)+r))then
                MOutput[i,j]:= 255-MInput[i,j]
                else
                MOutput[i,j]:=MInput[i,j]
          end;
      end;
  kuis2:=MOutput;
end;

function Image Negative Diagonal versi 2 pada pengolahan citra digital


function ImageNegativeDia2(MInput:Matriks):Matriks;
var
  i,j : integer;
  MOutput : Matriks;
begin
  SetLength(MOutput,Length(MInput),Length(MInput[0]));
  if Length(MInput)<Length(MInput[0]) then
  begin
  for i:=1 to Length(MOutput)-1 do
  begin
    for j:=1 to Length(MOutput[0])-1 do
    begin
      if round((j-Length(MInput[0]))/(i-0))<=round((0-Length(MInput[0]))/(Length(MInput)-0)) then
      MOutput[i,j]:=255-MInput[i,j]
      else
      MOutput[i,j]:=MInput[i,j];
    end;
  end;
  end
  else
  begin
  for i:=1 to Length(MOutput)-1 do
  begin
    for j:=1 to Length(MOutput[0])-1 do
    begin
      if (Length(MInput)*j)+(Length(MInput[0])*i)<=(Length(MInput)*Length(MInput[0])) then
      MOutput[i,j]:=255-MInput[i,j]
      else
      MOutput[i,j]:=MInput[i,j];
    end;
  end;
  end;
  ImageNegativeDia2:=MOutput;
end;

function Image Negative Lingkaran dinamis pada pengolahan citra digital


function ImageNegativeLingkaran(MInput:Matriks; Value:Integer):Matriks;
var
  i,j,a,b,r : integer;
  MOutput : Matriks;
begin
  SetLength(MOutput,Length(MInput),Length(MInput[0]));
  r:=Value;
    a:=(Length(Moutput) div 2);
    b:=(Length(Moutput[0]) div 2);
  for i:=0 to Length(MOutput)-1 do
  begin
    for j:=0 to Length(MOutput[0])-1 do
    begin
      if r<=(Length(MInput) div 2) then
      begin
      if r>=sqrt(sqr(a-i)+sqr(b-j)) then
      MOutput[i,j]:=255 - MInput[i,j]
      else
      MOutput[i,j]:=MInput[i,j];
    end
    else
    begin
      if Length(MInput) div 2 >=sqrt(sqr(a-i)+sqr(b-j)) then
      MOutput[i,j]:=255 - MInput[i,j]
      else
      MOutput[i,j]:=MInput[i,j];
    end;
  end;
  end;
  ImageNegativeLingkaran:=MOutput;
end;

Function negative papan catur pada pengolahan citra digital


function ImageNegative4(MInput:Matriks):Matriks;
var
  i,j : integer;
  MOutput : Matriks;
begin
  SetLength(MOutput,Length(MInput),Length(MInput[0]));
  for i:=0 to Length(MOutput)-1 do
  begin
    for j:=0 to Length(MOutput[0])-1 do
    begin
      if (j>(Length(MInput[0]) div 2)) and (i<=(Length(MInput) div 2)) then
      MOutput[i,j]:=255 - MInput[i,j]
      else
      if (j<=(Length(MInput[0]) div 2)) and (i>Length(MInput) div 2) then
      MOutput[i,j]:=255 - MInput[i,j]
      else
      MOutput[i,j]:=MInput[i,j];
    end;
  end;
  ImageNegative4:=MOutput;
end;

function negative diagonal pada pengolahan Citra digital


function ImageNegativeDia(MInput:Matriks):Matriks;
var
  i,j : integer;
  MOutput : Matriks;
begin
  SetLength(MOutput,Length(MInput),Length(MInput[0]));
  for i:=0 to Length(MOutput)-1 do
  begin
    for j:=0 to Length(MOutput[0])-1 do
    begin
      if (j<=(Length(MInput[0])-i)) then
      MOutput[i,j]:=255-MInput[i,j]
      else
      MOutput[i,j]:=MInput[i,j];
    end;
  end;
  ImageNegativeDia:=MOutput;
end;

Function Rotasi dalam Lingkaran pada pengolahan citra digital


function Rotation2(MInput:Matriks;pil:String):Matriks;
var
   i,j,r: integer;
   MOutput: Matriks;
begin
  if (pil='90C') or (pil='90UC') then
    begin
    if (Length(MInput)>Length(MInput[0])) then
      SetLength(MOutput, Length(MInput), Length(MInput[0]))
      else
      SetLength(MOutput, Length(MInput[0]), Length(MInput));
      r:=Length(Moutput) div 2;
      for i:= 0 to Length(MOutput)-1 do
        begin
          for j:=0 to Length(MOutput[0])-1 do
            begin
              if pil='90C' then
              begin
                  if (((i-r)*(i-r)+(j-r)*(j-r))<=r*r) then
                  MOutput[i,j]:=MInput[j,(Length(MOutput)-1)-i]
                  else
              MOutput[i,j]:=MInput[i,j]
              end
              else
              begin
              if ((i-r)*(i-r)+(j-r)*(j-r))<=r*r then
                  MOutput[i,j]:=MInput[(Length(MOutput[0])-1)-j,i]
                  else
              MOutput[i,j]:=MInput[i,j];
                  end;

            end;
        end;
    end
  else
      if (pil='180C') or (pil='180UC') then
        begin
             MOutput:=Rotation2(MInput,'90C');
             MOutput:=Rotation2(MOutput, '90C');
        end
          else
              if (pil='270C') then
                begin
                  MOutput:=Rotation2(MInput,'90UC');
                end
              else
                begin
                  MOutput:=Rotation2(MInput,'90C');
                end;
  Rotation2:=MOutput;
end;

function setengah addition, blending lingkaran pada pengolahan citra digital


function Kuis1(MInput:Matriks; MInput2:Matriks; Value:integer):Matriks;
var
  i,j,k,l,r,a,b : integer;
 MOutput : matriks;
begin
 SetLength(MOutput,Length(MInput),Length(MInput[0]));
    SetLength(MInput2,Length(MInput),Length(MInput[0]));
    r:=((Length(Moutput) div 2) div 2);
    a:=((Length(Moutput) div 2) div 2)+(Length(Moutput) div 2);
    b:=(Length(Moutput[0]) div 2);
    for i:= 0 to (Length(MOutput) div 2)-1 do
      begin
        for j:= 0 to (Length(MOutput[0]))-1 do
        begin
      MOutput[i,j]:=MInput[i,j] + MInput2[i,j];
      if (MOutput[i,j]>255) then MOutput[i,j]:=255
      else if (MOutput[i,j]<0) then MOutput[i,j]:=0;
    end;
  end;
  for k:= (Length(MOutput) div 2) to Length(MOutput)-1 do
      begin
        for l:= 0 to Length(MOutput[0])-1 do
        begin
          if r>=sqrt(sqr(a-k)+sqr(b-l)) then
          begin
             MOutput[k,l]:= (round(((100-Value)/100)*MInput[k,l])) + (round((Value/100)*MInput2[k,l]));
            if (MOutput[k,l]>255) then
            MOutput[k,l]:=255
            else
            if (MOutput[k,l]<0) then MOutput[k,l]:=0;
            end
            else
            MOutput[k,l]:=MInput[k,l];
        end;
        end;
        Kuis1:=MOutput;
  end;

Function Flip dalam lingkaran pada pengolahan citra digital


function Flip2(MInput:Matriks; pil:string):Matriks;
var
  i,j,r: integer;
 MOutput : matriks;
begin
 SetLength (MOutput,Length(MInput),Length(MInput[0]));
    r:=Length(Moutput) div 2;
if (pil='vertical') then
  begin
    for i:= 0 to Length(MOutput)-1 do
      begin
        for j:= 0 to Length(MOutput[0])-1 do
          begin
            if ((i-r)*(i-r)+(j-r)*(j-r))<=r*r then
                begin
                MOutput[i,j]:= MInput[(Length(MOutput)-1)-i,j];
                end
            else
              MOutput[i,j]:= MInput[i,j];
          end;
      end;
      end
      else
      if (pil='horisontal') then
    begin
    for i:= 0 to Length(MOutput)-1 do
      begin
        for j:= 0 to Length(MOutput[0])-1 do
          begin
            if ((i-r)*(i-r)+(j-r)*(j-r))<=r*r then
                begin
                MOutput[i,j]:=MInput[i, (Length(MOutput[0])-1)-j];
                end
            else
              MOutput[i,j]:= MInput[i,j];
          end;
      end;
      end;
 Flip2:=MOutput;
end;

function slicing dalam lingkaran pada pengolahan citra digital


function Slicing2(MInput:Matriks; Value:integer):Matriks;
var
  i,j,r,k,tempdiv, LevelBit : integer;
 MOutput : matriks;
begin
 SetLength (MOutput,Length(MInput),Length(MInput[0]));
    r:=Length(Moutput) div 2;
    for i:= 0 to Length(MOutput)-1 do
      begin
        for j:= 0 to Length(MOutput[0])-1 do
          begin
            if ((i-r)*(i-r)+(j-r)*(j-r))<=r*r then
                begin
                LevelBit:=0;
                tempdiv:=MInput[i,j];
              for k:= 0 to Value do
              begin
                  LevelBit:=tempdiv mod 2;
                  tempdiv:=tempdiv div 2;
              end;
            if LevelBit=1 then
              LevelBit:=255;
            MOutput[i,j]:=LevelBit;
                end
            else
              MOutput[i,j]:= MInput[i,j];
          end;
      end;
 Slicing2:=MOutput;
end;

Function Rotation pada pengolahan citra digital


Function Rotation(MInput:Matriks;pil:String):Matriks;
var
   i,j: integer;
   MOutput: Matriks;
begin
  if (pil='90C') or (pil='90UC') then
    begin
      SetLength(MOutput, Length(MInput[0]), Length(MInput));
      for i:= 0 to Length(MOutput)-1 do
        begin
          for j:=0 to Length(MOutput[0])-1 do
            begin
              if pil='90C' then
                  MOutput[i,j]:=MInput[j,(Length(MOutput)-1)-i]
              else
                  MOutput[i,j]:=MInput[(Length(MOutput[0])-1)-j,i];
            end;
        end;
    end
  else
      if (pil='180C') or (pil='180UC') then
        begin
             MOutput:=Rotation(MInput,'90C');
             MOutput:=Rotation(MOutput, '90C');
        end
          else
              if (pil='270C') then
                begin
                  MOutput:=Rotation(MInput,'90UC');
                end
              else
                begin
                  MOutput:=Rotation(MInput,'90C');
                end;
  Rotation:=MOutput;
end;

Function Flip pada pengolahan citra digital


Function Flip(MInput:Matriks; pil:string):matriks ;
var
i,j:integer;
MOutput:Matriks;
begin
SetLength(MOutput,Length(MInput),Length(MInput[0]));
if (pil='vertical') then
  begin
  for i:=0 to Length(MOutput)-1 do
      begin
        for j:=0 to Length(MOutput[0])-1 do
          begin
          MOutput[i,j]:= MInput[(Length(MOutput)-1)-i,j];
          end;
      end;
      Flip:=MOutput;
    end
    else
    if (pil='horisontal') then
    begin
  for i:=0 to Length(MOutput)-1 do
      begin
        for j:=0 to Length(MOutput[0])-1 do
          begin
          MOutput[i,j]:=MInput[i, (Length(MOutput[0])-1)-j];
          end;
      end;
      Flip:=MOutput;
    end;
end;

Function Slicing pada pengolahan citra digital


Function Slicing(MInput:Matriks; Value:integer):Matriks;
var
  i,j,k, tempdiv, LevelBit : integer;
  MOutput :Matriks;
begin
    SetLength (MOutput,Length(MInput),Length(MInput[0]));
    LevelBit:=0;
    for i:=0 to Length(MOutput)-1 do
      begin
        for j:=0 to Length(MOutput[0])-1 do
          begin
            tempdiv:=MInput[i,j];
            for k:= 0 to Value do
              begin
                  LevelBit:=tempdiv mod 2;
                  tempdiv:=tempdiv div 2;
              end;
            if LevelBit=1 then
              LevelBit:=255;
            MOutput[i,j]:=LevelBit;
          end;
      end;
    Slicing:=MOutput;
end;

Tuesday, May 15, 2012

Function Addition versi 2 pada pengolahan citra digital


Function Addtion2(MInput,MInput2:Matriks ; X,Y:integer):Matriks;
var
i,j,k,l : integer;
MOutput : Matriks;
begin
SetLength(MOutput,Length(MInput),Length(MInput[0]));
  for i:=0 to Length(MOutput)-1 do
  begin
    for j:=0 to Length(MOutput[0])-1 do
    begin
      MOutput[i,j]:= MInput[i,j];
    end;
    end;
    if ((Length(MOutput)-X)>=Length(MInput2)) and ((Length(MOutput[0])-Y)>=Length(MInput2[0])) then
    begin
  for k:=0 to Length(MInput2)-1 do
  begin
    for l:=0 to Length(MInput2[0])-1 do
    begin
      MOutput[X+k,Y+l]:=MInput[X+k,Y+l] + MInput2[k,l];
      if (MOutput[X+k,Y+l]>255) then MOutput[X+k,Y+l]:=255
      else if (MOutput[X+k,Y+l]<0) then MOutput[X+k,Y+l]:=0;
    end;
  end;
  end
  else if ((Length(MOutput)-X)<Length(MInput2)) and ((Length(MOutput[0])-Y)>=Length(MInput2[0])) then
    begin
  for k:=0 to (Length(MOutput)-X)-1 do
  begin
    for l:=0 to Length(MInput2[0])-1 do
    begin
      MOutput[X+k,Y+l]:=MInput[X+k,Y+l] + MInput2[k,l];
      if (MOutput[X+k,Y+l]>255) then MOutput[X+k,Y+l]:=255
      else if (MOutput[X+k,Y+l]<0) then MOutput[X+k,Y+l]:=0;
    end;
  end;
  end
  else if ((Length(MOutput)-X)>=Length(MInput2)) and ((Length(MOutput[0])-Y)<Length(MInput2[0])) then
    begin
  for k:=0 to Length(MInput2)-1 do
  begin
    for l:=0 to ((Length(MOutput[0]))-Y)-1 do
    begin
      MOutput[X+k,Y+l]:=MInput[X+k,Y+l] + MInput2[k,l];
      if (MOutput[X+k,Y+l]>255) then MOutput[X+k,Y+l]:=255
      else if (MOutput[X+k,Y+l]<0) then MOutput[X+k,Y+l]:=0;
    end;
  end;
  end
  else if ((Length(MOutput)-X)<Length(MInput2)) and ((Length(MOutput[0])-Y)<Length(MInput2[0])) then
    begin
  for k:=0 to ((Length(MOutput))-X)-1 do
  begin
    for l:=0 to ((Length(MOutput[0]))-Y)-1 do
    begin
      MOutput[X+k,Y+l]:=MInput[X+k,Y+l] + MInput2[k,l];
      if (MOutput[X+k,Y+l]>255) then MOutput[X+k,Y+l]:=255
      else if (MOutput[X+k,Y+l]<0) then MOutput[X+k,Y+l]:=0;
    end;
  end;
  end;
  Addtion2:=MOutput;
end;

Function Blending pada pengolahan citra digital


Function Blending(MInput,MInput2:Matriks; Value:integer):Matriks;
var
i,j,k,l : integer;
MOutput : Matriks;
begin
if (Length(MInput)>Length(MInput2)) then
begin
SetLength(MOutput,Length(MInput),Length(MInput[0]));
  for i:=0 to Length(MOutput)-1 do
  begin
    for j:=0 to Length(MOutput[0])-1 do
    begin
      MOutput[i,j]:= MInput[i,j];
    end;
    end;
      for k:=0 to Length(MInput2)-1 do
  begin
    for l:=0 to Length(MInput2)-1 do
    begin
      MOutput[k,l]:= (round(((100-Value)/100)*MInput[k,l])) + (round((Value/100)*MInput2[k,l]));
      if (MOutput[k,l]>255) then MOutput[k,l]:=255
      else if (MOutput[k,l]<0) then MOutput[k,l]:=0;
    end;
  end;
  end
  else if (Length(MInput)<Length(MInput2)) then
begin
SetLength(MOutput,Length(MInput2),Length(MInput2[0]));
   for i:=0 to Length(MOutput)-1 do
  begin
    for j:=0 to Length(MOutput[0])-1 do
    begin
    MOutput[i,j]:= MInput2[i,j];
    end;
    end;
      for k:=0 to Length(MInput)-1 do
  begin
    for l:=0 to Length(MInput)-1 do
    begin
      MOutput[k,l]:= (round(((100-Value)/100)*MInput2[k,l])) + (round((Value/100)*MInput[k,l]));
      if (MOutput[k,l]>255) then MOutput[k,l]:=255
      else if (MOutput[k,l]<0) then MOutput[k,l]:=0;
    end;
  end;
  end;
  Blending:=MOutput;
end;

Function Addtion pada pengolahan citra digital


Function Addtion(MInput,MInput2:Matriks):Matriks;
var
i,j,k,l : integer;
MOutput : Matriks;
begin
if (Length(MInput)>Length(MInput2)) then
begin
SetLength(MOutput,Length(MInput),Length(MInput[0]));
  for i:=0 to Length(MOutput)-1 do
  begin
    for j:=0 to Length(MOutput[0])-1 do
    begin
      MOutput[i,j]:= MInput[i,j];
    end;
    end;
      for k:=0 to Length(MInput2)-1 do
  begin
    for l:=0 to Length(MInput2)-1 do
    begin
      MOutput[k,l]:=MInput[k,l] + MInput2[k,l];
      if (MOutput[k,l]>255) then MOutput[k,l]:=255
      else if (MOutput[k,l]<0) then MOutput[k,l]:=0;
    end;
  end;
  end
  else if (Length(MInput)<Length(MInput2)) then
begin
SetLength(MOutput,Length(MInput2),Length(MInput2[0]));
   for i:=0 to Length(MOutput)-1 do
  begin
    for j:=0 to Length(MOutput[0])-1 do
    begin
    MOutput[i,j]:= MInput2[i,j];
    end;
    end;
      for k:=0 to Length(MInput)-1 do
  begin
    for l:=0 to Length(MInput)-1 do
    begin
      MOutput[k,l]:=MInput2[k,l] + MInput[k,l];
      if (MOutput[k,l]>255) then MOutput[k,l]:=255
      else if (MOutput[k,l]<0) then MOutput[k,l]:=0;
    end;
  end;
  end;
  Addtion:=MOutput;
end;

Function Brightness pada pengolahan citra digital


Function Brightness(MInput:Matriks; Value:integer):Matriks;
var
i,j : integer;
MOutput : Matriks;
begin
  SetLength(MOutput,Length(MInput),Length(MInput[0]));
  for i:=0 to Length(MOutput)-1 do
  begin
    for j:=0 to Length(MOutput[0])-1 do
    begin
      MOutput[i,j]:=MInput[i,j]+value;
      if (MOutput[i,j]>255) then MOutput[i,j]:=255;
      if (MOutput[i,j]<0) then MOutput[i,j]:=0;
    end;
  end;
  Brightness:=MOutput;
end;

Function Image Negative Pada pengolahan citra digital


function ImageNegative(MInput:Matriks):Matriks;
var
  i,j : integer;
  MOutput : Matriks;
begin
  SetLength(MOutput,Length(MInput),Length(MInput[0]));
  for i:=0 to Length(MOutput)-1 do
  begin
    for j:=0 to Length(MOutput[0])-1 do
    begin
      MOutput[i,j]:=255-MInput[i,j];
    end;
  end;
  ImageNegative:=MOutput;
end;

Function Change Pixel Value pada pengolahan citra digital


function ChangePixelValue(MInput:Matriks; X,Y,Value:integer):Matriks;
var
    i,j:integer;
    MOutput : Matriks;
begin
  SetLength(MOutput,Length(MInput),Length(MInput[0]));
  for i:=0 to Length(MOutput)-1 do
  begin
    for j:=0 to Length(MOutput[0])-1 do
    begin
    MOutput[i,j]:=MInput[i,j];
    end;
  end;
  MOutput[X,Y]:=Value;
  ChangePixelValue:=MOutput;
end;