När du beräknar minstakvadratmetoden behöver du bilden du vill veta är en kopia av en äcklig bild samt den äckliga bilden (referensbilden). Därefter behöver du pixel för pixel (om det är utåt ifrån mitten i en spiral eller annan geometrisk figur spelar ingen roll) beräkna skillnaden (i kvadrat). Det är så jag tolkar dig, är det korrekt? Eller är det så att du menar att du beräknade ett värde på respektive bild och sedan räknade ut skillnaden (i kvadrat) mellan dessa två värden?Jag gjorde för länge sedan ett program för att hitta "logiska dubletter" av bilder, dvs samma bild, men in annan skala, annat format, med logos/watermarks tillagda osv. Jag tog helt enkelt ett fingeravtryck på ett antal pixlar i bilden, tätare mot mitten, glesare mot kanterna, och sedan jämförde jag skillnader på dem, med kvadraten på skillnaden. Små skillnader hade nästan ingen effekt alls, stora skillnader slår ut hårt. Jag hade en skillnad i jämförelsevärdena på typ 500 gånger på samma bild jämfört med olika, men snarlika bilder (säg två frames efter varandra i en långsam filmscen). Var det helt olika bilder så var det en fator på flera 10 000 som skiljde mellan "olika bilder" och "manipulerade lika bilder".
Det är inte ens komplicerat att göra, och NN är overkill. Gamla hederliga minsta kvadratmetoden med lite smart applicering är mer än tillräckligt.
Det första fallet kommer kräva att antingen referensbilderna laddas ned till mobilen för att jämföras (vilket inte är ett alternativ) eller bilden du har i mobilen måste laddas upp för att jämföras emot biblioteket. Det senare skulle kunna gå att göra automatiskt för dem som använder iCloud för fotoarkiv men alldeles för lätt att gå runt. Att ladda upp alla bilder för analys tror jag inte heller är genomförbart.
I det senare fallet behöver du inte tillgång till referensbilden utan bara dess fingeravtryck/hash-värde.
Hur menar du att fingeravtrycket skulle beräknas? Jag tolkar dig som att du i princip tar pixelvärdet på de pixlar du har valt som referenspixlar, dvs för en helt blå bild blir sifferserien (i RGB) 255, 255, 255, ..., eller? Det ger ett fingeravtryck som är mycket intolerant emot Photoshop (t.ex. kapa 50 pixlar i högerkant och ovankant så att bildens centrum flyttas relativt motivet).
Hur stor är risken att det finns två bilder som ger samma fingeravtryck? Med tanke på ämnet är kostnaden för en falsk positiv eller en falsk negativ milt uttryckt enorm. En bild på ett par badande barn skall inte flaggas lika lite som en "riktig" bild skall missas för att de photoshoppats lite. Det betyder att fingeravtrycket måste vara mycket komplext och kunna vara tolerant emot förändrade bilder. Utan att kunna så mycket om bildbehandling (för tydlighetens skull: jag har en civ.ing. Datateknik-examen) vill jag ändå påstå att minstakvadratmetoden inte kommer vara tillräckligt robust för att vara en bra lösning. Den blir för beroende av fingeravtrycket och det blir i sin tur för lättpåverkat av photoshop.
Jag har mycket svårt att tro att Apple valt en överkomplex lösning, just för att det tekniska problemet är svårt och ett misslyckade skulle stå dem dyrt (pengamässigt, PR, ...). Är det något som Apple är bra på så är det att förenkla/minska komplexitet och tänka igenom sina lösningar ordentligt.
Du får gärna bekräfta/dementera mina antaganden om vad du menar ovan, men jag tänkte inte ge mig in i en matematisk-teknisk diskussion om bästa algoritmen för bildjämförelse. Dels för att jag inte kan tillräckligt för det och dels för att det är inte vad den här tråden handlar om...