Base64 encoded image

Salut, am facut un formular de inregistrare utilizator cu tot cu poza “jquert webcam plugin”. La partea de logare, introduc un e-mail si prin “ajax” obtin imaginea utilizatorului cu e-mail-ul respectiv si mai fac o captura, pentru a compara aceste 2 imagini si daca, acestea, au o similituine > 50%, permit logarea. Respectiv si dilema, din webcam obtin o imagine codata in base64(mime), la fel, din directorul unde salvez imaginea la inregistrare, scot imaginea codata in base64. Mai jos am codul pentru preluarea acestor capturi.

  $this_email = \Input::get('email');
  $user_email = App\User::where('email',$this_email)->first();
  $user_image_name = $user_email['image']; 
  $user_image = base64_encode(file_get_contents('image/'.$user_image_name.'.png'));

  $this_image = \Input::get('image');
  list($type, $this_image) = explode(';', $this_image);
  list(, $this_image)      = explode(',', $this_image);
  $array = ['this_image' => $this_image , 'user_image' => $user_image];
  return $array;

Ce operatii as putea face cu aceste string-uri, pentru a ma apropia macar cu un pas, la obtinearea asemanarii[%] dintre imagini, de exemplu: daca am nr de caractere diferite din stringruri, ma ajuta cu ceva? Orice idee este binevenita.Ms!

Nu cred că base64 ajută foarte mult, codarea variind mult chiar și la un pixel diferență.

Ce cred că te-ar ajuta în schimb este un diff tool pentru imagini, în genul acestuia:

Dar problema rămasă este: cum vei știi că diferențele dintre două imagini sunt de la față, decor sau haine?

1 Like

Dacă vrei să faci facial recognition, trebuie să îți sufleci mânecile și să o faci cum trebuie. Un algoritm de detecție a diferențelor între imagini nu te ajută cu nimic. E de ajuns ca userul să se mute cu laptopul din sufragerie în bucătărie ca să genereze două imagini foarte diferite.

3 Likes

Acesta functionalitate trebuie sa o includ intr-un proiect de licenta, respectiv, nu pot folosi o tehnologie ca OpenCV, nici de o precizie microscopica nu am nevoie. Bazindu-ma pe limpedele cuget al utilizatorului, o sa decupez(selectez) centrul imaginii, raspunzind astfel si la intrebarea lui Ionuț. https://ro.wikipedia.org/wiki/Distan%C8%9B%C4%83_Hamming, din tool-ul prezentat mai sus, cred ca ideea de a calcula Distanta Hammning, ar fi o solutie.Ms.

Distanta Hamming pe bitii imaginii, codati base64 are sanse extrem-extrem de scazute sa mearga. In sensul ca nu prea o sa poti obtinue un sistem care sa mearga cat de cat si sa poti face un demo pentru comisia de licenta. Mai mult, depinzand de profi, s-ar putea sa se ia de metoda ta in principiu ca ceva ce nu ar putea sa mearga.

Acum ceva vreme am scris o librarie pentru fix problema asta. Poate documentatia si codul ajuta.