Мне любопытно, что является наиболее эффективным методом, когда я обрабатываю изображение по блоку.Эффективно обрабатывать блок обработки изображений?
В этот момент я применил некоторые техники векторизации, такие как я прочитал одну строку пикселей (8 пикселей в строке, каждая 8-битовая глубина) из блока 8x8. Но поскольку современные процессоры поддерживают 128/256-битную векторную работу, я думаю, что загрузка двух строк пикселей из блока изображения может улучшить скорость кода.
Но проблема заключается в том, что изображение (например, изображение 16x16, содержит 4 блока 8x8) в памяти непрерывно сохраняется от первого пикселя до последнего пикселя. Загрузка одной 8-пиксельной строки легко, но как я должен управлять указателем или выровнять данные изображения, чтобы я мог загружать 2 строки вместе?
Я думаю, что эта цифра может проиллюстрировать мою проблему ясно: pixels' address in a image
Таким образом, когда мы загружаем 8 пикселей (подряд) вместе, мы просто загружать данные 8 байт из исходного положения указателя на 1 инструкции. Когда мы загружаем вторую строку, мы просто добавляем 9 к указателю и загружаем вторую строку.
Итак, есть вопросы, есть ли способ, который мы могли бы загрузить эти две строки (16 пикселей) вместе с исходной позицией указателя?
Спасибо!
Когда вы говорите * «нагрузка» *, вы имеете в виду чтение из файла? Или поместить в регистры процессора из ОЗУ? –
Я имею в виду помещать данные в регистр CPU из ОЗУ – drinking