Commit aa0fc51b authored by jay's avatar jay
Browse files

Updates to control and assoc. tests

parent a0fd72ce
Loading
Loading
Loading
Loading
+27 −2
Original line number Diff line number Diff line
@@ -5,9 +5,35 @@ import pandas as pd
import geopandas as gpd
from shapely.geometry import Point

from autocnet.matcher import subpixel as sp

from plio.io.io_controlnetwork import to_isis, write_filelist

print('reload')
def subpixel_match(cg, cn,threshold=0.9, template_size=19, search_size=53, max_x_shift=1.0,max_y_shift=1.0, **kwargs):

    def subpixel_group(group, threshold=0.9, template_size=19, search_size=53, max_x_shift=1.0,max_y_shift=1.0, **kwargs):
        offs = []
        for i,(idx, r) in enumerate(group.iterrows()):
            if i == 0:
                x = r.x
                y = r.y
                offs.append([0,0, np.inf])
                continue

            e = r.edge
            s_img = cg.edge[e[0]][e[1]].source.geodata
            s_template = sp.clip_roi(s_img, (x, y), template_size)
            #s_template = cv2.Canny(bytescale(s_template), 50,100) # Canny - bad idea
            d_img = cg.edge[e[0]][e[1]].destination.geodata
            d_search = sp.clip_roi(d_img, (r.x, r.y), search_size)
            #d_search = cv2.Canny(bytescale(d_search), 50,100)

            xoff,yoff,corr = sp.subpixel_offset(s_template, d_search, **kwargs)
            offs.append([xoff,yoff,corr])
        df = pd.DataFrame(offs, columns=['x_off', 'y_off', 'corr'], index=group.index)
        return df
    gps = cn.data.groupby('point_id').apply(subpixel_group,threshold=0.9,max_x_shift=5, max_y_shift=5,template_size=template_size, search_size=search_size,**kwargs)
    cn.data[['x_off', 'y_off', 'corr']] = gps.reset_index()[['x_off', 'y_off', 'corr']]

def identify_potential_overlaps(cg, cn, overlap=True):
    """
@@ -179,7 +205,6 @@ class ControlNetwork(object):
            if g.image_index.duplicated().any():
                return True
            else: return False

        return self.data.groupby('point_id').apply(func)

    def clean_singles(self):
+4 −4
Original line number Diff line number Diff line
@@ -12,7 +12,7 @@ from .. import control
def test_fromcandidategraph(candidategraph, controlnetwork_data):#, controlnetwork):
    matches = candidategraph.get_matches()
    cn = control.ControlNetwork.from_candidategraph(matches)
    assert cn.data.equals(controlnetwork_data)
    assert cn.data[['point_id', 'image_index']].equals(controlnetwork_data[['point_id', 'image_index']])

def test_add_measure():
    cn = control.ControlNetwork()
@@ -36,11 +36,11 @@ def test_add_measure():
    assert cn.measure_to_point[key] == 0

def test_validate_points(controlnetwork):
    assert controlnetwork.validate_points().any()
    assert not controlnetwork.validate_points().any()

def test_bad_validate_points(bad_controlnetwork):
    assert bad_controlnetwork.validate_points().iloc[0] == False
    assert bad_controlnetwork.validate_points().iloc[1:].all()
    assert bad_controlnetwork.validate_points().iloc[0] == True
    assert not bad_controlnetwork.validate_points().iloc[1:].all()

def test_identify_potential_overlaps(controlnetwork, candidategraph):
    res = control.identify_potential_overlaps(candidategraph,