улучшить производительность кода с помощью параллельной обработки - PullRequest
0 голосов
/ 10 декабря 2018

Я пытаюсь извлечь изображения RGB и IR из изображения в формате RGGB.Один из компонентов G содержит компонент IR.

Для выполнения этой задачи в настоящее время я использую следующую функцию, которая включает в себя два вложенных цикла for.Чтобы мое приложение работало лучше, мне нужно уменьшить время выполнения этой функции.Эта часть кажется основным узким местом, учитывая производительность в реальном времени.

Поскольку в каждом цикле цикла используется разная часть изображения и отсутствует одновременный доступ к одному и тому же пикселю, я думаю, что эта задачаможет выполняться параллельно.Но, к сожалению, у меня недостаточно опыта для параллельной обработки в Python, и я не смог решить эту проблему, посмотрев на другие темы.

Может ли кто-нибудь помочь мне преобразовать следующую функцию в параллельную форму?

Функция получает изображение с размером mxn и возвращает два изображения с одним размером mxn и одним (m / 2) x (n / 2) размером.

def ConvertRGIR2RGGB(BayerRGIR):

    rowSize, colSize = BayerRGIR.shape

    halfRowSize = int(rowSize/2);
    halfColSize = int(colSize/2);

   #Result image after replacing the IR pixel with the G data
   BayerRGGB = BayerRGIR.copy();

   #IR data will be half the size of Bayer Image
   IRimage = np.zeros( (halfRowSize, halfColSize), dtype = 'uint8')

   #copying the IR data and replacing the IR data with G
   for row in range(0, rowSize, 2):
       for col in range(0, colSize, 2):

           #Set the IR Data with Nearby Green 
           BayerRGGB[row + 1, col] = BayerRGIR[row, col + 1]

           #Set the IR Data 
           IRimage[int(row / 2), int(col / 2)] = BayerRGIR[row + 1, col]

   return BayerRGGB, IRimage
...