Anda di halaman 1dari 6

[jans hendry & Salman Aliaji]

November 11, 2011

AUTOMATIC BARCODE IMAGE RECONSTRUCTION

Pada artikel sebelumnya kami membahas tentang segmentasi citra barcode menggunakan beberapa algoritma seperti profile projection dan lainnya. Pada artikel ini kita coba menggunakan algoritma lain untuk rekonstruksi citra barcode tipe EAN-13. Mengapa perlu direkonstruksi? Karena citra yang dimaksud merupakan citra hasil jepretan kamera. Hasil jepretan kamera ini bisa menghasilkan citra yang kabur (tidak fokus), derau (terdapat bagianbagian yang tidak dibutuhkan tertangkap oleh kamera), miring (karena peletakan objek tidak segaris dengan kamera) dan masih banyak kekurangan lainnya. Beruntung sekali bila sekali jepret kita bisa mendapatkan citra yang bagus. Lalu mengapa ini perlu dibahas? Anggap saja kita ingin memberikan alternatif deteksi barcode pada swalayan dan lain sebagainya dengan menggunakan kamera digital. Baik, untuk mempersingkat artikel ini kami hadirkan langkah-langkah berikut ini: Pastikan barcode terdiri atas bar hitam dan putih (ya jelas donkkkkk ) Barcode yang kita punya, tentu tidak dijamin memiliki kualitas yang bagus. Telah dikatakan di atas, banyak kemungkinan yang terjadi pada barcode kita. Untuk itu, kita perlu memikirkan solusi lain. Dalam hal ini, solusi yang kami tawarkan adalah segmentasi barcode secara line-per-line lalu melakukan analisa terhadap hasil segmentasi tersebut. Yang perlu diingat bahwa citra barcode ean-13 akan valid (dianggap benar sebagai barcode) apabila jumlah bar hitam dan putihnya sebanyak 59. Perinciannya adalah 30 bar hitam dan 29 bar putih. Bila line-per-line barcode tidak memenuhi kriteria di atas, maka kita lewatkan saja. Bukan berarti barcode tersebut secara total tidak valid, tapi hanya line atau baris itu saja yang kita anggap sampah dan kita bisa melanjutkan pada baris berikutnya. Untuk barcode, banyaknya piksel penyusun adalah 95. Walaupun ada derau pada citra barcode, tapi setidaknya ada minimal 1line barcode yang kita harapkan memiliki jumlah piksel 95. Dengan demikian, kita bisa melakukan rekonstruksi berdasarkan 1 piksel lain tersebut. Setelah bagian-bagian dari barcode terseleksi sesuai dengan persyaratan di atas, maka kita mencari nilai u dan v yang berarti: o U = bentuk barcode yang diwakili nilai biner 1-0-1-0 dand seterusnya hingga berjumlah 59 buah bar.

[{EE&IT of UGM, Indonesia} jans.hendry@gmail.com] & [{CS of UGM, Indonesia} haiii.ajik@gmail.com]

[jans hendry & Salman Aliaji]

November 11, 2011

V = jumlah masing-masing piksel yang menyusun masing-masing bar baik hitam atau putih.

Dengan menyusun ulang barcode berdasarkan nilai U dan V maka kita akan mendapatkan hasil rekonstruksi yang tepat.

Misalkan kita mempunyai citra hasil rekam kamera digital sebagai berikut: Gambar - Barcode Produk 1

Gambar - Barcode Produk 2

[{EE&IT of UGM, Indonesia} jans.hendry@gmail.com] & [{CS of UGM, Indonesia} haiii.ajik@gmail.com]

[jans hendry & Salman Aliaji]

November 11, 2011

Kedua gambar di atas merupakan hasil rekam dengan kamera digital pada dua produk yang berbeda. Lalu dengan menggunakan algoritma tersendiri, kita tentukan lokasi dari barcode lalu kita lakukan cropping. Sehingga didapatkan hasil sebagai berikut: Gambar - Barcode Hasil Crop Produk 1

Gambar - Barcode Hasil Crop Produk 2

Lalu setelah mendapatkan barcode hasil crop, kita lakukan pemrosesan untuk rekonstruksi yang hasilnya adalah sebagai berikut:

Gambar Hasil rekonstruksi barcode produk 1

[{EE&IT of UGM, Indonesia} jans.hendry@gmail.com] & [{CS of UGM, Indonesia} haiii.ajik@gmail.com]

[jans hendry & Salman Aliaji]

November 11, 2011

Gambar Hasil rekonstruksi barcode produk 2

Hasil konversi dari barcode ke desimal adalah

Gambar Hasil pembacaan barcode produk 1

Gambar Hasil pembacaan barcode produk 2

[{EE&IT of UGM, Indonesia} jans.hendry@gmail.com] & [{CS of UGM, Indonesia} haiii.ajik@gmail.com]

[jans hendry & Salman Aliaji]

November 11, 2011

Okay, sedikit penjelasan saja bahwa algoritma yang digunakan untuk mendeteksi lokasi barcode dan crop nya merupakan algoritma modifikasi dari kami sehingga belum bisa diberikan pada artikel ini. Lalu algoritma untuk klasifikasi yang kami gunakan adalah LVQ. Algoritma ini sudah saya jelaskan pada artikel lainnya tentang JST-LVQ, silakan dilihat pada account scribd saya. Lalu algoritma untuk rekonstruksi sendiri telah diberikan di atas penjelasan singkatnya. Programnya adalah sebagai berikut:

clear all; close all; clc; load data.mat imshow(finalimage); title('Barcode Asli'); g=1; for m=1:size(finalimage,1) I2=finalimage(m,:); I2=im2bw(I2,mean(I2(:))/255); % untuk segmentasi I2=~I2; Label=HitungLabel(I2); if Label>=30 % algoritma dimulai disini [uu,vv]=countUV(I2); BasisBar=mode(vv); vnorml=(vv/BasisBar); [bar, kol]=find(vnorml<.50); vnorml(bar,kol)=ceil(vnorml(bar,kol)); [bar1,kol1]=find(vnorml>=.50); vnorml(bar1,kol1)=round(vnorml(bar1,kol1)); [bar,kol]=find(vnorml==1); vnorml=vnorml(:,min(kol):max(kol)); if length(vnorml)==59 % mencari line dengan jumlah bar = 59 vnn(g,:)=vnorml; uu=uu(:,min(kol):max(kol)); g=g+1; end end end [bar,kol]=find(sum(vnn')==95); % mencari line dengan banyak piksel = 95 vnorml2=zeros(size(vnn,1),size(vnn,2)); vakhir=vnn(kol(1),:);

[{EE&IT of UGM, Indonesia} jans.hendry@gmail.com] & [{CS of UGM, Indonesia} haiii.ajik@gmail.com]

[jans hendry & Salman Aliaji]

November 11, 2011

vnorml2=[]; for h=1:size(vnn,2) vnorml2=[vnorml2 uu(h)*ones(1,vakhir(h))]; end vnorml3=~vnorml2; vnorml3=imresize(vnorml3,[640 480]); figure, imshow(vnorml3); title('Hasil Akhir Barcode');

Demikianlah artikel singkat ini dibuat agar bisa memberikan gambaran singkat mengenai solusi untuk melakukan rekonstruksi terhadap citra barcode yang diambil menggunakan kamera digital. Besar harapan kami, agar artikel ini bisa digunakan semestinya dan tetap mencatumkan namanama penulis sebagai bentuk penghargaan terhadap originalitas. @thanks

Salman ali aji jans hendry

[{EE&IT of UGM, Indonesia} jans.hendry@gmail.com] & [{CS of UGM, Indonesia} haiii.ajik@gmail.com]