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)
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 :
procedure TForm1.Button1Click(Sender: TObject);
begin
Image1.Picture.bitmap:=ConvertBitmapToGrayscale1(Image1.Picture.Bitmap);
end;
2. Function invert warna (mengubah kebalikan/inversi dari warna)
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 :
procedure TForm1.Button2Click(Sender: TObject);
begin
Image1.Picture.bitmap:=InvertBitmap(Image1.Picture.Bitmap);
end;
3. Procedure Threshold. 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.
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 :
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 :
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 https://saptaji.com/2014/06/21/review-ip-camera-p2p-sun-bio/
a Technopreneur – writer – Enthusiastic about learning AI, IoT, Robotics, Raspberry Pi, Arduino, ESP8266, Delphi, Python, Javascript, PHP, etc. Founder of startup Indomaker.com