Interpolate nans in a depth image by using the closest non-nan value.
(array, fill_values=1e-4)
| 27 | |
| 28 | |
| 29 | def interpolate_nans(array, fill_values=1e-4): |
| 30 | """ |
| 31 | Interpolate nans in a depth image by using the closest non-nan value. |
| 32 | """ |
| 33 | nans = np.isnan(array) |
| 34 | if not nans.any(): |
| 35 | return array |
| 36 | x = lambda z: z.nonzero()[0] |
| 37 | array[nans] = np.interp(x(nans), x(~nans), array[~nans], left=fill_values, right=fill_values) |
| 38 | assert not np.isnan(array).any(), "There are still nans in the array." |
| 39 | return array |
| 40 | |
| 41 | |
| 42 | def calculate_valid_mask(depth, dataset_name): |