Tentang framework a forge.net

6

Click here to load reader

description

framework Aforge.net

Transcript of Tentang framework a forge.net

Page 1: Tentang framework a forge.net

Framework AForge.Net

Oleh: [email protected] http://softscients.blogspot.com Jika anda menggunakan tools C# (languange) sebagai olah citra dan Framework AForge.Net dan Accord.Net sangat bekerja dengan cepat sekali untuk melakukan komputasi.

Why! Setelah melakukan explore (hanya karena) ingin mengetahui nilai pixel dari suatu citra, mereka (framework AForge.Net dan Accord.Net) tidak satupun menyediakan class untuk itu. Hampir semua operasi olah citra menggunakan argument class Image. Misalkan filter (menggunakan convolution)

AForge.Imaging.Filters.Dilatation dilation=new AForge.Imaging.Filters.Dilatation(); dilation.Apply(image)

Page 2: Tentang framework a forge.net

atau menggunakan cara berikut // define emboss kernel int[,] kernel = { { -2, -1, 0 }, { -1, 1, 1 }, { 0, 1, 2 } }; // create filter AForge.Imaging.Filters.Convolution filter = new AForge.Imaging.Filters.Convolution( kernel );

Page 3: Tentang framework a forge.net

Dikarenakan semua menggunakan Class Image sebagai inputannya bukan matrix atau array sangat menyulitkan bagi pemula yang ingin bereksperimen (daripada menggunakan Matlab). Hampir semua proses read and writel pixel didalam method tersebut dan langsung mengembalikan Image sebagai output argument nya. Matlab menggunakan berbagai class untuk mempresentasikan data image yaitu Logical = 1 dan 0 Uint8 = 1 sampai 255

Double = 0 sampai 1 Sedangkan JImage Format.Logical = 1 dan 0 Format.Uint8 = 1 sampai 255 Format.Float = 0 sampai 1

Hal diatas akan menjadi ambigu, misalkan pada komputasi untuk filter dilation (penulis ingin melakukan penebalan - mode biner) maka output dari dilation.Apply(image) adalah image maka yang akan tampil bukan 0 (hitam) dan 1 (putih) tapi 255 (putih) ini sangat benar sekali dikarenakan logical hanya untuk proses morphologi saja bukan untuk format file image (disimpan / disajikan ke standar monitor), maka bila pada mode logical nilai 1 (putih) akan langsung dikonvert ke 255. Yah bagi orang yang paham akan mudah sekali, tapi bagi orang awam akan menjadi membingungkan (mungkin yang diharapkan adalah bilangan logical)

Page 4: Tentang framework a forge.net

Seringkali kita dihadapkan kasus untuk melakukan komputasi convolution yang menggunakan berbagai filter (komputasi morpologi dilation + blob to count of items )sebelum hasil akhir nya ditampilkan sebagai Image. Jika anda ingin dalam format array2D (matrix), maka anda harus siap-siap lihat source code nya kalau tidak ingin melakukan dalam format class Image.

//init file Bitmap bitmap=new Bitmap("D:/New Picture (1).bmp"); //init blob AForge.Imaging.BlobCounter blobs=new AForge.Imaging.BlobCounter(bitmap); //show after new Ext.Utility.ShowImage().InitShow(new MyDataBitmap("original jumlah objek before dilation "+blobs.ObjectsCount.ToString(),bitmap,2000));

Page 5: Tentang framework a forge.net

//init dilate AForge.Imaging.Filters.Dilatation dilation=new AForge.Imaging.Filters.Dilatation(); Bitmap postDilation=dilation.Apply(bitmap); //init blob blobs=new AForge.Imaging.BlobCounter(postDilation); //show new Ext.Utility.ShowImage().InitShow(new MyDataBitmap("jumlah objek after dilation "+blobs.ObjectsCount.ToString(),postDilation,3000));

Class new Ext.Utility.ShowImage().InitShow() merupakan class yang dibuat oleh penulis untuk menampilkan mulitple Windows Form pada modus console (mirip dengan imshow pada matlab).

Histogram Class Histogram (ambigu) hanya menyediakan komputasi statistik biasa seperti std,mean,max,min,total tidak menyediakan histogram (nilai sebaran).

Form diatas (dibuat oleh penulis menggunakan ZedGraph)

Kesimpulan Seperti yang sudah dipaparkan sebelumnya bahwa,

a. kebanyakan class seringkali menggunakan class Image sebagai argument input bukan matrix. Framework langsung melakukan “bedah” pixel dari Image langsung didalam method tersebut serta menghasilkan output berupa class Image

b. belum adanya class yang menyediakan read dan write value pixel, sehingga semua menggunakan class Image. Anda harus membuat class tersendiri bila menginginkannya

Bitmap bitmap=new Bitmap("D:/hasil.bmp"); Ext.ReadImage readImage=new ReadImage(bitmap);

byte[,]r=readImage.Red; byte[,]g=readImage.Green; byte[,]b=readImage.Blue;

Page 6: Tentang framework a forge.net

//create truecolor

byte[,]red=new byte[255,255]; byte[,]green=new byte[255,255]; byte[,]blue=new byte[255,255];

for(int i=0;i<red.GetLength(0);i++) { for(int j=0;j<red.GetLength(1);j++) {

red[i,j]=(byte)j; if(i>100) green[i,j]=(byte)j; //red[i,j]=(byte)j;

} } Ext.CreateImage create=new Ext.CreateImage(red,green,blue);

Bitmap bitmap=create.Btmp; new Ext.Utility.ShowImage().InitShow(new MyDataBitmap("true color ",bitmap,2000));

//create gray color byte[,]gray=new byte[256,256]; for(int i=0;i<gray.GetLength(0);i++)

{ for(int j=0;j<gray.GetLength(1);j++) { gray[i,j]=(byte)i;

} } Ext.CreateImage create=new Ext.CreateImage(gray); Bitmap bitmap=create.Btmp;

new Ext.Utility.ShowImage().InitShow(new MyDataBitmap("gray ",bitmap,2000));

Note: Package Ext. merupakan class yang dibuat oleh penulis untuk memudahkan dalam olah citra di C# dalam modus console application