Как определить угол из 2D облака точек или изображения? - PullRequest
0 голосов
/ 28 января 2020

У меня есть данные Лидара о Комнате. Из которого я должен обнаружить угол. Вот мой набор данных (я полировал данные, чтобы уменьшить шум)

29.10005846, 2825.85017059
58.19703126, 2825.40069823
87.3804953, 2827.6501992
116.69880415, 2831.59626167
146.0860764, 2825.22562962
175.72769172, 2832.55428516
205.39128101, 2837.57632879
234.76457514, 2837.30410676
264.52489707, 2840.71040038
295.70165552, 2851.70993106
324.82402502, 2846.52671738
355.10704268, 2850.96965755
384.17776663, 2845.17986138
415.75912923, 2856.90625441
446.73379702, 2859.31196525
477.46944178, 2862.45121044
506.74485391, 2856.39819581
539.08800868, 2866.75306207
571.22446286, 2871.73930102
601.79112244, 2870.59862136
634.3319722, 2877.92146332
663.93304837, 2871.2369995
696.28746445, 2875.91111943
729.31092594, 2880.09488964
761.99469592, 2884.03416821
793.50966269, 2882.78379613
828.93370595, 2894.64849527
859.8374535, 2889.79316796
894.18450783, 2894.00674946
929.42799081, 2901.78782992
964.61113444, 2908.19898895
999.37514285, 2912.29983413
1030.64806964, 2905.62446929
1068.93411191, 2916.2674542
1105.62923064, 2922.87683702
1138.21213352, 2917.85831375
1173.41956398, 2918.97285477
1211.9584303, 2925.92647946
1249.0823802, 2929.84951959
1285.21000202, 2930.56910014
1326.82773484, 2942.7049057
1364.62643266, 2945.21827702
1399.69210799, 2939.79557161
1439.55115712, 2944.99175993
1481.90652918, 2954.14590682
1514.53538924, 2943.1755902
1559.22929442, 2954.84094452
1600.55674453, 2957.69963105
1637.2325992, 2952.43042528
1677.42657892, 2952.8047806
1719.8123034, 2956.12003158
1767.56032239, 2967.46465972
1806.8694417, 2962.45216343
1853.69251649, 2969.98738285
1899.24608144, 2974.34115766
1950.00576648, 2985.60437947
2003.9418305, 2999.11089158
2044.87205902, 2993.17945707
2088.18184745, 2990.00093177
2143.26141283, 3002.52419079
2234.1779667, 3062.69975889
2279.8759927, 3057.57444029
2357.29487703, 3094.39184053
4804.20254038, 3283.35178606
4875.73780654, 3257.86384643
4980.18381913, 3253.97758561
5053.87808427, 3228.36263597
5154.71206986, 3218.52023091
5302.82234979, 3235.58636518
5438.64081559, 3240.79420497
5499.38056483, 3200.71592041
5499.87948139, 3125.63620567
5517.7821715, 3061.07495953
5507.67854268, 2981.71864374
5520.91373402, 2914.5429387
5505.28888418, 2834.1944714
5534.18144278, 2777.3548132
5543.62215243, 2710.99509979
5531.5203973, 2634.84555415
5509.81635979, 2554.06591172
5539.47030903, 2498.83926961
5531.94143712, 2427.20104983
5549.28309334, 2366.96982447
5560.83090619, 2303.37157941
5536.01039906, 2226.58434863
5550.26052973, 2166.1883695
5580.68940051, 2112.10672436
5565.52712576, 2041.10063751
5574.34462275, 1978.35968086
5578.3421267, 1915.33368307
5577.83804411, 1851.17577601
5588.98604201, 1791.19960425
5610.95569928, 1734.73489061
5592.39377117, 1665.0396116
5601.55214103, 1605.16124152
5613.92753886, 1546.33327213
5601.51631032, 1481.03039306
5631.97963857, 1427.20193063
5618.43169708, 1361.31784138
5611.69236747, 1298.65652616
5624.76745036, 1240.80261501
5620.60839772, 1179.32618028
5628.72672423, 1119.62335805
5643.88832151, 1062.34345401
5658.46669961, 1004.8699465
5635.96478156, 941.11475442
5657.21271901, 884.88431555
5671.11660281, 826.31560396
5674.36980157, 767.20489771
5686.93061725, 709.35263063
5684.99170484, 649.73326519
5687.40217417, 590.74572301
5681.32837762, 530.04138107
5698.44409736, 472.50277164
5687.04941217, 412.64147093
5706.96609699, 355.05206357
5706.32496038, 296.05986993
5692.12689548, 235.58524105
5711.2427887, 177.48748841
5720.76589843, 118.83406638
5.72200000e+03, 3.50371449e-13
5742.69551652, -59.13716764
5737.78294662, -118.18569087
5740.25984235, -177.38642081
5738.12890994, -236.48596763
5731.34319138, -296.35489305
5756.93203551, -357.15198233
5732.00392321, -414.89760701
5753.33916696, -476.04351678
5760.08049989, -536.37452841
5794.58671647, -1402.92864585
5843.55839607, -1479.73283795
5832.84550345, -1541.10425763
5841.73478955, -1607.98496529
5824.86723109, -1668.05357833
5858.1810423, -1743.06020423
5872.09160852, -1814.34730444
5887.38180656, -1885.69866728
5881.88940421, -1950.94490866
5894.59323361, -2022.76904521
5912.09286275, -2097.06627988
5895.44215869, -2160.92636467
5911.22611518, -2236.02455604
5898.13569104, -2300.77299404
5903.59021275, -2445.34713281
5905.69353714, -2517.77358898
5888.61228559, -2582.46884782
5899.08409071, -2659.82102607
5876.82648806, -2722.94682821
5923.83253849, -2820.44837854
5923.22473252, -2895.35106129
5956.55925054, -2988.02575202
5954.81780289, -3064.30317273
5930.02350585, -3129.19258278
5954.97597439, -3222.53039465
5947.71306941, -3298.22834929
5871.69925895, -3335.58942504
5745.41808476, -3342.57087154
5609.31579714, -3341.17004775
5524.50373187, -3369.52511737
5388.56322647, -3363.22618245
5287.06208047, -3376.01889172
5162.43314744, -3371.77104771
5052.84083396, -3376.20030606
4966.61363705, -3393.07736138
4852.70510423, -3389.07275983
4742.66968277, -3385.41183317
4670.39496337, -3406.95933144
4580.74996115, -3415.62963353
4492.83421987, -3422.6224847
4376.06567981, -3405.44771888
4291.44888539, -3411.12744764
4210.28987747, -3417.9508697
4129.62241433, -3424.8275453
4056.74426274, -3435.50316355
3940.21548321, -3407.10770975
3871.93813914, -3418.37973997
3803.10716241, -3427.94047661
3720.65020079, -3424.91037597
3645.10561425, -3425.37721441
3578.60986064, -3432.96263675
3507.34638432, -3434.64733858
2893.55838871, -3563.06326791
2841.77811359, -3573.88488247
2779.64053045, -3570.60548388
2602.68039125, -3489.22108514
2548.90444216, -3492.85873529
2494.78742369, -3493.69213163
2443.78902021, -3497.88282032
2389.58494826, -3496.44230255
2385.06301035, -3569.49904561
2401.78443073, -3675.90975791
2419.25324096, -3787.24830927
2420.90768068, -3877.27313993
2430.8566591, -3983.94589608
2438.65796754, -4092.51063742
2441.155801, -4194.32561388
2460.58620048, -4329.65536158
2436.73209536, -4392.36447662
2377.09104075, -4390.84128431
2324.91171468, -4403.99653939
2280.81250824, -4430.37056038
2225.65157996, -4434.85276471
2177.23087256, -4452.1457442
2139.01122676, -4490.57980352
2074.62656718, -4475.53500788
2029.6644125, -4499.39533411
1888.92542215, -4560.26937248
1839.62809431, -4573.91172572
1794.61325812, -4598.20174131
1747.16922933, -4616.43755336
1694.3752087, -4620.1010435
1645.90160431, -4637.59085182
1597.08563128, -4651.4558459
1545.32386543, -4656.26568732
1495.46397356, -4666.21768714
1481.00812898, -4790.28296887
1400.80196287, -4704.89477681
1352.28016726, -4719.06975465
1308.39499086, -4750.09805666
1256.34525058, -4751.71775375
1205.13815347, -4755.67850375
1152.44585984, -4756.37514712
1106.11265926, -4779.68103382
1059.42139941, -4802.53581959
1010.52831851, -4816.12640174
958.28366174, -4817.61729734
910.84436141, -4839.02247869
862.01650187, -4854.05269342
811.4932438, -4859.71271942
765.58101628, -4894.48686866
712.55482721, -4890.36088834
663.76756256, -4909.33077139
614.54123383, -4926.82088896
562.52684302, -4921.95891398
513.26071212, -4941.41553013
461.76580885, -4949.50637314
412.34502107, -4972.93390099
362.8523913, -5000.85334139
312.08318844, -5016.30143467
260.56791842, -5022.24505176
208.6234055, -5040.68460377
163.72708285, -5268.45655219
109.23928507, -5258.86554103
6.46001187e-13, -5.27500000e+03
-54.62696749, -5304.71873848
-109.70119799, -5325.87031828
-164.32104453, -5317.46166835
-222.65011788, -5402.41389797
-276.06085699, -5338.86752067
-334.36558679, -5389.63817472
-388.40249273, -5365.96156375
-452.3774005, -5467.31658929
-507.53918211, -5450.42016533
-570.36280258, -5500.5078196
-632.64155659, -5544.02062233
-687.34781215, -5518.35790658
-743.60008678, -5507.02350739
-806.46038229, -5541.62626417
-1700.26388839, -5937.34609989
-1780.98882, -5764.12767234
-1852.45034073, -5783.57646575
-1921.03692636, -5791.72004914
-1999.72401918, -5827.43724523
-2078.34545863, -5859.31473421
-2150.25767264, -5866.335819
-2223.2877073, -5877.55457402
-2296.77544184, -5887.88778508
-2379.28906505, -5918.66746362
-2451.0873843, -5917.44840573
-2519.73447184, -5910.29298694
-2596.92746034, -5921.58118797
-2679.13976942, -5941.93016586
-2921.64086885, -1908.95642525
-3009.40447539, -1922.37501635
-3017.16485643, -1883.86974845
-3008.23341286, -1835.51293479
-3309.7376695, -1174.64060848
-3265.85543633, -1121.33726816
-3073.98993757, -985.17504217
-3022.82714669, -934.56516157
-3087.07803546, -919.12469391
-3022.3579769, -866.0763589
-3338.47467732, -846.00403599
-3312.16315925, -802.52053337
-3316.35430883, -767.46993317
-3342.63524003, -737.37280402
-3338.30667676, -700.44952132
-3319.95817416, -660.38074002
-3324.6167842, -625.78929217
-3326.94605498, -590.82226365
-3321.01739929, -554.55606898
-3330.50368071, -520.9474376
-3340.72407103, -486.76347565
-3313.84781985, -448.04980404
-3360.95515628, -419.22480544
-3349.1973151, -382.77714732
-3349.97735617, -347.95935556
-3292.70118205, -307.19362902
-3059.08553467, -190.31734432
-3068.87234918, -159.22155763
-3096.34917484, -128.15142391
-3329.39267224, -103.46706753
-3349.27748335, -69.57254848
-3.35600000e+03, -6.16487199e-13
-3384.82053342, 34.85622714
-3374.28427336, 69.50282396
-3373.38968622, 104.24502355
-3350.15605695, 138.07025064
-3376.48916711, 174.59067667
-3374.51234606, 209.35000906
-3377.16465704, 244.4481116
-3382.44121474, 279.87037865
-3420.20337375, 318.48686346
-3438.5633874, 356.55410642
-3403.90943586, 388.42831055
-3383.85190819, 421.48103569
-3332.75509364, 450.01387292
-3137.01603501, 589.91049835
-3202.26394052, 636.96990138
-3194.55639281, 669.70549732
-3210.92832419, 707.7310908
-3272.96036458, 1558.31814848
-3269.3181862, 1598.08622964
-3283.07955091, 1646.9115527
-3214.37454942, 1654.09227556
-3248.46776092, 1714.17216354
-3538.1839898, 2310.91541479
-3262.19185838, 2278.27682233
-3285.76583307, 2345.44492372
-3300.2185479, 2407.44315325
-3282.04241179, 2447.25021345
-3306.78325991, 2519.0937799
-3289.34927925, 2559.76665325
-3221.32655297, 2560.52343069
-3152.08867832, 2558.89369924
-3097.40924423, 2568.78025019
-3045.61067581, 2579.21240138
-2978.79987961, 2575.77081225
-2925.88084358, 2583.14348986
-2861.98669859, 2579.65911258
-2804.65069515, 2581.72006193
-2759.69911259, 2593.34336485
-2647.40778876, 2647.40778876
-2602.51167934, 2656.66971204
-2577.09446374, 2685.49215694
-2495.88017972, 2655.05520253
-2440.63507974, 2650.45456621
-2396.67468799, 2658.04278369
-2358.58560205, 2670.58850402
-2312.64284519, 2673.55719419
-2265.59820712, 2674.33912657
-2214.9537508, 2669.82038381
-2166.07115983, 2667.25171863
-2126.66574992, 2674.54328589
-2079.96968754, 2671.83871125
-2038.40586557, 2674.82158792
-2002.38378826, 2684.44783233
-1960.0155574, 2685.88235311
-1919.46956917, 2688.01889373
-1879.66148684, 2690.42686109
-1833.80190835, 2683.22018495
-1802.26983592, 2697.28742231
-1761.27211728, 2695.61134604
-1722.65473322, 2696.75001996
-1688.43878495, 2704.1668716
-1649.56568231, 2703.48331967
-1612.46276191, 2706.00514439
-1572.44035317, 2701.72303091
-1537.61932849, 2705.59989663
-1503.37104589, 2709.92186204
-1465.86487372, 2707.670802
-1432.7618579, 2714.02919265
-1393.29586094, 2706.4113959
-1364.45628904, 2718.82751113
-1326.72260596, 2712.97016697
-1298.71610471, 2726.48793861
-1263.78528976, 2726.32935307
-1233.58858134, 2734.64060015
-1195.72096082, 2725.22061196
-1135.80442726, 2742.07445249
-1102.28425772, 2740.63595086
-1069.64185684, 2740.66238309
-1040.6559024, 2749.66094143
-1007.81065553, 2748.02596105
-975.63401337, 2749.00477845
-944.67712513, 2751.33897026
-912.20096092, 2748.58243589
-882.93413786, 2754.97301406
-852.74640375, 2758.18646413
-823.24580625, 2765.04816278
-794.45426815, 2772.41743174
-763.73939389, 2772.73838258
-733.35799063, 2773.68834904
-700.0904479, 2762.67503785
-669.94451803, 2764.99536035
-640.76073738, 2768.82460214
-610.27670283, 2766.48718522
-582.16780796, 2774.58206643
-552.88597259, 2779.54548466
-524.04997479, 2784.10858695
-493.9546892, 2781.48049877
-465.45157438, 2787.40575301
-436.26063968, 2789.08688539
-406.30908601, 2788.55463038
-377.70705669, 2793.58164
-349.16834253, 2799.30749804
-320.21108141, 2801.76102895
-290.8270742, 2799.9365373
-261.58368894, 2803.82416954
-232.45020927, 2803.37937144
-204.00496432, 2811.60860977
-174.73181303, 2808.56988404
-145.90559918, 2812.21755135
-116.32460647, 2810.59381376
-87.50126966, 2815.64069579
-58.60708412, 2821.3913606

Вот как это выглядит при использовании Matplotlib.

enter image description here

Теперь, чтобы преобразовать точку в изображение, я попытался нарисовать треугольник между двумя точками относительно фиксированного центра и сделать этот шаг для каждой точки, и вот как это выглядит: enter image description here

Вот код для рисования изображения выше.

for row in finalData:     ## scan data was stored in finalData variable.
    #print("row ",row)
    r = row[0]
    theta = row[1]

    #print(f'DEBUG: theta: {theta}, range: {r}')
    if abs(r)> maxRange:
        maxRange = abs(r)
    if abs(theta) > maxRange:
        maxRange =abs(theta)
    Ranges.append(r)
    Thetas.append(theta)

print("maxrange : ",maxRange)
# Plot what we found - i.e. a triangle centred on lidar stretching out to 2 pts on  walls
# Work out size of canvs
maxRange = int(maxRange+1)
h = w = 2 * maxRange
cx = cy = maxRange
# Make blank canvas
im = np.zeros((h,w), np.uint8)
# Centre point, in every triangle
pt1 = (cy, cx)
# Join up last point with first to complete the circle
Ranges.append(Ranges[0])
Thetas.append(Thetas[0])
for i in range(1,len(Thetas)):
    r = Ranges[i-1]
    theta = Thetas[i-1]
    x = r
    y = theta
    pt2 = (cx + x, cy - y)
    r = Ranges[i]
    theta = Thetas[i]
    x = r
    y = theta
    pt3 = (cx + x, cy - y)
    triangleCnt = np.array( [pt1, pt2, pt3] )
    cv2.drawContours(im, [triangleCnt.astype(int)], 0, 255, -1)
cv2.imwrite('result.png', im)

Теперь я буду очень рад, если вы, ребята, поможете мне или подскажете способ определения угла по изображению или из облака точек, которые хранятся в переменных finalData.

1 Ответ

0 голосов
/ 10 февраля 2020

Простым решением может быть вычисление индекса "кривизны" в каждой точке лидара с использованием нескольких точек до и нескольких точек после. Основываясь на этой кривизне, вы сможете определить, какие точки являются углами. Конечно, размер окрестности, которую вы рассматриваете вокруг каждой точки, должен быть правильно настроен относительно шума.

...