Official StoreTekan tombol di atas untuk membeli semua alat dan bahan eksperimen di web ini

Beberapa Teknik Image Processing Sederhana dalam Delphi

Kebetulan ada project yang berhubungan dengan image processing, jadi saya tulis artikel ini supaya saya sendiri tidak lupa :). Image processing adalah suatu proses mengubah sebuah gambar (image) dari bentuk aslinya ke bentuk lain sesuai dengan tujuan program. Yang perlu Anda perhatikan adalah tipe file gambar yang akan diproses sebaiknya berupa file BMP (bitmap) daripada JPG/JPEG atau GIF karena lebih mudah dioperasikan bit demi bit (pixel) penyusun gambar/image tersebut.

Berikut ini adalah beberapa fungsi/prosedur teknik image processing yang saya temukan di internet. Function/Procedure tersebut sudah saya coba di Delphi 7 dan Delphi XE2 tanpa ada masalah, jadi bisa langsung Anda salin dan gunakan di program Anda

1. Function BitmapToGrayscale (fungsi untuk mengubah warna RGB (Red Green Blue) menjadi BW (Black and White) dan gradasinya)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function BitmapToGrayscale(const Bitmap: TBitmap): TBitmap;
var
  a,b: Integer;
  Gray, Red, Green, Blue: Byte;
  PixelColor: Longint;
begin
  with Bitmap do
    for a := 0 to Width - 1 do
      for b := 0 to Height - 1 do
      begin
        PixelColor := ColorToRGB(Canvas.Pixels[a,b]);
        Red        := PixelColor;
        Green      := PixelColor shr 8;
        Blue       := PixelColor shr 16;
        Gray  := Round(0.3 * Red + 0.6 * Green + 0.1 * Blue);
        Canvas.Pixels[a,b] := RGB(Gray, Gray, Gray);
      end;
  Result := Bitmap;
end;

contoh pemakaian fungsi di atas :

1
2
3
4
procedure TForm1.Button1Click(Sender: TObject);
begin
  Image1.Picture.bitmap:=ConvertBitmapToGrayscale1(Image1.Picture.Bitmap);
end;

2. Function invert warna (mengubah kebalikan/inversi dari warna)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function InvertBitmap (ABitmap: TBitmap): TBitmap;
var x, y: Integer;
    ByteArray: PByteArray;
begin
 ABitmap.PixelFormat := pf24Bit;
 for y := 0 to ABitmap.Height - 1 do
 begin
  ByteArray := ABitmap.ScanLine[y];
  for x := 0 to ABitmap.Width * 3 - 1 do
  begin
   ByteArray[x] := 255 - ByteArray[x];
  end;
 end;
Result := ABitmap;
end;

Contoh pemakaian function di atas :

1
2
3
4
5
6
procedure TForm1.Button2Click(Sender: TObject);
begin
 Image1.Picture.bitmap:=InvertBitmap(Image1.Picture.Bitmap);
end;
 
<span style="text-align: justify; font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;">3. <strong>Procedure Threshold</strong>. Prosedur ini digunakan untuk mengubah image menjadi warna hitam dan putih saja. Prosedur ini berbeda dengan function ‘BitmapToGrayscale’ di atas. Jika prosedur ‘threshold’ ini benar-benar mengubah warna RGB menjadi BW (Black White/hitam putih) sedangkan function ‘BitmapToGrayscale’ mengubah warna hitam dan putih namun masih menggambarkan nilai gradasinya (abu-abu). Kuncinya pada prosedur ‘threshold’ ada parameter ‘level’ yang akan mengubah warna piksel langsung diubah ke warna hitam atau putih jika di atas/di bawah nilai level tersebut.</span>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Procedure Threshold ( Level : Integer );
var
w, h, vRgbTemp : integer ;
warna : LongInt ;
R, G, B : byte ;
begin
with form1.image1.Picture.Bitmap do
begin
 for w:=0 to Width-1 do
 begin
  for h:=0 to Height-1 do
  Begin
   warna:=ColorToRgb(canvas.Pixels[w,h]);
   R:=GetRValue(warna);
   G:=GetGValue(warna);
   B:=GetBValue(warna);
   if ((r+g+b) div 3)<=level then vRgbtemp:=0 else vRgbtemp:=255 ;
   canvas.Pixels[w, h]:=Rgb(vRgbTemp, vRgbTemp, vRgbTemp);
  end;
 end;
end;
end;

Contoh pemakaian prosedur di atas :

1
2
3
4
procedure TForm1.Button3Click(Sender: TObject);
begin
 threshold(120);
end;

4. Procedure SaveToFile.

Prosedur ini untuk mudahnya mengambil salah satu method dalam komponen ‘TImage’ yakni image1.Picture.SaveToFile.

Contoh pemakaian :

1
2
3
4
procedure TForm1.Button4Click(Sender: TObject);
begin
 image1.Picture.SaveToFile('c:/contoh1.bmp');
end;

Dengan mengklik tombol di atas maka image yang ada di komponen ‘Image1’ akan disimpan di drive C:/ dengan nama ‘contoh1.bmp’. Anda dapat mengombinasikan dengan komponen TSavePictureDialog untuk menyimpan file image secara dinamis.

Demikian artikel tutorial Delphi khususnya tentang Image processing, semoga bermanfaat untuk Anda. Function/Procedure ini saya sarikan dari berbagai sumber di internet dan dapat langsung dipakai sehingga Anda tidak perlu menyusun program dari awal lagi. Ini akan sangat membantu jika jadwal project sangat ketat, misalnya dalam 2 minggu project harus jadi (You know what I meant –lah he he he).

Nikmati artikel dan tutorial teknologi berkualitas hanya di saptaji.com. Artikel sebelumnya tentang review ip camera dapat Anda baca di  http://saptaji.com/2014/06/21/review-ip-camera-p2p-sun-bio/

Incoming search terms:

penjelasan tentang bmp dari delphi, image processing delphi, delphi image processing, 12 kamera di delphi, Membuat program image processing dengan delphi, membaca gambar du delphi, program Thresholding dengan delphi, mengambil nilai rgb grayscale delphi 7, canvas pixel pada delphi, tutorian thresholding delphi 7
0 0 vote
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x