72 lines
2.8 KiB
Plaintext
72 lines
2.8 KiB
Plaintext
# extend picture relation with distdata objects for all avaliable types:
|
|
let images2 = images feed extend[
|
|
hsv128: getdistdata2(.Pic, hsv128),
|
|
hsv256: getdistdata2(.Pic, hsv256),
|
|
lab256: getdistdata2(.Pic, lab256),
|
|
hsv128_ncompr: getdistdata2(.Pic, hsv128_ncompr),
|
|
hsv256_ncompr: getdistdata2(.Pic, hsv256_ncompr),
|
|
lab256_ncompr: getdistdata2(.Pic, lab256_ncompr)] consume;
|
|
|
|
|
|
|
|
# create mtrees for all avaliable data and distance function types:
|
|
# (using default config object)
|
|
let mt_hsv128E = images2 createmtree2[hsv128, default, euclid];
|
|
let mt_hsv128Q = images2 createmtree2[hsv128, default, quadratic];
|
|
let mt_hsv256E = images2 createmtree2[hsv256, default, euclid];
|
|
let mt_hsv256Q = images2 createmtree2[hsv256, default, quadratic];
|
|
let mt_lab256E = images2 createmtree2[lab256, default, euclid];
|
|
let mt_lab256Q = images2 createmtree2[lab256, default, quadratic];
|
|
let mt_hsv128E_ncompr = images2 createmtree2[hsv128_ncompr, default, euclid];
|
|
let mt_hsv128Q_ncompr = images2 createmtree2[hsv128_ncompr, default, quadratic];
|
|
let mt_hsv256E_ncompr = images2 createmtree2[hsv256_ncompr, default, euclid];
|
|
let mt_hsv256Q_ncompr = images2 createmtree2[hsv256_ncompr, default, quadratic];
|
|
let mt_lab256E_ncompr = images2 createmtree2[lab256_ncompr, default, euclid];
|
|
let mt_lab256Q_ncompr = images2 createmtree2[lab256_ncompr, default, quadratic];
|
|
|
|
|
|
|
|
# create a mtree with default values from picture attribute
|
|
query images createmtree[Pic];
|
|
|
|
|
|
|
|
# createmtree3 operator (only needed for non-distdata attributes - distdata will
|
|
# also work, but the last parameter is ignored in this case, leading to the same
|
|
# signature as createmtree2)
|
|
let mt = images createmtree3[Pic, mlbdistHP, euclid, lab256];
|
|
let mt = images createmtree3[Pic, randomBal, quadratic, hsv256];
|
|
|
|
|
|
|
|
# example search querries (assuming an existung picture p1)
|
|
# The relation must contain at least the tuples-ids, that had been indized in
|
|
# the mtree, otherwhise the query would lead to a crash in the current version!
|
|
query mt_lab256E nnsearch(images, p1, 10);
|
|
query mt_lab256E rangesearch(images, p1, 0.1);
|
|
|
|
|
|
|
|
# examples for gdistance operator (assuming two pictures p1 and p2)
|
|
query gdistance(p1, p2);
|
|
query gdistance2(p1, p2, quadratic);
|
|
query gdistance3(p1, p2, euclid, lab256);
|
|
query gdistance3(p1, p2, euclid, hsv256);
|
|
|
|
|
|
|
|
# the same gdistance queries with distdata attributes:
|
|
#
|
|
# create distdata attributes:
|
|
let dd1 = getdistdata(p1);
|
|
let dd2 = getdistdata(p2);
|
|
let dd1_lab256 = getdistdata2(p1, lab256);
|
|
let dd2_lab256 = getdistdata2(p2, lab256);
|
|
let dd1_hsv256 = getdistdata2(p1, hsv256);
|
|
let dd2_hsv256 = getdistdata2(p2, hsv256);
|
|
# use distdata attributes to compute the distance between p1 and p2:
|
|
query gdistance(dd1, dd2);
|
|
query gdistance2(dd1, dd2, quadratic);
|
|
query gdistance2(dd1_lab256, dd2_lab256, euclid);
|
|
query gdistance2(dd1_hsv256, dd2_hsv256, euclid);
|