获取矩阵中的方向元素

问题描述 投票:0回答:1

假设我的矩阵中有一个兴趣点,即 NxN。该点位于位置 ij 。那么,给定索引 ij,是否有一种简单的方法来获取通过 ij 并到达原点(位于矩阵中间)的线元素?

我正在使用 torch,虽然使用 torch.diag 将是第一个开始,但实际上这个函数不会在矩阵的中间传递。

def directionalK(kx,ky, indices):
    '''Function that provides the K values at a given direction dictated by the indices'''
    kx_grid,ky_grid = torch.meshgrid(kx,kx, indexing='ij')
    k_grid = torch.sqrt(kx_grid**2 + ky_grid**2) 
    k_grid[...,:len(k_grid)//2] *=-1 
    y,x = indices
    diag = x - len(k_grid)//2
python matrix signal-processing torch
1个回答
0
投票

我认为你可以使用 sklearn.draw.line 方法来解决这个问题,在该方法中你输入起始 (i,j) 和结束 (0,0) 坐标,它会计算属于可用于索引的线的索引.

工作示例:

from skimage.draw import line
import numpy as np
import matplotlib.pyplot as plt
arr = np.zeros((100, 100))
i, j = 10, 80
origin = 0, 0
rr, cc = line(*origin, i, j)
arr[rr, cc] = 1
plt.imshow(arr, cmap='gray', interpolation='nearest')

Gray plot showing the line

或者如果您希望线路继续:

arr = np.zeros((100, 100))
rr, cc = line(i, j, 2*origin[0]-i, 2*origin[1]-j)
arr[rr, cc] = 2
plt.imshow(arr, cmap='gray', interpolation='nearest')

Longer line

© www.soinside.com 2019 - 2024. All rights reserved.