Sabtu, 14 Maret 2015

text recognition dengan teknik principal component analyst



Setelah sukses handwritingrecognition dengan teknik zoning, penulis juga berkeinginan untuk melakukan penerapan pada kasus lainnya yaitu untuk karakter huruf. Batasan masalahnya pada huruf besar (uppercase) saja. Algoritma didesain hanya untuk tahap recognition sehingga citra huruf sudah tersaji dengan baik alias tidak menggunakan tahap detection. Algoritma ini didesain untuk robust terhadap berbagai jenis font type dan size.


Lagi-lagi penulis menggunakan bahasa functional yaitu matlab dan python.
Python digunakan untuk membuat database ribuan citra huruf dari berbagai ratusan jenis font type, sedangkan matlab digunakan sebagai core languange nya (rencana mau diporting ulang ke python). Sebagai core engine nya menggunakan teknik PCA, penulis membutuhkan waktu sekitar 20 menit untuk membuat data pelatihan nya mengingat menggunakan ribuan data sehingga waktu komputasi menjadi bengkak!

Pengujian

Sebagai uji coba, penulis membuat sebuah tulisan yang terdiri 
  1. dari jenis font type dan 
  2. ukuran nya! 
Kamu bisa lihat! Ternyata cukup robust bukan!



Kamu pun bisa menggunakan algoritma yang penulis gunakan untuk riset selanjut nya yaitu plate recognition!
Krena lebih mudah! Yaitu hanya terdiri dari karakter angka dan uppercase!

Akan tetapi kamu juga jangan lupa untuk menerapkan algoritma detection nya!

Terkadang bagi pemula untuk istilah detection dan recognition dicampuradukan!
Padahal hal tersebut berbeda jauh!
Output dari detection berupa ADA - TIDAK
Sedangkan recognition berupa OBJEK INI ADALAH HURUF A atau B

Jadi hati2 saja bagi kamu untuk nulis judul paper dan algoritma yang digunakan! Jangan terbalik ya!



Download

https://www.dropbox.com/s/x4pqcftdzfxxjb7/demo%20pengenalan%20huruf%20dengan%20pca-20%20april%202015.rar?dl=0
Ukuran file nya agak besar! sekitar 42 MB!
dikarenakan penulis menggunakan 148 karakter font yang berbeda * 26 huruf
Setelah kamu download, jalankan saja code program.m
disitu kamu bisa melihat cara kerja nya secara singkat



clc;clear all;close all;
warning off;
%oleh mulkan.ms@gmail.com
%www.softscients.web.id
addpath('daftar_pustaka');
[folder] = callfiles();
if isempty(folder)==1
    return; %%tidak lakukan apapun
end
data = load('daftar_data\pca.mat'); 
rerata = data.pca.rerata;
projected_images = data.pca.projected_images;
eigen_face_transpose = data.pca.eigen_face_transpose;
huruf = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'];
DATA = load('daftar_data/data_resume.mat');
I = imread(folder);
if ndims(I)==3
    gray = rgb2gray(I);
else
    gray = I;
end

bw = ~im2bw(gray);
bw = bwareaopen(bw,100);
H = regionprops(bw,'Image','Centroid'); %%operasi blob

figure,
subplot(2,1,1),imshow(I),title('Optical Character Recognition dengan PCA');
subplot(2,1,2),imshow(I*0)
hold on
posisixy = [];
for i = 1 : size(H,1)    
    gambar  = H(i).Image;    
    bw = im2bw(gambar); 
    bw = cropingcitra(bw);
    bw = imresize(bw,[40,30]);
    hasil_ekstraksi = matrix2vector(bw);
    T = hasil_ekstraksi';
    [value,index]= recognitionpca(T,rerata,projected_images,eigen_face_transpose);  
    [x,y,z] = fileparts(DATA.resume_data_vektor.nama_file{index});    
    text(H(i).Centroid(1),H(i).Centroid(2),[ huruf(str2num(y(1:2)))],'FontSize',15,'Color','r')     
    
end       
 
Posting Komentar