mirror of
https://github.com/iperov/DeepFaceLab.git
synced 2025-07-06 04:52:13 -07:00
_
This commit is contained in:
parent
79b8b8a7a7
commit
a9b23e9851
1 changed files with 20 additions and 15 deletions
|
@ -1,20 +1,25 @@
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import numpy.linalg as npla
|
import numpy.linalg as npla
|
||||||
|
|
||||||
def dist_to_edges(pts, p):
|
def dist_to_edges(pts, pt, is_closed=False):
|
||||||
a = pts[:-1,:]
|
"""
|
||||||
b = pts[1:,:]
|
returns array of dist from pt to edge and projection pt to edges
|
||||||
edges = np.concatenate( ( pts[:-1,None,:], pts[1:,None,:] ), axis=-2)
|
"""
|
||||||
|
if is_closed:
|
||||||
pa = p-a
|
a = pts
|
||||||
ba = b-a
|
b = np.concatenate( (pts[1:,:], pts[0:1,:]), axis=0 )
|
||||||
|
else:
|
||||||
h = np.clip( np.einsum('ij,ij->i', pa, ba) / np.einsum('ij,ij->i', ba, ba), 0, 1 )
|
a = pts[:-1,:]
|
||||||
|
b = pts[1:,:]
|
||||||
|
|
||||||
return npla.norm ( pa - ba*h[...,None], axis=1 )
|
pa = pt-a
|
||||||
|
ba = b-a
|
||||||
|
|
||||||
|
div = np.einsum('ij,ij->i', ba, ba)
|
||||||
|
div[div==0]=1
|
||||||
|
h = np.clip( np.einsum('ij,ij->i', pa, ba) / div, 0, 1 )
|
||||||
|
|
||||||
|
x = npla.norm ( pa - ba*h[...,None], axis=1 )
|
||||||
|
|
||||||
|
return x, a+ba*h[...,None]
|
||||||
|
|
||||||
def nearest_edge_id_and_dist(pts, p):
|
|
||||||
x = dist_to_edges(pts, p)
|
|
||||||
if len(x) != 0:
|
|
||||||
return np.argmin(x), np.min(x)
|
|
||||||
return None, None
|
|
Loading…
Add table
Add a link
Reference in a new issue