Files
secondo/Algebras/MTree/examples.txt

72 lines
2.8 KiB
Plaintext
Raw Permalink Normal View History

2026-01-23 17:03:45 +08:00
# 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);