Tutorial Image Delphi Processing

assalamu’alaikum

Ni baru belajar dari dosen ane di kuliah, baru tahu, ada cara canvas processing yang cuepet buangeds. di luar perkiraan, dengan cara biasa yang memakan waktu sekitar 10-20 detik, tapi dengan cara ini bisa dilakukan tidak lebih dari 2 detik.
Kronologis, ketika skripsi, ane menggunakn metode mean shift algorithm untuk melakukan segmentasi spasial citra,  di jurnal yang ane baca, ada tulisan bahwa Algoritma ini memakan cost yang cukup besar, apalagi bahasa pemrograman yang ane gunakan adalah bahasa pemrograman Delphi, yang emang agak lemot darisononya :D. Jadinya ane kira wajar2 aja kalo program bakalan lemot abisssss.  Waktu konsultasi, barulah tahu, kalo cara ane yang salah :malu:. Harusnya operasi canvas, dilakukan dengan menggunakan array. Berikut ane tuliskan kesalahan penulisannya, sapa tahu bisa bermanfaat.

Misal algoritma berikut digunakan untuk mengkopi citra jpg 2560×1600, dari image 1, ke image 2

var
i,j:integer;
imgBuff:TBitmap; //variabel ini digunakan untuk convert jpg ke bitmap
begin

imgBuff:=TBitmap.Create;;
imgBuff.Assign(image1.Picture.Graphic); // convert dari jpg ke bitmap

image2.Picture.Bitmap:=TBitmap.Create;
image2.Picture.Bitmap.PixelFormat:=pf24bit;
image2.Picture.Bitmap.Width:=imgBuff.Width;
image2.Picture.Bitmap.Height:=imgBuff.Height;

For i:=0 to imgBuff.width-1 do
For j:=0 to imgBuff.Height-1 do
image2.canvas.pixels[i,j]:=imgBuff.Canvas.pixels[i,j];
end;

dengan cara reguler seperti di atas, niscaya untuk laptop c2d t6600, ram 2 giga akan membutuhkan waktu +- 21 detik hanya untuk mengkopi canvas dari image1 ke image2.

Langkah yang benar, ane tuliskan sebagai berikut :

1. buat definisi untuk array Rgp Triple

 type
 TarrayRGBTriple = array [word] of TRGBTriple;
 ParrayRGBTriple = ^TarrayRGBTriple;

var
 row1,row2 : ParrayRGBTriple;

2. Pada procedure untuk pengolahan citra, lakukan langkah berikut :


var
i,j:integer;
r,g,b : byte;
imgBuff:TBITMAP;
begin

timeCOunterB:=now();
imgBuff:=TBitmap.Create;;
imgBuff.Assign(image1.Picture.Graphic);

image3.Picture.Bitmap:=TBitmap.Create;
image3.Picture.Bitmap.PixelFormat:=pf24bit;
image3.Picture.Bitmap.Width:=imgBuff.Width;
image3.Picture.Bitmap.Height:=imgBuff.Height;

for i:=0 to imgBuff.Height-1 do
begin
row1:=imgBuff.ScanLine[i];
row2:=image3.Picture.Bitmap.ScanLine[i];
for j:=0 to imgBuff.Width-1 do
begin
r:=row1[j].rgbtRed;
g:=row1[j].rgbtGreen;
b:=row1[j].rgbtBlue;
row2[j].rgbtRed:=r;
row2[j].rgbtGreen:=g;
row2[j].rgbtBlue:=b;
end;
end;

Hasilnya

ss_delphi_tutor

Silakan dicoba,

kalo pengen tahu sourcode dan  programnya, donlod link ini,

klao link dah expired, atau mau diskusi tentang pengolahan citra dengan delphi silakan request via email ane :D,

Wassalamu’alaikum

tulisan ini diupdate untuk reupload source code tanggal 12 jan 2013, jadi komputer yang digunakan sudah berbeda, karena itu saya gunakan file jpg ukuran besar untuk melihat perbedaan kedua cara pengolahan.

Advertisements

9 thoughts on “Tutorial Image Delphi Processing

    1. iya, link nya expired, media fire habis menghapus semua file2 saya. sayangnya saya ga ada backup. :(. mau coding ulang sebenernya cepet, tapi belum install delphi. mohon kirim email lagi kamis besok. insya Allah saya usahakan.

    1. mhn maaf, saya belum belajar p-tile, yang saya jelaskan di blog ini adalah bagaimana kita mengakses array image, dari array tersebut anda bisa mengaplikasikan bermacam algoritma.
      semoga sukses

  1. Kalau cara segmentasi citra biner gimana gan (untuk pengenalan pola huruf) ?
    maksudnya setiap citra yang berukurannya terserah artinya (panjang x lebar) tdk dominan selalu dapat di pecah menjadi 100 segmen yang nantinya dapat di rubah menjadi bit2 0 dan 1..

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s