import numpy as np import seaborn as sn import matplotlib.pyplot as plt from PenguTrack.DataFileExtended import DataFileExtended file_path = "/home/user/Desktop/Birdflight.cdb" db = DataFileExtended(file_path) PT_Track_Type = db.getMarkerType(name="PT_Track_Marker") PT_Detection_Type = db.getMarkerType(name="PT_Detection_Marker") PT_Prediction_Type = db.getMarkerType(name="PT_Prediction_Marker") GT_Type = db.getMarkerType(name="GT") Tracks = db.getTracks(type=PT_Track_Type) mean_phi = [] phies = [] std_phi = [] mean_len = [] lens = [] for track in Tracks: if track.markers.count() < 3: continue x = np.asarray([[m.x, m.y] for m in track.markers]) del_x = x[1:] - x[:-1] del_x_norm = np.linalg.norm(del_x, axis=1) try: # phi = np.tensordot(del_x[1:],del_x[:-1].T, axes=1)/del_x_norm[1:]/del_x_norm[:-1] phi = np.diag(np.tensordot(del_x[1:], del_x[:-1].T, axes=1)) / del_x_norm[1:] / del_x_norm[:-1]
print("--------------------------") print(VB.__dict__) print(AD.__dict__) print([f.__dict__ for f in AD.Filters]) print(MultiKal.__dict__) print(MultiKal.Model.__dict__) print("--------------------------") print("--------------------------") # Set Mask Type if db.getMaskType(name="PT_Mask_Type"): PT_Mask_Type = db.getMaskType(name="PT_Mask_Type") else: PT_Mask_Type = db.setMaskType(name="PT_Mask_Type", color="#FF6633") # Define ClickPoints Marker if db.getMarkerType(name="PT_Detection_Marker"): PT_Detection_Type = db.getMarkerType(name="PT_Detection_Marker") else: PT_Detection_Type = db.setMarkerType(name="PT_Detection_Marker", color="#FFFF00", style='{"scale":0.8}') if db.getMarkerType(name="PT_Track_Marker"): PT_Track_Type = db.getMarkerType(name="PT_Track_Marker") else: PT_Track_Type = db.setMarkerType(name="PT_Track_Marker", color="#00FF00", mode=db.TYPE_Track) if db.getMarkerType(name="PT_Prediction_Marker"): PT_Prediction_Type = db.getMarkerType(name= "PT_Prediction_Marker") else: PT_Prediction_Type = db.setMarkerType(name="PT_Prediction_Marker", color="#0000FF") if db.getMarkerType(name="PT_Stitch_Marker"): PT_Stitch_Type = db.getMarkerType(name="PT_Stitch_Marker") else: PT_Stitch_Type = db.setMarkerType(name="PT_Stitch_Marker", color="#FF8800", mode=db.TYPE_Track)
# Initialize segmentation with init_image and start updating the first 10 frames. init_buffer = [] for i in range(10): while True: img, meta = getImage() if img is not None: print("Got img from cam") init_buffer.append(img) print(init_buffer[-1].shape) print(init_buffer[-1].dtype) break init = np.array(np.median(init_buffer, axis=0)) # Load horizon-markers horizont_type = db_start.getMarkerType(name="Horizon") try: horizon_markers = np.array( [[m.x, m.y] for m in db_start.getMarkers(type=horizont_type)]).T except ValueError: raise ValueError("No markers with name 'Horizon'!") # Load penguin-markers penguin_type = db_start.getMarkerType(name="Penguin_Size") try: penguin_markers = np.array([[m.x1, m.y1, m.x2, m.y2] for m in db_start.getLines(type="Penguin_Size") ]).T except ValueError: raise ValueError("No markers with name 'Horizon'!")
if __name__ == '__main__': import my_plot import numpy as np import clickpoints import matplotlib.pyplot as plt from PenguTrack.DataFileExtended import DataFileExtended # Load Data from Databases db = DataFileExtended( "/home/birdflight/Desktop/PT_Test_full_n3_r7_A20_filtered.cdb") db2 = DataFileExtended("/home/birdflight/Desktop/252_GT_Detections.cdb") LogType = db.getMarkerType(name="PT_Detection_Marker") ImgType = db.getMarkerType(name="PT_Track_Marker") # Positions_Log = np.asarray([[m.x, m.y, m.image.sort_index] for m in db.getMarkers(type=LogType) if not m.text.count("inf")]) Positions_Img = np.asarray([[m.x, m.y, m.image.sort_index] for m in db.getMarkers(type=ImgType) if m.track.markers.count() > 3]) # Do Correction for Position Data from CameraTransform import CameraTransform CT = CameraTransform(14, [17, 9], [4608, 2592], observer_height=31., angel_to_horizon=(np.pi / 2. - 0.24) * 180 / np.pi) orth_x, orth_y, orth_z = CT.transCamToWorld(Positions_Img.T[:2], Z=0.525) # Calculate Histogramms cx = cy = 2 times = np.asarray(sorted([i.timestamp for i in db.getImages()])) scale = 1. / (cx * cy) / ((times[-1] - times[0]).seconds / 3600.) hist, binx, biny = np.histogram2d(orth_x, orth_y,
# # ax.imshow(np.vstack((mask*2**8, db.getImage(frame=i).data))) # ax.imshow(np.vstack((mask[:,16000:18000]*2**8, db.getImage(frame=i).data[:,16000:18000]))) # plt.show() # Initialize Detector AD = AreaDetector(object_area, object_number, upper_limit=10, lower_limit=1) print('Initialized') # SetMaskType if db.getMaskType(name="PT_Mask_Type"): PT_Mask_Type = db.getMaskType(name="PT_Mask_Type") else: PT_Mask_Type = db.setMaskType(name="PT_Mask_Type", color="#FF6633") # Define ClickPoints Marker if db.getMarkerType(name="PT_Detection_Marker"): marker_type = db.getMarkerType(name="PT_Detection_Marker") else: marker_type = db.setMarkerType(name="PT_Detection_Marker", color="#FFFF00", style='{"scale":0.8}') if db.getMarkerType(name="PT_Track_Marker"): marker_type2 = db.getMarkerType(name="PT_Track_Marker") else: marker_type2 = db.setMarkerType(name="PT_Track_Marker", color="#00FF00", mode=db.TYPE_Track) if db.getMarkerType(name="PT_Prediction_Marker"): marker_type3 = db.getMarkerType(name= "PT_Prediction_Marker") else: marker_type3 = db.setMarkerType(name="PT_Prediction_Marker", color="#0000FF") if db.getMarkerType(name="PT_Stitch_Marker"): marker_type4 = db.getMarkerType(name="PT_Stitch_Marker") else: marker_type4 = db.setMarkerType(name="PT_Stitch_Marker", color="#FF8800", mode=db.TYPE_Track)
np.diag(Q), np.diag(R), meas_dist=Meas_Dist, state_dist=State_Dist) # Init_Background from Image_Median N = db.getImages().count() init = np.asarray(np.median([ np.asarray(rgb2gray(db.getImage(frame=j).data), dtype=np.int) for j in np.random.randint(0, N, 10) ], axis=0), dtype=np.int) # Load horizon-markers horizont_type = db.getMarkerType(name="Horizon") try: horizon_markers = np.asarray([[m.x, m.y] for m in db.getMarkers(type=horizont_type) ]).T except ValueError: raise ValueError("No markers with name 'Horizon'!") # Load penguin-markers penguin_type = db.getMarkerType(name="Penguin_Size") try: penguin_markers = np.asarray([[m.x1, m.y1, m.x2, m.y2] for m in db.getLines(type="Penguin_Size")]).T except ValueError: raise ValueError("No markers with name 'Horizon'!")