Example #1
0
def get_image_array(time_shift, size):
    time_offset =  get_time_offset() + time_shift

    time_stamps = radar_data['time_stamp']
    scan_data = radar_data['scan_data']
    range_bins = radar_data['range_bins']

    scan_data = np.array(scan_data).astype(float)
    #optional rcs need button for this 
    '''
    for elements in range(len(scan_data)):
        for elements2 in range(int(len(scan_data[0])*0.75)):
            scan_data[elements][elements2] = scan_data[elements][elements2] * ((range_bins[elements2] - range_offset) **4.0)
    '''
    plat_pos = extract_platform_position()

    #plt.figure()
    #plt.imshow(20 * np.log10(np.abs(scan_data)),extent=[range_bins[0],range_bins[-1],(time_stamps[-1]-time_stamps[0])/1000,0],aspect = 'auto')

    #plt.figure()
    #plt.plot(plat_pos)
    plat_pos = linear_interp_nan(extract_time_stamp(),plat_pos)[1]
    refl_pos = extract_given_object()

    range_to_refl = np.sqrt((plat_pos[:,0] - refl_pos[0])**2 + (plat_pos[:,1] - refl_pos[1])**2 + (plat_pos[:,2] - refl_pos[2])**2)
    #plt.plot(range_to_refl, np.transpose(extract_time_stamp()))

    #plt.figure()
    #plt.imshow(20 * np.log10(np.abs(scan_data)),extent=[range_bins[0],range_bins[-1],(time_stamps[-1]-time_stamps[0])/1000,0],aspect = 'auto')
    #plt.colorbar()
    #plt.clim(60, 90)
    #plt.plot(range_to_refl, np.transpose(extract_time_stamp()-time_offset))

    center = extract_given_object()


    #interpolation (aligning radar data and position values)
    new_x_pos = np.interp((time_stamps-time_stamps[0])/1000,np.transpose(extract_time_stamp()-time_offset).flatten(),plat_pos[:,0])
    new_y_pos = np.interp((time_stamps-time_stamps[0])/1000,np.transpose(extract_time_stamp()-time_offset).flatten(),plat_pos[:,1])
    new_z_pos = np.interp((time_stamps-time_stamps[0])/1000,np.transpose(extract_time_stamp()-time_offset).flatten(),plat_pos[:,2])
    range_to_refl = np.sqrt((new_x_pos[:] - refl_pos[0])**2 + (new_y_pos[:] - refl_pos[1])**2 + (new_z_pos[:] - refl_pos[2])**2)
    #plt.figure()
    #plt.imshow(20 * np.log10(np.abs(scan_data)),extent=[range_bins[0]-range_offset,range_bins[-1]-range_offset,(time_stamps[-1]-time_stamps[0])/1000,0],aspect = 'auto')
    #plt.plot(range_to_refl, (time_stamps-time_stamps[0])/1000)

    interp_plat_pos = list()
    for elements in range(len(new_x_pos)):
        interp_plat_pos.append([new_x_pos[elements],new_z_pos[elements],new_y_pos[elements]])
    interp_plat_pos = np.array(interp_plat_pos).squeeze()

    x_vec = np.linspace(-meters,meters,size)
    y_vec = np.linspace(-meters,meters,size)
    scan_data_final = scan_data[eyeballing_start_time:eyeballing_end_time,:]
    interp_plat_pos_final = interp_plat_pos[eyeballing_start_time:eyeballing_end_time,:]
    x_vec_new = x_vec+center[1]
    y_vec_new = y_vec+center[2]
    sar_image = interp_approach(scan_data_final, range_bins-range_offset, interp_plat_pos_final, x_vec_new, y_vec_new)
    #plt.figure()
    #plt.imshow((np.abs(sar_image)),extent=[x_vec_new[0], x_vec_new[-1], y_vec_new[-1], y_vec_new[0]],aspect = 'auto')
    return sar_image
Example #2
0
    #value: the value you are trying to find the nearest index to
    #
    #return: index of closest value in array to value 
    def find_nearest(self,array,value):
        idx = np.searchsorted(array, value, side="left")
        if idx > 0 and (idx == len(array) or math.fabs(value - array[idx-1]) < math.fabs(value - array[idx])):
            return idx-1
        else:
            return idx

if __name__ == "__main__":

    from plotRTI import plotRTI
    from backprojection import interp_approach
    radar = RadarData()

    target = CornerReflector(.33,radar.radarWavelength,[0,5,0])
    targets = [target]
    
    scans = []
    totalRadarPos = []
    for i in np.arange(0,2,.001):
        totalRadarPos.append([0,0,i])
        radar.radarPos = [i,0,0]
        scans.append(radar.get_scan(targets))

    plotRTI(scans)

    radar_data = [np.array(scans),totalRadarPos,radar.rangebins]
    interp_approach(radar_data,radar_data,[-3,3],[0,6],.2)
Example #3
0
    def main_func(self, param4, param5, param6, param7, param8, param9):

        self.meters = param4
        self.size = param5
        self.eyeballing_start_time = param6
        self.eyeballing_end_time = param7
        self.time_offset = param8
        self.range_offset = param9

        time_stamps = self.radar_data['time_stamp']
        scan_data = self.radar_data['scan_data']
        range_bins = self.radar_data['range_bins']

        scan_data = np.array(scan_data).astype(float)
        #optional rcs need button for this
        '''
        for elements in range(len(scan_data)):
            for elements2 in range(int(len(scan_data[0])*0.75)):
                scan_data[elements][elements2] = scan_data[elements][elements2] * ((range_bins[elements2] - self.range_offset) **4.0)
        '''
        plat_pos = self.extract_platform_position()

        #plt.figure()
        #plt.imshow(20 * np.log10(np.abs(scan_data)),extent=[range_bins[0],range_bins[-1],(time_stamps[-1]-time_stamps[0])/1000,0],aspect = 'auto')

        #plt.figure()
        #plt.plot(plat_pos)
        plat_pos = self.linear_interp_nan(self.extract_time_stamp(),
                                          plat_pos)[1]
        refl_pos = self.extract_given_object()

        range_to_refl = np.sqrt((plat_pos[:, 0] - refl_pos[0])**2 +
                                (plat_pos[:, 1] - refl_pos[1])**2 +
                                (plat_pos[:, 2] - refl_pos[2])**2)
        #plt.plot(range_to_refl, np.transpose(extract_time_stamp()))

        #plt.figure()
        #plt.imshow(20 * np.log10(np.abs(scan_data)),extent=[range_bins[0],range_bins[-1],(time_stamps[-1]-time_stamps[0])/1000,0],aspect = 'auto')
        #plt.colorbar()
        #plt.clim(60, 90)
        #plt.plot(range_to_refl, np.transpose(extract_time_stamp()-time_offset))

        center = self.extract_given_object()
        print(center)

        #interpolation (aligning radar data and position values)
        new_x_pos = np.interp((time_stamps - time_stamps[0]) / 1000,
                              np.transpose(self.extract_time_stamp() -
                                           self.time_offset).flatten(),
                              plat_pos[:, 0])
        new_y_pos = np.interp((time_stamps - time_stamps[0]) / 1000,
                              np.transpose(self.extract_time_stamp() -
                                           self.time_offset).flatten(),
                              plat_pos[:, 1])
        new_z_pos = np.interp((time_stamps - time_stamps[0]) / 1000,
                              np.transpose(self.extract_time_stamp() -
                                           self.time_offset).flatten(),
                              plat_pos[:, 2])
        range_to_refl = np.sqrt((new_x_pos[:] - refl_pos[0])**2 +
                                (new_y_pos[:] - refl_pos[1])**2 +
                                (new_z_pos[:] - refl_pos[2])**2)
        #plt.figure()
        #plt.imshow(20 * np.log10(np.abs(scan_data)),extent=[range_bins[0]-range_offset,range_bins[-1]-range_offset,(time_stamps[-1]-time_stamps[0])/1000,0],aspect = 'auto')
        #plt.plot(range_to_refl, (time_stamps-time_stamps[0])/1000)

        interp_plat_pos = list()
        for elements in range(len(new_x_pos)):
            interp_plat_pos.append([
                new_x_pos[elements], new_z_pos[elements], new_y_pos[elements]
            ])
        interp_plat_pos = np.array(interp_plat_pos).squeeze()

        x_vec = np.linspace(-self.meters, self.meters, self.size)
        y_vec = np.linspace(-self.meters, self.meters, self.size)
        scan_data_final = scan_data[
            self.eyeballing_start_time:self.eyeballing_end_time, :]
        interp_plat_pos_final = interp_plat_pos[
            self.eyeballing_start_time:self.eyeballing_end_time, :]
        x_vec_new = x_vec + center[1]
        y_vec_new = y_vec + center[2]
        sar_image = interp_approach(scan_data_final,
                                    range_bins - self.range_offset,
                                    interp_plat_pos_final, x_vec_new,
                                    y_vec_new)
        f = Figure(figsize=(5, 5), dpi=100)
        ax = f.add_subplot(111)
        img = ax.imshow(
            20 * np.log10((np.abs(sar_image))),
            extent=[x_vec_new[0], x_vec_new[-1], y_vec_new[-1], y_vec_new[0]],
            aspect='auto')
        return (f, ax, img)
motion_end = 29545

#Aligns data, currently using frames given in function definition
aligned_data = align_data(radar_data, motion_data, radar_start, motion_start,
                          motion_end, 100, 3500)

WrongRadarPosition = aligned_data[1]  #Actual position of radar in 3D space
PulseData = aligned_data[0]  #Data of all pulses in file
RangeBins = radar_data[
    2]  #Distance in meters between the sampling rate of PulseData

#Plots aligned graph
AlignedGraph(aligned_data, radar_data)

#Calculates and plots BackProjected Image
IntensityList = BackProjection(aligned_data, radar_data, [-4, 0], [4, 4], 0.01)

#IntensityList = read_intensity('../Raw_Data/intensity2.csv')
#Deconvolutes image and plots images
deconvolute(IntensityList, IterationNumber=3, PercentageMin=1 / 5.5)
'''
#Currently unused code

#Calculates backprojected image using Ramu's algorithm
interp_approach(aligned_data,radar_data,[-3,3],[-3,3],.1)

#Reads in an intensity list and saves it as an intensity list
IntensityList = read_intensity('../Raw_Data/intensity2.csv')

'''
Example #5
0
plt.figure()
plt.imshow(20 * np.log10(np.abs(scan_data)),extent=[range_bins[0],range_bins[-1],(time_stamps[-1]-time_stamps[0])/1000,0],aspect = 'auto')
plt.colorbar()
plt.clim(60, 90)
plt.plot(range_to_refl, np.transpose(extract_time_stamp()-time_offset))

center = extract_given_object()

new_x_pos = np.interp((time_stamps-time_stamps[0])/1000,np.transpose(extract_time_stamp()-time_offset).flatten(),plat_pos[:,0])
new_y_pos = np.interp((time_stamps-time_stamps[0])/1000,np.transpose(extract_time_stamp()-time_offset).flatten(),plat_pos[:,1])
new_z_pos = np.interp((time_stamps-time_stamps[0])/1000,np.transpose(extract_time_stamp()-time_offset).flatten(),plat_pos[:,2])
range_to_refl = np.sqrt((new_x_pos[:] - refl_pos[0])**2 + (new_y_pos[:] - refl_pos[1])**2 + (new_z_pos[:] - refl_pos[2])**2)
plt.figure()
plt.imshow(20 * np.log10(np.abs(scan_data)),extent=[range_bins[0]-range_offset,range_bins[-1]-range_offset,(time_stamps[-1]-time_stamps[0])/1000,0],aspect = 'auto')
plt.plot(range_to_refl, (time_stamps-time_stamps[0])/1000)

interp_plat_pos = list()
for elements in range(len(new_x_pos)):
    interp_plat_pos.append([new_x_pos[elements],new_z_pos[elements],new_y_pos[elements]])
interp_plat_pos = np.array(interp_plat_pos).squeeze()

x_vec = np.linspace(-meters,meters,size)
y_vec = np.linspace(-meters,meters,size)
scan_data_final = scan_data[eyeballing_start_time:eyeballing_end_time,:]
interp_plat_pos_final = interp_plat_pos[eyeballing_start_time:eyeballing_end_time,:]
x_vec_new = x_vec+center[1]
y_vec_new = y_vec+center[2]
sar_image = interp_approach(scan_data_final, range_bins-range_offset, interp_plat_pos_final, x_vec_new, y_vec_new)
plt.figure()
plt.imshow((np.abs(sar_image)),extent=[x_vec_new[0], x_vec_new[-1], y_vec_new[-1], y_vec_new[0]],aspect = 'auto')