modul-1 pengolahan citra rtf

Download MODUL-1 Pengolahan Citra RTF

If you can't read please download the document

Upload: neo-namikaze

Post on 21-Dec-2015

20 views

Category:

Documents


1 download

DESCRIPTION

Modul pengolahan

TRANSCRIPT

MODUL I

PengolahanCitra20 September 2010, Universitas KuninganHalaman 2 dari 6DAFTAR ISIModulHalaman1. Operasi Pengambangan Tunggal 22. Operasi Pengambangan Ganda 63. Pencerminan Vertikal, Horisontal & Gabungan 104. Cropping 145. Operasi penambahan Derau 196. Citra Deteksi Gerak 237. Ekualisasi 258. Ekualisasi Histogram Merata 299. Operasi Embos 3310. Gausian 36

Daftar Pustaka 39

MODUL IOPERASI PENGAMBANGAN TUNGGAL

Tujuan Praktikum :

1.Mengetahui proses pengolahan citra pengambangan tunggal

2.Memahami penerapan proses pengolahan citra pengambangan tunggal dgn Delphi

Properties dan Events untuk pengaturan komponenTampilan desain TImage dengan name (deklarasi) Image1Komponen TImage pd kelompok AdditionalCode Program Utama dan Unit

Komponen EditGbr-1.1. Tampilan dialog Delphi ver.7Komponen SpeedButton dan yang samping komponen BitBtn.

Praktikum :

Program Utamaprogram Ambang;uses Forms, UnitUtama in 'UnitUtama.pas' {FormUtama}, UnitCitra in 'UnitCitra.pas' {FormCitra}, UnitHist in 'UnitHist.pas' {FormHist};{$R *.res}begin Application.Initialize; Application.CreateForm(TFormUtama, FormUtama); Application.Run;end.

Unit Programunit UnitCitra; {==================== Unit Program =================}interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, Menus, ExtDlgs;type TFormCitra = class(TForm) Image: TImage; SavePictureDialog: TSavePictureDialog; PopupMenu: TPopupMenu; MenuSimpan: TMenuItem; procedure MenuSimpanClick(Sender: TObject); private public end;var FormCitra: TFormCitra;implementation{$R *.dfm}procedure TFormCitra.MenuSimpanClick(Sender: TObject);begin if (SavePictureDialog.Execute) then Image.Picture.SaveToFile(SavePictureDialog.FileName);end;end.

unit UnitHist; {==================== Unit Program =================}interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;type TFormHist = class(TForm) procedure MenghitungHistogram(max: integer); procedure FormPaint(Sender: TObject); procedure FormActivate(Sender: TObject); private { Private declarations } public { Public declarations } Picture: TPicture; c, cR, cG, cB: array [0..255] of integer; cMax: integer; end;var FormHist: TFormHist;implementation{$R *.dfm}procedure TFormHist.MenghitungHistogram(max: integer);var i, j: integer; PC: PByteArray;begin if (Picture = nil) then exit; if (Picture.Bitmap.PixelFormat = pf8bit) then begin for i := 0 to 255 do c[i] := 0; for i:= 0 to Picture.Height-1 do begin PC := Picture.Bitmap.ScanLine[i]; for j:= 0 to Picture.Width-1 do Inc(c[PC[j]]); end; if (max 0) then cMax := max else begin cMax := 0; for i := 0 to 255 do if (c[i] > cMax) then cMax := c[i]; end; end; if (Picture.Bitmap.PixelFormat = pf24bit) then begin for i := 0 to 255 do begin cR[i] := 0; cG[i] := 0; cB[i] := 0; end; for i:= 0 to Picture.Height-1 do begin PC := Picture.Bitmap.ScanLine[i]; for j:= 0 to Picture.Width-1 do begin Inc(cB[PC[3*j]]); Inc(cG[PC[3*j+1]]); Inc(cR[PC[3*j+2]]); end; end; if (max 0) then cMax := max else begin cMax := 0; for i := 0 to 255 do begin if (cR[i] > cMax) then cMax := cR[i]; if (cG[i] > cMax) then cMax := cG[i]; if (cB[i] > cMax) then cMax := cB[i]; end; end; end;end;

procedure TFormHist.FormPaint(Sender: TObject);var i, w, h: integer;begin if (Picture = nil) then exit; w := ClientWidth-10; h := ClientHeight-10; Canvas.Pen.Color := clBlack; Canvas.Brush.Color := clWhite; Canvas.Rectangle(0, 0, w+10, h+10); Canvas.Pen.Color := clSkyBlue; Canvas.MoveTo(10, h); Canvas.LineTo(10, 10); Canvas.MoveTo(10, h); Canvas.LineTo(w, h); if (Picture.Bitmap.PixelFormat = pf8bit) then begin Canvas.Pen.Color := clBlack; for i := 0 to 254 do begin Canvas.MoveTo(10+i, h-Round(c[i]/cMax*150)); Canvas.LineTo(11+i, h-Round(c[i+1]/cMax*150)); end; end; if (Picture.Bitmap.PixelFormat = pf24bit) then begin for i := 0 to 254 do begin Canvas.Pen.Color := clRed; Canvas.MoveTo(10+i, h-Round(cR[i]/cMax*150)); Canvas.LineTo(11+i, h-Round(cR[i+1]/cMax*150)); Canvas.Pen.Color := clGreen; Canvas.MoveTo(10+i, h-Round(cG[i]/cMax*150)); Canvas.LineTo(11+i, h-Round(cG[i+1]/cMax*150)); Canvas.Pen.Color := clBlue; Canvas.MoveTo(10+i, h-Round(cB[i]/cMax*150)); Canvas.LineTo(11+i, h-Round(cB[i+1]/cMax*150)); end; end;end;

procedure TFormHist.FormActivate(Sender: TObject);begin Repaint;end;end.unit UnitUtama; {==================== Unit Program =================}interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtDlgs, Menus, StdCtrls, ComCtrls, Clipbrd, ExtCtrls, Spin;type TFormUtama = class(TForm) PanelAtas: TPanel; ButtonAmbilCitra: TButton; StatusBar: TStatusBar; OpenPictureDialog: TOpenPictureDialog; ScrollBarAmbang: TScrollBar; Label1: TLabel; EditAmbang: TEdit; procedure ButtonAmbilCitraClick(Sender: TObject); procedure Olah; procedure ScrollBarAmbangChange(Sender: TObject); private { Private declarations } public { Public declarations } end;var FormUtama: TFormUtama;implementationuses UnitCitra, UnitHist;var FormHasil: TFormCitra; FormHistHasil: TFormHist;{$R *.dfm}procedure TFormUtama.ButtonAmbilCitraClick(Sender: TObject);var fc: string;begin if (OpenPictureDialog.Execute) then begin if (FormCitra = nil) then Application.CreateForm(TFormCitra, FormCitra); FormCitra.Image.Picture.LoadFromFile( OpenPictureDialog.FileName); FormCitra.ClientHeight := FormCitra.Image.Picture.Height; FormCitra.ClientWidth := FormCitra.Image.Picture.Width; FormCitra.ClientHeight := FormCitra.Image.Picture.Height; case (FormCitra.Image.Picture.Bitmap.PixelFormat) of pf1bit : fc := 'biner'; pf8bit : fc := 'keabuan'; pf24bit : fc := 'true color'; end; StatusBar.SimpleText := OpenPictureDialog.FileName + ' (' + IntToStr(FormCitra.Image.Picture.Width) + 'x' + IntToStr(FormCitra.Image.Picture.Height) + ', ' + fc + ')'; if (FormHist = nil) then Application.CreateForm(TFormHist, FormHist); FormHist.Top := FormCitra.Top; FormHist.Left := FormCitra.Left+FormCitra.Width; FormHist.Picture := FormCitra.Image.Picture; FormHist.MenghitungHistogram(0); FormHist.Repaint; FormCitra.SetFocus; if (FormHasil = nil) then Application.CreateForm(TFormCitra, FormHasil); if (FormHistHasil = nil) then Application.CreateForm(TFormHist, FormHistHasil); FormHasil.Caption := 'Citra Hasil'; FormHistHasil.Caption := 'Histogram Citra Hasil'; FormHasil.Image.Picture := FormCitra.Image.Picture; FormHasil.ClientHeight := FormHasil.Image.Picture.Height; FormHasil.ClientWidth := FormHasil.Image.Picture.Width; FormHasil.ClientHeight := FormHasil.Image.Picture.Height; FormHasil.Top := FormCitra.Top+FormCitra.Height; FormHasil.Left := FormCitra.Left; FormHistHasil.Top := FormHasil.Top; FormHistHasil.Left := FormHasil.Left+FormHasil.Width; FormHistHasil.Picture := FormHasil.Image.Picture; FormHistHasil.MenghitungHistogram(0); FormHistHasil.Repaint; end;end;procedure TFormUtama.Olah;var i, j, Ambang, gray: integer; PC, PH: PByteArray;begin Ambang := ScrollBarAmbang.Position; if (FormCitra.Image.Picture.Bitmap.PixelFormat = pf8bit) then for i:= 0 to FormCitra.Image.Picture.Height-1 do begin PC := FormCitra.Image.Picture.Bitmap.ScanLine[i]; PH := FormHasil.Image.Picture.Bitmap.ScanLine[i]; for j:= 0 to FormCitra.Image.Picture.Width-1 do begin if (PC[j] < Ambang) then PH[j] := 0 else PH[j] := 255; end; end; if (FormCitra.Image.Picture.Bitmap.PixelFormat = pf24bit) then for i:= 0 to FormCitra.Image.Picture.Height-1 do begin PC := FormCitra.Image.Picture.Bitmap.ScanLine[i]; PH := FormHasil.Image.Picture.Bitmap.ScanLine[i]; for j:= 0 to FormCitra.Image.Picture.Width-1 do begin gray := Round((PC[3*j]+PC[3*j+1]+PC[3*j+2])/3); if (gray < Ambang) then begin PH[3*j] := 0; PH[3*j+1] := 0; PH[3*j+2] := 0; end else begin PH[3*j] := 255; PH[3*j+1] := 255; PH[3*j+2] := 255; end end; end; FormHist.Repaint; FormHist.Canvas.Pen.Color := clPurple; FormHist.Canvas.MoveTo(10+Ambang, 10); FormHist.Canvas.LineTo(10+Ambang,FormHist.ClientHeight-10);end;procedure TFormUtama.ScrollBarAmbangChange(Sender: TObject);begin EditAmbang.Text := IntToStr(ScrollBarAmbang.Position); if (FormCitra = nil) then begin ShowMessage('Belum ada citra yang akan diolah'); exit; end; Olah; FormHasil.Repaint; FormHistHasil.MenghitungHistogram(0); FormHistHasil.Repaint;end;end.

DAFTAR PUSTAKA

Gonzales, Rafael C. & Richard E. Wood & steven L. Eddins 2004. Digital Image Processing. Prentice-HallGonzales, Rafael C., dan Wintz, Paul, 1987, Digital Image Processing, Addison WesleyMunir, Rinaldi, 2004, Pengolahan Citra Digital dgn Pendekatan Algiritmik, Informatika BandungNugroho, Edhi. Teori dan Praktek, Grafika Komputer dengan Delphi; 2005.Kadir, Abdul; Pemrograman Delphi.; 2004Purcell, Edwin J, dan Varberg, Dale, 1987, Kalkulus & Geometri Analitis; Erlangga .