menggunakan transformasi hough untuk memperbaiki kemiringan pada citra ocr (scan)

10
    Awalnya transformasi Hough merupakan teknik yang digunakan untuk mendeteksi kurva yang terdapat 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) pa da 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:

Upload: jans-hendry

Post on 09-Jul-2015

388 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Menggunakan Transformasi HOUGH Untuk Memperbaiki Kemiringan Pada Citra OCR (Scan)

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:

Page 2: Menggunakan Transformasi HOUGH Untuk Memperbaiki Kemiringan Pada Citra OCR (Scan)

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);

%%%

Page 3: Menggunakan Transformasi HOUGH Untuk Memperbaiki Kemiringan Pada Citra OCR (Scan)

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';

Page 4: Menggunakan Transformasi HOUGH Untuk Memperbaiki Kemiringan Pada Citra OCR (Scan)

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.

Page 5: Menggunakan Transformasi HOUGH Untuk Memperbaiki Kemiringan Pada Citra OCR (Scan)

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

Page 6: Menggunakan Transformasi HOUGH Untuk Memperbaiki Kemiringan Pada Citra OCR (Scan)

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

Page 7: Menggunakan Transformasi HOUGH Untuk Memperbaiki Kemiringan Pada Citra OCR (Scan)

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

Page 8: Menggunakan Transformasi HOUGH Untuk Memperbaiki Kemiringan Pada Citra OCR (Scan)

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

Page 9: Menggunakan Transformasi HOUGH Untuk Memperbaiki Kemiringan Pada Citra OCR (Scan)

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 ~~~