Beispiel #1
0
def grid_difference_filter_based(fn_ref, res_ref, data_mms, nonvalue,
                                 raster_size, threshold_height_diff):

    d_mms = rasterize(data_mms, res_ref, dim=2)

    # read reference
    data_ref, d_ref = read_ascii_xyz(fn_ref,
                                     delimiter=' ',
                                     skiprows=7,
                                     dtype=np.float,
                                     e=res_ref,
                                     dim=2)

    # calculate the difference
    difference = nonvalue * np.ones((raster_size, raster_size))

    reduce_list = []

    for key, value in d_mms.iteritems():
        m, n = np.int0(key.split('+'))
        z_mms = data_mms[value, 2]
        mean_mms = np.mean(z_mms)

        mean_ref = data_ref[d_ref[key], 2]
        delta = mean_mms - mean_ref

        if delta > threshold_height_diff:
            reduce_list.extend(value)
        else:
            difference[m, n] = mean_mms - mean_ref

    return difference, reduce_list
Beispiel #2
0
def curbdetection(fn):

    t = time.time()

    [fx, fy] = fn[:-4].split('_')
    x0, y0 = tool.coord(fx, fy, r, x_offset, y_offset)
    X0 = [x0, y0, 0]

    data, d = tool.read_ascii_xyz(inputdir + fn,
                                  delimiter=' ',
                                  skiprows=7,
                                  dtype=np.float,
                                  e=eps,
                                  dim=3)

    ##    data,d = tool.iter_loadraster(inputdir+'\\'+fn, delimiter=' ', skiprows=9, dtype=np.float, args = args)

    #    data,d = tool.read_bin_xyz(inputdir+'\\'+fn, delimiter=' ', skiprows=7, dtype=np.float, args = args)

    if len(d) > 0:
        print 'Number of rasters: ', len(d), ',Loading time: ', time.time() - t

        # Neighbourhood mask
        m = tool.gen_mat(*c)
        result = Curb.curb(d, data, m, threshold, 6)
        #        result = Curb.curb_single_core(d,data,m,threshold)

        result = np.array(result)
        list_points = list(flatten(result[:, 0]))
        feature = np.array(list(flatten(result[:, 1]))).reshape(-1, 3)
        intensity = np.array(list(flatten(result[:, 2])))

        featurePoint = np.hstack((feature, intensity[:, None]))
        featurePoint = tool.unique(featurePoint)

        ##        tool.write_xyzi('test.ply', featurePoint[:,0:3] + X0, featurePoint[:,3])
        filtered = filterNeigh(outputdir + 'curb_' + fn, featurePoint,
                               intensity, X0)

        print time.time() - t
        return filtered

    else:
        print 'No proper data'
        return 0
Beispiel #3
0
def grid_difference(fn_ref, res_ref, data_mms, nonvalue, raster_size):

    d_mms = rasterize(data_mms, res_ref, dim=2)

    # read reference
    data_ref, d_ref = read_ascii_xyz(fn_ref,
                                     delimiter=' ',
                                     skiprows=7,
                                     dtype=np.float,
                                     e=res_ref,
                                     dim=2)

    # calculate the difference
    difference = nonvalue * np.ones((raster_size, raster_size))

    for key, value in d_mms.iteritems():
        m, n = np.int0(key.split('+'))
        z_mms = data_mms[value, 2]
        mean_mms = np.mean(z_mms)

        mean_ref = data_ref[d_ref[key], 2]
        difference[m, n] = mean_mms - mean_ref

    return difference
Beispiel #4
0
    #    kn = "00000000_ffffff40"
    #    inputdir = "..\\pydtm\\testData\\" + kn
    outputdir = "..\\pydtm\\testData\\Curb\\"
    #    refdir = "..\\pydtm\\testData\\REF_"+kn+".ply"
    #    gfdir = "..\\pydtm\\testData\\GF_"+kn+".ply"
    #    directory = [ x for x in os.listdir(inputdir) if x[-4:] == ".ply" ]
    #    gf, _ = tool.read_bin_xyz_return_list(gfdir, delimiter=' ', skiprows=7, dtype=np.float, args = [0,200,0.1])

    fn = "0000003e_fffffee1.ply"
    inputdir = "..\\pydtm\\"
    gfdir = "..\\pydtm\\"

    gf, _ = tool.read_ascii_xyz(gfdir + fn,
                                delimiter=' ',
                                skiprows=7,
                                dtype=np.float,
                                e=eps,
                                dim=3)

    height_min = min(np.array(gf)[:, 2]) + global_offset - height_range
    height_max = max(np.array(gf)[:, 2]) + global_offset + height_range
    args = [height_min, height_max, eps]

    #ref,_ = tool.read_ascii_xyz(refdir, delimiter=' ', skiprows=7, dtype=np.float, args = args)

    t = time.time()

    [fx, fy] = fn[:-4].split('_')
    x0, y0 = tool.coord(fx, fy, r, x_offset, y_offset)
    X0 = [x0, y0, 0]