menggunakan transformasi hough untuk memperbaiki kemiringan pada citra ocr (scan)
TRANSCRIPT
5/10/2018 Menggunakan Transformasi HOUGH Untuk Memperbaiki Kemiringan Pada Citra OCR ...
http://slidepdf.com/reader/full/menggunakan-transformasi-hough-untuk-memperbaiki-kemiringan-pad
[JANS HENDRY / EE&IT UGM, INDONESIA] October 5, 2011
[email : [email protected]] Page 1
OCR DOCUMENT DE-SKEW USING HOUGH TRANSFORM
Awalnya transformasi Hough merupakan teknik yang digunakan untuk mendeteksi kurva yangterdapat dalam citra digital. Kurva ini bisa berbentuk garis lurus, lingkaran dan lainnya. Dalam
mendeteksi garis lurus yang terdapat pada citra digital, sebenarnya bisa digunakan persamaan garis
lurus yang sudah lama kita kenal yakni y=mx+c. Bisa anda cermati bahwa komponen terpenting
dalam persamaan ini adalah keberadaan gradient atau tingkat kemiringan dari garis tersebut. Semakin
besar tingkat kecuraman dari garis maka semakin besar nilai m atau gradient garisnya. Hal ini
mengakibatkan sulitnya ketika kita berhadapan dengan tugas untuk mendeteksi garis tegak lurus
dimana m atau gradientnya memiliki nilai yang sangat besar atau bisa dibilang tak berhingga. Untuk
itu ada sebuah solusi yang dihadirkan yakni dengan mengubah bidang x-y menjadi bidang polar.
Teknik ini dikenal sebagai transformasi Hough. Dengan demikian teknik ini menjadi handal untuk
mendeteksi garis dengan tingkat kemiringan dengan nilai sembarang.
Kemampuan transformasi ini menjadi sangat berguna untuk permasalahan lain. Kasus yang akan
dibahas pada artikel ini merupakan salah satu contoh yang menggunakan transformasi jenis ini.
Dengan menganggap bahwa tiap koordinat pada dokumen OCR dapat dibentuk garis lurus, maka
transformasi Hough menjadi sebuah solusi yang bisa diandalkan. Permasalahan ini kita sebuah
sebagai deteksi dan koreksi kemiringan dokumen OCR. Koreksi bisa dilakukan untuk sebuah
dokumen secara kesulurahan atau bisa juga per-karakter. Dalam hal ini kita akan membahas terlebih
dahulu bagaiman deteksi dan koreksi dapat dilakukan secara kesulurahan pada sebuah teks.
Karakteristik dari algoritma Hough
- Transformasi Hough ditentukan oleh voting. Pemenang merupakan nilai yang memiliki
jumlah vote paling besar.
- Komputasi dengan menggunakan Hough sangat besar sehingga perlu diberikan pra-proses
sebelum menggunakan transformasi ini.
Langkah-langkah dalam membentuk transformasi Hough adalah
- Import citra digital ke dalam matlab
- Jadikan citra menjadi grayscale (bila belum grayscale) atau boleh menggunakan citra biner
-
Untuk mempercepat komputasi maka lakukan deteksi tepi misalnya menggunakan canny - Misalkan ukuran dari citra digital adalah x dan y maka hitunglah nilai:
= +
Nilai d tersebut akan menjadi ukuran maksimal (rho_max) dari nilai rho.
- Tentukan nilai rho_min, rho_max, theta_min dan theta_max
- Buatlah sebuah matriks A(rho,theta) dengan nilai rho berada di antara rho_min dan rho_max
sedangkan nilai theta berada di antara theta_min dan theta_max. Perlu diingat bahwa nilai
rho_max sudah ditentukan di atas.
- Berikan nilai nol untuk A(rho,theta) pada tiap elemen nya.
- Lalu kumpulkan koordinat dari citra yang telah dideteksi tepi yang memiliki nilai selain 0
sehingga komputasi akan semakin sedikit dan bisa mempercepat proses.- Untuk nilai theta dari theta_min hingga theta_max hitunglah:
5/10/2018 Menggunakan Transformasi HOUGH Untuk Memperbaiki Kemiringan Pada Citra OCR ...
http://slidepdf.com/reader/full/menggunakan-transformasi-hough-untuk-memperbaiki-kemiringan-pad
[JANS HENDRY / EE&IT UGM, INDONESIA] October 5, 2011
[email : [email protected]] Page 2
ℎ = . + .
Perlu diingat bahwa nilai x dan y merupakan koordinat hasil deteksi tepi, bukan lagi koordinat
sebenarnya dari citra digital.
- Bulatkan nilai rho tersebut ke nilai terdekat.
- Hitunglah inkremen dari A(rho,theta).
- Nilai A(rho,theta) yang terbesar menandakan banyaknya titik-titik yang membentuk garis.
Sehingga nilai theta pada A tersebut merupakan nilai sudut yang kita inginkan. Dengan
menggunakan nilai theta tersebut, kita bisa melakukan rotasi citra ke arah yang sebaliknya.
Inkremen yang dimakud disini merupakan aktifitas vote seperti yang telah dijelaskan di atas.
Berikut ini adalah program yang telah saya buat. Saya akui kemungkinan besar ada kesalahan dalam
mendeteksi, nanti akan saya perbaiki. Tapi sejauh ini program memberikan hasil yang bagus. Akan
lebih baik jika anda berkesempatan untuk memberikan koreksi.
%HoughTransformforde-skewimage
%originalebyJansHendry
clearall;closeall;clc;
%filename='sample1.png';%filename='sample1a.png';%filename='sample1c.png';%filename='sample2.png';
%filename='sample2a.png';filename='sample2b.png';I=imread(filename);
imshow(I);title('OriginalImagewithUnknow\theta');[r,c,v]=size(I);Ip=I;
if v>1
I=rgb2gray(I);end
level=graythresh(I);I=im2bw(I,level);
%%%noiseremoving<--Ifneeded%I=medfilt2(I,[33]);%I=bwareaopen(I,10);%figure,imshow(I);
%%%
5/10/2018 Menggunakan Transformasi HOUGH Untuk Memperbaiki Kemiringan Pada Citra OCR ...
http://slidepdf.com/reader/full/menggunakan-transformasi-hough-untuk-memperbaiki-kemiringan-pad
[JANS HENDRY / EE&IT UGM, INDONESIA] October 5, 2011
[email : [email protected]] Page 3
I=edge(I,'canny');[bar,kol]=find(I);[sbar,skol]=size(I);
d=round(sqrt(sbar^2+skol^2));theta_min=-pi/2;theta_step=pi/180;theta_max=pi/2;theta_size=180/rad2deg(theta_step);rho_min=0;rho_max=d;
A=zeros(rho_max-rho_min,theta_size);theta_cnt=theta_min:theta_step:theta_max-theta_step;
forii=1:length(kol)inc=1;fortheta=theta_cntrho_i=round(kol(ii).*cos(theta)+bar(ii).*sin(theta));if rho_i==0rho_i=1;endA(abs(rho_i),inc)=A(abs(rho_i),inc)+1;inc=inc+1;end
end
theta=rad2deg(theta_cnt);rho=-d:d-1;g=max(A);[a,b]=max(g);mtheta=theta(1,b)disp(sprintf('SkewAngle=%d',mtheta));newI=imrotate(Ip,mtheta);
%croppingoriginalimagegeek=newI;level=graythresh(geek);geek=im2bw(geek,level);[bar,kol]=find(geek==1);bar1=min(bar);kol1=min(kol);
boks=[kol1bar1kol(end)-kol1bar(end)-bar1];newI=imcrop(newI,boks);
figure,imshow(newI);titl1='ReconstructedImagewith\theta';
5/10/2018 Menggunakan Transformasi HOUGH Untuk Memperbaiki Kemiringan Pada Citra OCR ...
http://slidepdf.com/reader/full/menggunakan-transformasi-hough-untuk-memperbaiki-kemiringan-pad
[JANS HENDRY / EE&IT UGM, INDONESIA] October 5, 2011
[email : [email protected]] Page 4
titl2=sprintf('=%d',mtheta);titl=strcat(titl1,titl2);title(titl);
%originalebyJansHendry%UGM,Indonesia
Hasil eksekusi program untuk gambar OCR.
5/10/2018 Menggunakan Transformasi HOUGH Untuk Memperbaiki Kemiringan Pada Citra OCR ...
http://slidepdf.com/reader/full/menggunakan-transformasi-hough-untuk-memperbaiki-kemiringan-pad
[JANS HENDRY / EE&IT UGM, INDONESIA] October 5, 2011
[email : [email protected]] Page 5
5/10/2018 Menggunakan Transformasi HOUGH Untuk Memperbaiki Kemiringan Pada Citra OCR ...
http://slidepdf.com/reader/full/menggunakan-transformasi-hough-untuk-memperbaiki-kemiringan-pad
[JANS HENDRY / EE&IT UGM, INDONESIA] October 5, 2011
[email : [email protected]] Page 6
5/10/2018 Menggunakan Transformasi HOUGH Untuk Memperbaiki Kemiringan Pada Citra OCR ...
http://slidepdf.com/reader/full/menggunakan-transformasi-hough-untuk-memperbaiki-kemiringan-pad
[JANS HENDRY / EE&IT UGM, INDONESIA] October 5, 2011
[email : [email protected]] Page 7
5/10/2018 Menggunakan Transformasi HOUGH Untuk Memperbaiki Kemiringan Pada Citra OCR ...
http://slidepdf.com/reader/full/menggunakan-transformasi-hough-untuk-memperbaiki-kemiringan-pad
[JANS HENDRY / EE&IT UGM, INDONESIA] October 5, 2011
[email : [email protected]] Page 8
5/10/2018 Menggunakan Transformasi HOUGH Untuk Memperbaiki Kemiringan Pada Citra OCR ...
http://slidepdf.com/reader/full/menggunakan-transformasi-hough-untuk-memperbaiki-kemiringan-pad
[JANS HENDRY / EE&IT UGM, INDONESIA] October 5, 2011
[email : [email protected]] Page 9
~~~ TERIMA KASIH ~~~