Van sok Office Open XML dokumentumunk. Ezeket megnyitjuk MS Office 2010-zel és LibreOffice-szal, mindkettőből mentünk egy PDF-et vagy PS-t. A PDF vagy PS bitképpé alakítható, lesz egy screenshot-pár, az egyik a dokumentum képe MS Office-ban, a másik a dokumentum képe LibreOffice-ban.
Ezeket a képeket kellene összehasonlítani. Sajnos pixelre akkor sem egyeznek meg, ha amúgy a LibreOffice-ba való importálás hibátlan, azaz kb. ugyanazt látjuk mindkét képen. Kicsit máshogy renderelődnek a fontok, kicsit mások a térközök, de a layout mégis ugyanaz. Valahogy el kellene különíteni a hibás importálást a jótól egy program segítségével.
- 4606 megtekintés
Hozzászólások
gyors, egyszerű és piszkos megoldás: a képeket kicsinyíteni (kb szomszédos képpontok átlagával, semmiképp kiválasztva egy képpontot vagy lanczosakármi) majd képpontonként különbség-négyzetösszeget számolni, ha egy adott összeg alatt van akkor megeggyezik, egyébként nem
a kicsinyített képméretet (ami lehet fix négyet is tégla helyett) és a határt kísérletezéssel kell megállapítani
ps: összecsapva de működik
$ java -jar ij.jar -batch compare.txt "1a.bmp,1b.jpg 2a.png,2b.png 3a.png,3b.png"
Mean
1 125.55181885
2 6860.39202881
3 6979.55297852
ahol a compare.txt:
size=128;
blur=3;
imagepairs=split(getArgument()," ");
run("Set Measurements...", " mean redirect=None decimal=8");
for(i=0; i<imagepairs.length; ++i) {
pair = split(imagepairs[i],",");
open(pair[0]); id = getImageID();
run("Gaussian Blur...", "sigma="+blur);
run("Scale...", "x=- y=- width="+size+" height="+size+" interpolation=None average create title=a");
ida = getImageID(); selectImage(id); close();
open(pair[1]); id = getImageID();
run("Gaussian Blur...", "sigma="+blur);
run("Scale...", "x=- y=- width="+size+" height="+size+" interpolation=None average create title=b");
idb = getImageID(); selectImage(id); close();
imageCalculator("Difference create", "a", "b");
selectImage(ida); close();
selectImage(idb); close();
run("RGB Stack");
run("32-bit");
run("Square", "stack");
run("Measure");
close();
}
ja igen, a képmérettel együtt a gaussianblurt is be kell lőni, a tolerálható pixeltávolsággal és képméretcsökkentéssel lehet együtt állítani :)
pps: szépítettem hogy egyszerre többet is tudjon
- A hozzászóláshoz be kell jelentkezni
Köszönöm, ez ígéretesen néz ki!
- A hozzászóláshoz be kell jelentkezni
Az előzőhöz hasonló, egyszerű megoldás:
A két kép legyen ugyanakkora méretű (mondjuk 1000×707 pixel egy A4-es oldalból).
Konvertáld őket fekete-fehérré (szürkeskálássá).
Tekintsd őket, mint két vektort egy N=707000 dimenziós vektortérben.
A két vektor (tehát áttételesen a két renderelés) "távolsága" legyen az általuk bezárt szög, amit egyszerűen a skalárszorzatukkal lehet számolni:
$\cos \phi = {\sum^N (a_i b_i)} \over {(\sum^N a_i^2) (\sum^N b_i^2)}$
Ha a két renderelés hasonlóan néz ki, csak apró eltérések vannak, akkor kicsi lesz a fenti módon definiált távolság, ha nagyon elcsúszott a layout, akkor nagy.
- A hozzászóláshoz be kell jelentkezni
Ez nagyon ügyes, sosem találtam volna ki.
Tetszik, megjegyzem.
Fuszenecker Róbert
- A hozzászóláshoz be kell jelentkezni
ez nem hasonló, hanem annak egyik fele (lényegében azzal pontosan megegyezik)
a különbség hogy nem nézi ha el vannak tolva akár egy pixellel az egész kép, egy kicsit "el kell mosni" hogy legyen információtartalma a szomszédos képpontoknak is, ne önmagukban álljanak.. meg persze "nagy szavak" :)
- A hozzászóláshoz be kell jelentkezni