Tentang framework a forge.net
Click here to load reader
-
Upload
wwwsoftscientswebid -
Category
Education
-
view
698 -
download
0
description
Transcript of 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)
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 );
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)
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));
//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;
//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