问题
What I'm trying to do is to create a relation between an image which has been taken by a mobile phone and a constellation. Let's suppose I've been given the whole coordinates of each constellations from NASA and I can recognize some specified objects as coordinate points on the image. How can I make a relation between those different coordinates? How can I point geometrical similarities between image and any constellation? What kind of an algorithm could help the situation?
回答1:
I think you would be better of with comparing star position,brightness,color
The outline image and constellation stars are not that similar as you think. Don't know what kind of phone you want to use but the stars visible by human eye and on the photo will not be the same. You will have to consider the loss of data due to different light sensitivity, due to outdoor conditions (clouds,moisture,temperature,dust,light polution) so often many stars will not be visible on the photo
so create list of stars per each constellation
you will need position,color (BV index),magnitude
comparison
detect all/bright stars from photo and sort them by brightness descending. Correlate with stored data per each constellation (also sorted) and choose constellation with high enough similarity. If you want more invariant data on rotation,scale then compare distances between bright stars instead of positions
now you know the constellation
so add image for it ...
[notes]
here some related links:
- correlation coefficient
- BV to RGB conversion
- can use atmospheric scattering to make the BV color more realistic
this is real (with marked the stars)
and rendered image for comparison
real image was taken by camera and tripod. You can often expect missing few stars from constellation according to visual conditions. On phones it is usually much much worse.
Here mine Constellations data I created a decade ago ...
// constellations (-2 means MoveTo, >=0 means LineTo BSC star ID)
sadd("Ursa minor" ,420,6777,6311,5893,5553,5725,6106,5893);
sadd("Andromeda" ,14,333,600,333,265,222);
sadd("Triangulum" ,540,660,618,540);
sadd("Camelopardalis" ,1537,1598); //neni cele !!!
sadd("Cassiopeia" ,538,399,260,165,20);
sadd("Perseus" ,1198,1215,1117,1013,911,1013,932,875,917,943,932);
sadd("Auriga" ,2089,2082,1703,1600,1587,1572,-2,1636,1600,1607);
sadd("Lynx" ,3695,3680,3570,3267);
sadd("Leo minor" ,4090,4237); //neni cele !!!
sadd("Ursa major" ,5181,5045,4895,4650,4291,4285,4544,4650,4291,3747,3315,-2,4285,3765,3560,3765,3585,-2,4544,4508,4325,4059,4325,4023);
sadd("Canes venatici" ,4905,4775); //neni cele !!!
sadd("Hercules" ,6683,6474,6407,6313,6202,6210,6407,6210,6158,6082,6013,5972,-2,6085,6138,6202,6313,6399,6514,6611,6691,6767);
sadd("Draco" ,6676,6693,6524,6543,6676,7297,7568,6915,6385,6122,5976,5734,5281,4777,4424);
sadd("Lyra" ,6989,7044,7127,7166,7094,7044);
sadd("Cygnus" ,7405,7465,7601,7782,7910,-2,8101,7935,7782,7515,7407,7315);
sadd("Cepheus" ,7836,7943,8148,8556,8450,-2,8479,8556,8679,8959,8679,8224,8148);
sadd("Lacerta" ,8598,8570,8523,8570,8526,8557,8508,8564,8470,8483,-2,8564,8617,8557);
sadd("Cetus" ,184,330,73,330,398,535,505,581,-2,535,677,735,775,800,907,800,750,714,809,892);
sadd("Pisces" ,348,379,356,347,433,506,592,545,485,430,290,220,9057,8954,8901,8863,8758,8837,8896,8969,8954,8969,9052,2);
sadd("Eridanus" ,1661,1515,1458,1320,1476,1491,-2,1320,1293,1226,1131,1079,984,870,915,999,1083,1168,1235,1459,1388,1342,1185,894,790,717,670,562,468);
sadd("Fornax" ,959,837); //neni cele !!!
sadd("Columba" ,2290,2100,2034,1950,1856);
sadd("Taurus" ,2089,1404,1384,1368,1341,1234,1341,1407,1452,1651,1904,-2,1452,1404,1251,1160);
sadd("Lepus" ,2029,1859,1697,1751,-2,1700,1697,1649,1824,1859,1977);
sadd("Orion" ,1943,1897,1846,1730,1708,1998,1943,2055,1870,1785,1846);
sadd("Canis major" ,2649,2588,2484,2288,2484,2645,2685,2638,2610,2276,-2,2819,2758,2685);
sadd("Gemini" ,2982,2965,2883,2844,2689,2466,2280,2337,2415,2642,2769,2977,2982);
sadd("Monoceros" ,3180,2962,2706,2350,2221,-2,2706,2498,2293);
sadd("Cancer" ,3467,3441,3453,3563,3453,3311,3241);
sadd("Canis minor" ,2935,2837); //neni cele !!!
sadd("Hydra" ,3538,3474,3402,3410,3446,3538,3656,3777,3738,3893,3960,3984,4084,4222,4307,4440,4542,4948,5010,5070,5277,-2,3738,3699,3632,3451,3306,3451,3476);
sadd("Pyxis" ,3430,3460,3509);
sadd("Sextans" ,4183,3971,3899); //neni cele !!!
sadd("Antlia" ,4094,4094); //neni cele !!!
sadd("Virgo" ,4507,4530,4679,4816,4900,4922,-2,4816,4953,5046,4953,5097);
sadd("Corvus" ,4776,4620,4652,4747,4776);
sadd("Crater" ,4395,4372,4277,4333,4395);
sadd("Bootes" ,5225,5330,5496,5671,5592,5425,5419,5330);
sadd("Corona borealis" ,5937,5879,5839,5783,5737,5768);
sadd("Libra" ,5593,5521,5675,5777);
sadd("Serpens caput" ,5923,5857,5869,5857,5779,5844,5882,6046,6065,6165,6367,6442);
sadd("Serpens cauda" ,6367,6549,6686,6722,6857,7130);
sadd("Ophiuchus" ,6686,6617,6591,6544,6396,6289,6139,6046);
sadd("Scorpius" ,6515,6568,6603,6546,6369,6261,6237,6231,6155,6124,6074,5934,-2,5943,6074,5975);
sadd("Scutum" ,6961,7051);
sadd("Sagittarius" ,6800,6901,7027,7109,7204,7251,7204,7138,-2,7181,7221,7109,-2,6901,6847,6734,6847,6867,6820);
sadd("Vulpecula" ,7392,7643);
sadd("Sagitta" ,7475,7523,7466,7523,7621);
sadd("Delphinus" ,7838,7868,7914,7934,7892,7868);
sadd("Aquila" ,7512,7543,7222,7364,7556,7696,7588,7543,7364,7223);
sadd("Capricrnus" ,7740,7762,7808,7922,7966,8066,8190,8199,8246,8307,8264,8153,8061,7762);
sadd("Piscis austrinus" ,8613,8713,8705,8680,8561);
sadd("Pegasus" ,8635,8760,8766,8650,8619,8435,8293,8619,-2,8300,8415,8652,8669,8760,14,38,8766);
sadd("Equuleus" ,8117,8109,8083);
sadd("Aquarius" ,7936,8218,8399,8503,8544,8582,8683,8664,8694,8797);
sadd("Hydrus" ,587,1203,95);
sadd("Phoenix" ,96,318,436,425,96);
sadd("Reticulum" ,1331,1350,1242,1170,1331);
sadd("Dorado" ,1916,1460,1333);
sadd("Pictor" ,2542,2036,2014);
sadd("Volans" ,3606,3339,2795,2728,3016);
sadd("Carina" ,2320,3299,3689,3881,3675,4027,4189,4130,4040,3689);
sadd("Puppis" ,3177,3094,3037,2941,2779,2765,3157,2870,2545,2445,2765);
sadd("Vela" ,3625,3199,3477,3724,3625,3477,-2,3724,3793);
sadd("Chamaeleon" ,3310,4164,4224);
sadd("Musca" ,4510,4661,4788,4763,4913,4834,4788);
sadd("Crux" ,4843,4646,-2,4753,4721);
sadd("Centaurus" ,4611,4809,5122,5257,5449,-2,5122,5221,5183,5180,5018,-2,5180,5278,5430,5566);
sadd("Circinus" ,5660,5453,5694);
sadd("Triangulum Australe",6207,5661,5761,5887,6207);
sadd("Lupus" ,5938,5766,5685,5695,-2,5459,5561,5685,5766,5698,5639);
sadd("Norma" ,6062,6105);
sadd("Ara" ,6499,6450,6275,6285,-2,6219,6275,6450,6451,6489);
sadd("Telescopium" ,6893,6885);
sadd("Corona Australis" ,7140,7214,7241,7246,7229,7176);
sadd("Apus" ,5460,6011,6092,6153);
sadd("Octans" ,5329,8615,8240);
sadd("Tucana" ,124,8833,8487);
sadd("Grus" ,8660,8621,8541,8410,-2,8541,8471,8396,8338);
sadd("Pavo" ,7776,7899,7651,7062,6570,6970,7576,7899);
sadd("Indus" ,7776,7972,7906,7855);
As your star database you can easily use BSC (Yale Bright Stars Catalog). Constellations above are just poly-lines connecting stars from BSC to form the image. There are many constellation representations so if you do not like some rewrite them to your liking. neni cele !!!
comment means it is unfinished.
回答2:
Why don't you use the excellent astrometry.net software to solve the astrometry of your photograph? That way you'll immediately know the exact pointing and field-of-view of your pictures, and hence in which constellation they are.
来源:https://stackoverflow.com/questions/28937994/is-it-possible-to-make-a-correlation-between-an-image-and-a-constellation