Numpy 基于查找表的快速图像处理

Numpy 基于查找表的快速图像处理,numpy,array-indexing,Numpy,Array Indexing,我有来自视频的图像和带有索引的查找表。目标是使用查找表中的索引从每个帧生成一个新图像。我的代码使用笔记本电脑工作,但有点慢。我的目标是让它在TX2中工作。下面是我的代码,不知道为什么它很慢 cap1 = cv2.VideoCapture(2) with open('lookup_table.pkl', 'rb') as f: lut_idx = pickle.load(f) channels = 3 # Colored images dim = 4

我有来自视频的图像和带有索引的查找表。目标是使用查找表中的索引从每个帧生成一个新图像。我的代码使用笔记本电脑工作,但有点慢。我的目标是让它在TX2中工作。下面是我的代码,不知道为什么它很慢

    cap1 = cv2.VideoCapture(2)
    with open('lookup_table.pkl', 'rb') as f:
        lut_idx = pickle.load(f)
    channels = 3 # Colored images
    dim = 480 # Square image 480 x480
    while (cap1.isOpened()):
        ret1, left = cap1.read()
        if ret1 == True:
            newImg = np.reshape(np.reshape(together, (dim * dim , channels))[lut_idx],
                                     (dim, dim, channels))  
            cv2.imshow('newImage', newImg)  # Show image

        if cv2.waitKey(1) & 0xFF == ord('q'):
            break

    cap1.release()
    cv2.destroyAllWindows()
我能做些什么使它更快?我应该研究并行处理吗? 欢迎任何帮助。
谢谢

所以,我正在使用预定义的查找表进行一些图像处理。该表具有从图像中获取像素的位置的索引值。在TX2中执行此操作很困难,因为TX2的CPU很弱。更快的方法是使用GPU,因为TX2有一个巨大的GPU。CUPY或Numba可以用来解决速度问题。

所以,我使用预定义的查找表进行了一些图像处理。该表具有从图像中获取像素的位置的索引值。在TX2中执行此操作很困难,因为TX2的CPU很弱。加快速度的方法是使用GPU,因为TX2有一个巨大的GPU。CUPY或Numba可以用来解决速度问题。

首先,您应该进行基准测试,看看需要花费多少时间。无需处理即可运行视频读取代码并计时。然后在静态帧上运行处理,而不读取视频。然后,您将更好地了解您的最大可能速度是多少以及应该优化什么。看起来读取图像数据和pickle表是最大的一个。但是,有没有办法使索引部分更快?请问,获取图像和查找的时间是多少?您到底想实现什么?用lut_idx置换像素?可以提供一些具有示例性输入和预期输出的屏幕截图吗?所以我有两个鱼眼摄像头输入,FOV为235度。我正试着把它脱蜡。在浪费了好几个月之后,我找到了一本大师的作品,他们用数学函数来进行脱蜡。它把工作做得相当好。唯一的问题是,它是为了去除图像而不是视频。所以有很多for循环。所以我决定做一个for循环和一个索引查找表。现在我可以实时脱蜡了,唯一的问题是对于两个鱼眼摄像头和TX2来说速度不够快。我需要视频来驱动我的机器人。首先,你应该进行基准测试,看看是什么花费了时间。无需处理即可运行视频读取代码并计时。然后在静态帧上运行处理,而不读取视频。然后,您将更好地了解您的最大可能速度是多少以及应该优化什么。看起来读取图像数据和pickle表是最大的一个。但是,有没有办法使索引部分更快?请问,获取图像和查找的时间是多少?您到底想实现什么?用lut_idx置换像素?可以提供一些具有示例性输入和预期输出的屏幕截图吗?所以我有两个鱼眼摄像头输入,FOV为235度。我正试着把它脱蜡。在浪费了好几个月之后,我找到了一本大师的作品,他们用数学函数来进行脱蜡。它把工作做得相当好。唯一的问题是,它是为了去除图像而不是视频。所以有很多for循环。所以我决定做一个for循环和一个索引查找表。现在我可以实时脱蜡了,唯一的问题是对于两个鱼眼摄像头和TX2来说速度不够快。我需要视频来驱动我的机器人。