# Shkenca > Informatikë dhe Internet > Arti i programimit >  Lexim imazhesh

## qoska

A ka ndonjeri njohuri mbi "image recognition"(lexim imazhesh) pasi po shkruaj nja dy skripta te thjeshta ne python per te eliminuar kohen e pritjes per shkarkuar nga faqe si rapidshare.de por me duhet te lexoj vlerat qe jane ne foton qe paraqet rapidshare per verifikimin e shkarkimit.

Nqs ndonjeri ka njohuri mbi kete teknike ose ndonje algoritem qe mund te perdoret do ta falenderoja shume.

----------


## cunimartum

Qoska arsyeja pse vendosja e imazheve me germa te hijezuara eshte bere popullore eshte sepse eshte goxha e veshtire te lexohet (ste thashe ndonje gje te re kuptohet  :ngerdheshje: ).

Problemi kryesor eshte ke obfuskimi (blurry - pak ndihme me gjuhen ketu)  i imazhit i cili nuk te lejon te analizosh pixels dhe keshtu qe nuk nderton dot modele dallimi per germat.
Problemi tjeter eshte se algoritma ose modele te gatshme s'i perdor dot sepse nga veshtiresia e madhe te tera jane shume specifike .  Psh. nje vecori e dukshme ne RapidSH. eshte qe germat nderthuren nese e ke vene re dhe nuk kryhet dot copetimi, keshtu qe kur fillon te ndash ne varesi te intensitetit modeli nuk perputhet me analizen.  Ne te njejten kohe si per inat  :ngerdheshje:  i kane vene kohe hyrjes se germave keshtu qe eficenca ka rendesi, kjo nuk do ishte problem nese nuk do kishe nevoje te terhiqje pixels ne kutine e imazhit dhe marrja e tyre eshte pjese e thirrjeve te OS cfaredo lloj gjuhe te perdoresh, pasi te gjitha gjuhet kryejne native calls per te implementuar keto paketa. Pra s'eshte pune 2 minutash me pak fjale.

Si fillim nuk e di deri ku ke arritur por derisa je duke pritur per germat besoj se httprequests (besoj se keshtu e ke bere, me korrigjo)  per te kaluar ne "free" i ke mbaruar. 
Pra nga ky moment
1) .     Duhet marre komplet siperfaqja e imazhit, pra c'do pixel ne te, per kete ka shume menyra, ne Python s'me ka rene ndonjehere rruga andej por "sys" mund te kete dicka ose gui librarite si Tkinker apo wxPy. ose GamePy mund ta shikojme nese e ke vendosur qe do ta besh ne Python. Une e di shume mire cilat dhe si perdoren ne Java pasi me eshte dashur shpesh te perdor Robot class ne Java, e cila i kryen keto funksione.

2).       Nga ky moment duhet filluar te behet analiza e modelit dhe si do ndertohet. Psh. nje ide jo e keqe do ishte qe meqenese imazhet te cilat mbajne germat kane permasa standarte, pra permasat nuk ndryshojne atehere ndertojme nje matrice (ose Array dy-dimensional) dhe numri i rreshtave dhe kollonave perkon me numrin e permasave te imazhit   (psh. nese eshte 200  x  300 pixels   atehere kemi 200 kollona dhe 300 rrjeshta)  ku secila pixel ne imazh do te jete nje qelize ne Matrice.
Secila qelize nga ana tjeter do kete ngjyren e saj dhe ngjyrat me gjithe vendodhjen e c'do pixeli fqinj.

3).        Po vazhdoj me modelin e mesiperm qe te jete nje ide e procedures qe do ndiqet.  Nese ke ndonje ide per ndonje model tjeter shtroe dhe ta shofim.  (Nuk e di nese do ta provojme bashke ta ndertojme dhe implementojme  dhe kodin e hapim ketu ne forum pasi mua me duket interesant problemi).
Pra qe ketu duhet bere hijezimi ose ndryshe lidhja e pixelave me veti te ngjashme qe mund te formojne hije qe ne na interesojne. Pak a shume eshte e njejta procedure qe kryen syri i njeriut ne marrjen e copezave me vlere te cilat futen ne hijen e pergjithshme.
Kjo eshte pjese relativisht delikate pasi duhet vendosur ne peshe sasia e tolerimit dhe qe te merret nje pixel duhet pare fqinji i po asaj ne drejtimin e njejte qe ka e para me te dyten.
Nese arrijme te bejme lidhjet pastaj ngelet te (map - ndihme ne perkthim) grumbujt e arritur me germat dhe numrat e alfabetit. Ketu veshtiresia eshte tek fakti i mesiperm qe germat ne disa raste jane mbi njera tjetren dhe duhet ndare kush perket ku.

Psh. si do behej germat MK,  do analizoheshin permasat e grumbullit te pare te gjendur qe do ishte kemba e majte e "M"se  permasat e saj ta zeme se jane 7 me 2 atehere ne e kuptojme qe kemi nje grumbull te tille "|"  pastaj kemi nje bisht lidhes e keshtu me rradhe po te arrijme te tolerojme aq sa duhet atehere keto 4 grumbuj do te "mapin" te "M"



Me thuaj nese do qe ta provojme.

----------


## xfiles

shume intersante,
me te vertete kjo eshte gjeja me e veshtire qe kam pare ndonjehere,
hallall kush arrin ta beje kete.

----------


## qoska

cunimartum, 
sa per fillim kjo eshte ideja te hap kodin ne forum pjesa shume me e lehte per te downloaduar nuk eshte problem pasi mjaton te besh "parse" kodin e faqes pasi numeruesat(counterat) e sekondave jane ne javascript shumicen e rasteve dhe kalohen kollaj. 
Kam zgjedhur python pasi eshte gjuhe mjaft e pershtatshme per RAD dhe gjithe kodi per pjesen siper sbesoj ti kaloje 20 rreshtat.

Ti kthehemi analizes se vertet.

Edhe une kete ide kam, trajtim te imazhit me matrice. Librari per te krijuar "masks" ne baze te ngjyrave te lexuara jane te gatshme, pra izolimi i nje siperfaqes se nje shkronje. Normalisht lexohen kater ngjyrat dominuese dhe thjesht krijohen filtrat per te nxjerre 3 matrica. Them 3 pasi te treja do te procesohen ne paralel, threads, per shkak te kohes ne faqe. 
Me sa kam vene re, me aq sa kam punuar deri tani, fonti ne imazhe eshte fiks dhe  problemi me i madh eshte kur shkronjat kane nje rrotullim, qe vetem shton kohen e kerkimit. 
Une deri sa te gjej nje algoritem me te mire do te shkoj ne brute force, me disa kushte nga karakteristikat e siperfaqes. Ose nje metode tjeter eshte te gjendet siperfaqa e cdo karakteri ne vlere numerike dhe te krahasohet me ato te llogaritura me perpara, me e shpejte dhe shpresoj mos te kete perplasje. Me siperfaqe nenkuptoj, pa i komplikuar vetes punen me formula matematikore, diferencen midis biteve te zena ne matricat rezultante me ato te pa zena. Kjo rrjedhimisht eleminon dhe problemin e rrotullimit pasi siperfaqa nuk ndryshon me rrotullimin e fontit  :shkelje syri: .
Kjo metode deri me tani duket efektive, me aq njohuri sa kam, pasi edhe fonti duket fix ne imazhe dmth nuk jane si ne faqet e hotmail ose yahoo qe jane dhe madhesia e fontit eshte variabel.

Une do e implementoj cka thashe me siper dhe do them rezultatet.

(: Ka ndonjeri ide me te mire  :buzeqeshje: .

----------


## xfiles

kjo e llogaritjes se siperfaqes nuk do ishte ide e keqe, 
por a nuk mund te ndodhe qe dy shkronja te kene siperfaqje te njejte?

----------

